Skip to content

数据字典与状态字 ​

协议总览 ​

各协议对应的接口和选用建议见选择输出,各型号提供哪些接口见适用产品。下面的数据类型、字节序和数据字典对所有协议通用。

CANopen 为定制固件,如需使用请联系我司,要点见附录。

数据类型与比例因子 ​

数据类型

记号含义字节
u8 / u16 / u32 / u64无符号整型1 / 2 / 4 / 8
i8 / i16 / i32有符号整型(二进制补码)1 / 2 / 4
floatIEEE-754 单精度浮点4

字节序

协议字节序
HI91 / HI83、J1939、CANFD83小端(低字节在前)
Modbus RTU大端(每个寄存器 2 字节,高字节在前;32 位量高字在前)

位编号:所有位字段(MAIN_STATUS、HI83 位图等)以 bit0 为最低位。

比例因子:整型协议(Modbus、J1939)用比例因子还原物理量,物理值 = 原始值 × 比例因子。例如 Modbus 加速度原始值 1000,比例因子 0.00048828,物理值 = 0.488 G。浮点协议(HI91、HI83、CANFD83)已是工程单位。同一物理量在不同协议中的类型、比例因子和单位不同,解码前先对照下面的数据字典。

数据字典 ​

下表按物理量列出各协议的类型、比例因子和单位。括号里是 HI83 位号、Modbus 寄存器地址和 J1939 PGN。

物理量HI91HI83(位号)Modbus(寄存器)J1939(PGN)
加速度 XYZfloat,Gfloat,m/s²(bit0)i16 × 0.00048828 → G(0x0034–0x0036)i16 × 0.00048828 → G(0xFF34)
角速度 XYZfloat,deg/sfloat,rad/s(bit1)i16 × 0.061035 → deg/s(0x0037–0x0039)i16 × 0.061035 → deg/s(0xFF37)
磁场 XYZfloat,μTfloat,μT(bit2)i16 × 0.030517 → μT(0x003A–0x003C)i16 × 0.030517 → μT(0xFF3A)
横滚 / 俯仰float,degfloat,deg(bit3)i32 × 0.001 → deg(0x003D–0x0040)i32 × 0.001 → deg(0xFF3D)
航向 yawfloat,deg,±180°float,deg,±180°(bit3)i32 × 0.001 → deg,±180°(0x0041–0x0042)0xFF41 前 4 字节 i32 × 0.001 → deg,罗盘航向 0–360°;后 4 字节 i32 × 0.001 → deg,±180°
四元数 WXYZfloatfloat(bit4)i16 × 0.0001(0x0046–0x0049)i16 × 0.0001(0xFF46)
温度i8,°C(整数)float,°C(bit8)i16 × 0.01 → °C(0x0043)i16 × 0.01 → °C(0xFF43,以型号为准)
气压float,Pafloat,Pa(bit7)i32 × 0.01 → Pa(0x0044–0x0045)—
系统时间u32,msu64,μs,开机累计(bit5)i32,ms,开机累计(0x004C–0x004D)—
UTC 日期时间—8 字节(bit6)—年月日时分秒毫秒(0xFF2F)
倾角 X / Y—float,deg(bit9,见下)i16 × 0.011 → deg(0x004A–0x004B)i32 × 0.001 → deg(0xFF4A)
MRU 位移—float,m(bit10)i16 × 0.01 → m(0x004E–0x0050)—
MRU 频率—float,Hz(bit11)i16 × 0.01 → Hz(0x0051–0x0053)—
姿态 1σ(att_std)—float × 3,deg(bit21,见下)——
状态字 MAIN_STATUSu16u16u16(0x0009)—
  • 整型输出(Modbus、J1939)固定按 ±16 G、±2000 deg/s、±1000 μT 换算,超出后停在满量程,不再增大,见量程与带宽。
  • ACC_SAT / GYR_SAT 按传感器当前量程判断,可能大于整型输出的量程。整型读数接近满量程时,直接视为不可信,不必等状态位。需要精确数据或完整量程时,用 HI91 / HI83 / CANFD83 的浮点输出。
  • 无气压计或无磁力计的型号,对应字段读数无意义,忽略即可。
  • 需要 0.01 °C 的温度分辨率时,用 HI83 或 Modbus 的温度字段。HI91 的温度是整数 °C。
  • HI83 只输出位图中选中的字段,帧长随字段变化。解析时按每帧的 data_bitmap 逐段累加偏移,不写死帧长和各字段位宽,见 HI83。UTC 段何时有效,看 UTC_UNSYNC。
  • HI83 bit21 att_std 是姿态的 1σ 不确定度,三个 float,单位 deg。它是导航轴上的旋转误差,不是欧拉角误差;三个值不按 roll / pitch / yaw 顺序排列,轴序见 HI83 位定义。
  • 航向的正方向和零点见航向约定。
  • 倾角和罗盘航向始终按右-前-上计算,不受 COORD 影响;使用 MRU 输出时保持 COORD 0,见输出数据轴向。

跨协议解码易错点 ​

数值与预期相差固定倍数(如 9.8、57.3 或 100 倍)时,先核对下面几处的协议、单位和比例因子:

  • 加速度:HI91 是 G,HI83 是 m/s²,相差约 9.8 倍。CANFD83 与 HI83 一样是浮点 m/s²,不能套用 J1939 的定点比例因子,见 CANFD83。
  • 角速度:HI91 是 deg/s,HI83 是 rad/s,相差约 57.3 倍。CANFD83 同样是 rad/s。
  • 航向:J1939 PGN 0xFF41 前 4 字节是罗盘航向,后 4 字节才与其他协议的 yaw 一致。取错字段,方向和符号会相反,见航向约定。
  • 气压:Modbus 气压带 0.01 比例因子,不乘会差 100 倍。
  • 时间:HI91 的 system_time 随对时状态变化,Modbus 的 CPU 时间始终是开机累计,两者不能互换或相减,见时间与时间戳。

倾角输出 ​

倾角输出直接给出载体相对水平面的倾斜,适合平台调平和角度监测:

  • X 轴倾角是横滚,±180°;Y 轴倾角是俯仰,±90°。单轴倾角仪型号 X 轴为 0–360°。
  • 输出位置:HI83 bit9、Modbus 寄存器 0x004A / 0x004B、J1939 PGN 0xFF4A,比例因子见上表。HI83 的 bit9 含 roll、pitch、yaw 三个值,倾角取前两个。
  • 倾角输出默认不开启。HI83 用 LOG HI83 MAP 加上 bit9,见 HI83 字段选择。J1939 开启 PGN 0xFF4A 的周期,见配置协议。Modbus 寄存器 0x004A / 0x004B 随时可读,无需开启。
  • 配合工作模式 7,读数更平滑,见工作模式。
  • 零点:把载体放到基准姿态,执行 CONFIG ATT RST 2,见姿态零点与校平。

MRU 输出 ​

MRU 输出仅 MRU 型号提供,其他型号读数为 0。它估计船舶或海上平台的周期性运动,输出三轴位移和对应频率:

运动轴方向输出
Heave 垂荡垂向位移(m)、频率(Hz)
Surge 纵荡沿载体前后位移(m)、频率(Hz)
Sway 横荡沿载体左右位移(m)、频率(Hz)

输出位置:HI83 bit10(位移)和 bit11(频率),Modbus 寄存器 0x004E–0x0050(位移)和 0x0051–0x0053(频率)。

注意

MRU 输出是周期运动的估计,不能当作绝对位置或航迹。它只适用于周期性往复运动。典型海浪周期为 3–20 s,超出范围精度下降;初始化需要 5–20 个稳定的海浪周期。周期超过 30 s 的运动、单向线性运动和阶跃位移无法准确测量。

MAIN_STATUS 状态字 ​

MAIN_STATUS 是 16 位状态字,出现在 HI91、HI83、CANFD83 和 Modbus 寄存器 0x0009 中。它是一组状态位,不是错误码,非零不等于故障。按用途检查相关位:姿态应用看 ATT_CONV,9 轴航向再看 MAG_DIST,需要绝对时间看 UTC_UNSYNC。

位名称=1 的含义置位时怎么办
0–2COORD3 位数值,不是标志:0 = 右-前-上,4 = ROS。所有带状态字的输出都携带判断轴向时,连接后读一次 COORD 配置,见输出数据轴向。ROS 下它为 4,不表示异常
3WB_CONV陀螺零偏未收敛,精度较差保持静止 3–5 s。持续置位时,检查模块是否在振动或移动,见上电过程
4MAG_DIST9 轴模式下磁场异常,航向精度可能降低;上电后磁基准尚未经转动确认前也为 1。6 轴模式下为 0远离铁磁物体和电流,转动模块。反复置位则重新校准,见故障排查流程
5ACC_SAT当前或最近 2 s 内加速度计量程饱和这段时间的加速度和姿态不可信。检查冲击是否超出量程,见量程与带宽
6GYR_SAT当前或最近 2 s 内陀螺仪量程饱和同上,对象是角速度和航向
7ATT_CONV横滚、俯仰未充分收敛,精度较差;不含航向保持静止片刻再用姿态。上电初期该位置位属正常,见上电过程
8保留—屏蔽,不解析
9STATIC模块被判定为静止信息位,无需处理
10MAG_AIDING工作模式使用磁力计(9 轴);航向是否可靠还要看 MAG_DIST信息位。需要磁航向却为 0,检查工作模式
11UTC_UNSYNCUTC 未同步。UTC 字段只在本位为 0 时有效;HI91 的 system_time 此时是本地毫秒计数检查 PPS 与 RMC 接入,见 PPS 对时。清零后 system_time 才是当日 UTC 毫秒,各接口时间戳的含义见时间与时间戳
12SOUT_PULSE本帧对应一次 SOUT 脉冲;仅出现在 HI91 / HI83 帧中,CANFD83 和 Modbus 寄存器 0x0009 中恒为 0信息位,见 SOUT 同步输出
13–15保留—屏蔽,不解析

WB_CONV、ATT_CONV 和 UTC_UNSYNC 置 1 表示「未收敛 / 未同步」,名称容易读反。保留位取值不保证为 0,解析时必须屏蔽。只关心状态标志(bit3–7 和 bit9–12)时,先与掩码 0x1EF8 相与,去掉 COORD 和保留位。

比较不同协议的状态字时,屏蔽 bit12:它只在跟随 SOUT 脉冲的串口帧中置 1。

出厂默认配置 ​

下表是各配置项的出厂默认值。型号差异按接口标注,未标注的行对所有型号适用。「生效时机」列只是索引,规则见生效时机。

配置项出厂默认可选范围生效时机
串口参数115200 8N19 档(4800–921600),见 SERIALCONFIGSERIALCONFIG 立即;Modbus 写波特率寄存器重启后
默认输出帧COM1 以 100 Hz 输出 HI91周期和帧类型见串口与数据输出立即
带 RS-485 接口的型号COM1 出厂不主动输出数据帧,只应答命令和 Modbus 请求需要主动输出时用 LOG 命令开启立即
HI83 输出关闭;字段位图 0x000000FF(bit0–7,不含温度)bit0–11 和 bit21,见HI83立即,无需重启
-I2C 型号的 HI83 字段字段位图 0x0000003B(加速度、角速度、欧拉角、四元数、系统时间)同上同上
工作模式0(6 轴);以 LOG USRCONFIG 读回的 PROFILE 为准0 / 1 / 4 / 5 / 7,见工作模式重启后
输出数据轴向COORD 0(右-前-上)0 / 4重启后
安装方向URFR 02424 种三位码,见安装方向重启后
姿态零点无偏置见姿态零点与校平RST 后保存
IO 映射SYNC_IN = IO1,SOUT = IO2可选引脚以产品硬件手册为准,见多功能 IO 复用重启后
Modbus 从站 ID80(0x50);-I2C 型号同一个值兼作 I2C 设备地址Modbus 1–247;I2C 设备地址 0x08–0x77立即(旧 ID 随即不再应答)
CAN 节点地址81–127重启后
CAN 标称速率500 kbit/s(所有带 CAN 接口的型号,含 CAN FD 型号)速率码 0 / 2 / 3 / 4,见配置协议重启后
J1939 周期输出加速度、角速度、横滚俯仰、航向,每 10 ms 一帧(100 Hz),总开关开;其余 PGN(含倾角 PGN 0xFF4A)关闭周期 0 = 关闭,见配置协议立即
CANFD83(CAN FD 型号)关闭;字段位图 0x12B;数据段 4 Mbit/s见CANFD83MAP 下一帧、周期立即;数据段速率保存并重启后
  • 各接口的行仅适用于带该接口的型号,见适用产品。
  • 通信参数(波特率、Modbus ID、CAN 速率和节点)改过之后,以记录的当前值为准。失联时按失联恢复逐项尝试。
  • 恢复出厂的完整步骤见恢复出厂。

最后更新:

IMU · AHRS · INS · RTK 技术支持中心