Skip to content

指令与编程手册 ​

文档版本:Rev 1.7.4

适用于 HiPNUC IMU / AHRS / MRU 产品的公开指令与数据接口

具体功能以实际产品型号及交付配置为准

© 2016–2026 北京超核电子科技有限公司 版权所有。文档包含的信息可能在未经通知的情况下发生更改。

文档范围 ​

关于本手册 ​

本手册是 HiPNUC IMU / AHRS / MRU 产品的 指令与编程参考,面向需要直接对接模块、配置参数、解析数据或集成到上层系统的工程师。

适用产品:HiPNUC IMU / AHRS / MRU 标准产品的公开编程接口。具体功能以实际产品型号及交付配置为准;未启用的传感器、CAN、RS-485 或 MRU 功能不会产生对应输出。本手册仅涵盖编程与数据接口;引脚定义、机械尺寸、供电与电气规格请参阅对应产品的硬件手册。

旧版固件(<1.7.0)手册:下载 PDF。

阅读路线:第一次接触模块,请按所用接口完成下表中的通信验证;串口用户可参考第一次上手。配置功能查功能与配置,解析数据直接查对应协议章,通用定义查基础约定;遇到问题从故障定位进入。

快速接入流程 ​

按产品硬件手册连接电源、地线和通信接口,再按接口选择验证方式。以下操作只查询信息或接收数据,不修改配置。通信参数以设备当前配置为准,默认值仅供首次接入参考。

接口接入与验证协议参考
ASCII 串口8N1,默认 115200 bps。发送 LOG VERSION 并以回车结束;能读到 PNAME=、APP_VER= 和 OK 即通信正常第一次上手、ASCII 命令速查表
Modbus RTU确认产品支持 RS-485,核对波特率和节点 ID(默认 0x50)。读取 0x70–0x82 版本寄存器,核对响应地址、功能码、长度和 CRC读取版本信息、Modbus RTU 协议
J1939(CAN)核对接线、终端电阻和波特率(默认 500 kbit/s,CAN FD 产品为 1 Mbit/s)。上电后应收到 29 位扩展帧,先核对 PGN 和数据长度CAN 协议、PGN 消息列表

串口工具能打开端口不代表设备已通信成功,应以上述有效响应或报文为准;无响应时先看故障定位。

常用任务入口 ​

要完成的任务阅读入口
修改波特率、输出帧和输出频率串口与数据输出
选择 6 / 9 轴模式工作模式
非水平安装、按 ROS 约定输出安装方向、输出数据轴向
使用 9 轴航向、进行地磁校准地磁校准与磁环境
外部脉冲触发输出、UTC 对时、同步脉冲输出同步功能
解析 HI91 / HI83 或总线数据按接口查串口二进制协议、Modbus RTU 协议或 CAN 协议
使用倾角仪或 MRU 海浪补偿输出产品专属功能
排查无响应、配置后失联、数据或航向异常故障定位

第一次上手 ​

本节是串口只读验证示例,不修改设备配置。按硬件手册连接 USB 虚拟串口、RS-232 或 TTL,使用 CHCenter 命令终端或串口助手,以 8N1 和设备当前波特率(出厂默认 115200)打开对应 COM 口。

发送 LOG VERSION 并以回车换行 \r\n 结束。以下为响应格式示例,具体信息以实际设备为准(> 为主机发送,其余为模块返回):

text
> LOG VERSION
PNAME=HI14R3-CAN-000
BUILD=Sep 16 2026
UUID=0123456789ABCDEF
SN=HIPNUC00001234
APP_VER=173
BL_VER=12
OK

收到 OK 即表示命令通道正常。模块会同时在这个串口持续输出二进制数据帧,如果响应被数据淹没,先发送 LOG DISABLE 暂停数据输出,看完响应后再发送 LOG ENABLE 恢复。

通信正常后,配置方法见功能与配置,接收与解析代码使用官方 SDK。

体例约定:命令关键字、寄存器、十六进制以 等宽字体 标注;提示框分 警告(误用风险)和 注意(补充说明)。共性定义集中在基础约定,各协议章只给出具体格式与字段。

基础约定 ​

本章定义全手册通用的坐标系、姿态表示、航向约定、数据类型、时间戳和状态字。各协议章均引用本章,不再重复定义;解析任何数据前,请先读本章。

坐标系与方向约定 ​

模块涉及三个右手坐标系:

坐标系定义
传感器坐标系固联于模块,X / Y / Z 轴方向印在外壳或 PCB 丝印上,是安装方向编码的参照。
载体系(b 系)输出数据所在的坐标系。安装方向 URFR 声明印字箭头在载体上的指向,模块据此把数据对齐到载体;输出数据轴向 COORD 再决定数据的 X / Y / Z 按哪种约定对应载体:默认「右、前、上」(RFU),或 ROS 约定的「前、左、上」(FLU)。默认 URFR 24、COORD 0 且模块水平正放时,载体系与传感器系重合。
世界系(n 系)姿态的参考系,为 东北天 ENU(X 指东、Y 指北、Z 指天)。航向零点随工作模式和输出数据轴向而定,见航向约定。

旋转正方向遵循右手定则:右手拇指指向轴正向,四指弯曲方向即为该轴正旋转方向。

姿态表示 ​

模块同时输出 欧拉角 与 四元数 两种姿态表示,两者描述的是同一个载体系到世界系的旋转 Qb2n。

  • 欧拉角:横滚 roll、俯仰 pitch、航向 yaw,单位度。量程 roll ∈ [−180°, 180°],pitch ∈ [−90°, 90°],yaw ∈ [−180°, 180°]。
  • 四元数:顺序 WXYZ(q0 为标量部分)。

欧拉角的旋转顺序、各角所绕的轴和正方向随输出数据轴向而变,这是最容易套错公式的地方:

输出数据轴向载体系旋转顺序roll 绕pitch 绕yaw 绕pitch 为正roll 为正
右-前-上(COORD 0,默认)右前上 RFU312(先 Z,再 X,最后 Y)Y 轴X 轴Z 轴抬头右侧下沉
ROS(COORD 4,REP-103)前左上 FLU321(先 Z,再 Y,最后 X)X 轴Y 轴Z 轴低头右侧下沉

两种配置的互转公式见附录 A。两者的载体轴不同、俯仰符号相反,9 轴航向零点也不同(见航向约定),切换后应从四元数按对应公式重新提取欧拉角,不能只给某个角加减固定角度。

注意

俯仰 ±90° 奇异点:pitch 接近 ±90° 时欧拉角存在万向锁,roll 和 yaw 不再唯一。高仰角应用请使用四元数。

航向约定 ​

警告

不同协议对 yaw 的表示并不统一,请对照下表解析,不要跨协议套用。

输出位置航向表示正方向
HI91 / HI83原始 yaw,±180°逆时针为正(从上方俯视)
Modbus YAW 寄存器原始 yaw,±180°逆时针为正
J1939 0xFF41 前 4 字节罗盘航向,0–360°顺时针为正
J1939 0xFF41 后 4 字节原始 yaw,±180°逆时针为正
  • 6 轴等相对航向模式:yaw 为相对航向,上电时为 0,随时间缓慢漂移;两种输出数据轴向相同。
  • 9 轴模式:yaw 参考磁北。右-前-上(COORD 0)下车头朝北时 yaw 为 0;ROS(COORD 4)下按 REP-103 以车头朝东为 0,同一朝向的读数比右-前-上大 90°。模块不输出真北修正航向,需要真北时由主机按使用地点、日期和磁偏角模型修正。
  • 罗盘航向(J1939 0xFF41 前 4 字节)始终按右-前-上计算,等于右-前-上 yaw 取反后折算到 0–360°:9 轴下车头朝北为 0、朝东为 90°,不随输出数据轴向变化。原始 yaw 各字段随输出数据轴向变化。

数据类型与比例因子 ​

数据类型:

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

字节序:

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

位编号:所有位字段(MAIN_STATUS、HI83 位图等)以 bit0 为最低位,掩码 0x00000FFF 即 bit0–bit11。

比例因子:整型协议以比例因子还原物理量,物理值 = 原始值 × 比例因子。例如 Modbus 加速度原始值 1000、比例因子 0.00048828,物理值 = 0.488 G。浮点协议(HI91 / HI83 / CANFD83)已是工程单位,比例因子为 1。

警告

同一物理量在不同协议中的类型、比例因子和单位不同,例如加速度在 HI91 中是 G、在 HI83 中是 m/s²。逐项对照见数据字典。

时间与时间戳 ​

HI91 的 system_time(u32,ms)含义随 UTC 对时状态变化:

  • 未完成对时:本地毫秒计数,不表示绝对时间,不能换算日期或钟表时间。
  • 已完成对时:当日 UTC 毫秒计数,范围 0 ~ 86 399 999,对应 00:00:00.000 ~ 23:59:59.999,按 24 h 回绕。

对时状态由 MAIN_STATUS 的 UTC_UNSYNC 位判断;对时方法见PPS 对时。换算示例:

system_time (ms)对应当日 UTC 时间
000:00:00.000
3 661 00001:01:01.000
43 200 00012:00:00.000
86 399 99923:59:59.999

注意

时间戳不含日期与时区,完成对时后按 UTC+0 解释,本地时间由主机叠加时区偏移。HI83 另有 system_time_us(u64,本地开机累计微秒,不受对时影响)和 utc(完整年月日时分秒)两个时间字段;utc 是否有效同样看 UTC_UNSYNC。

MAIN_STATUS 状态字 ​

MAIN_STATUS 是 16 位状态字,出现在 HI91、HI83、CANFD83 和 Modbus 0x09 中。它是状态位集合而不是错误码:非零不代表故障,也不必等所有位清零才使用数据。按用途检查相关位即可:姿态应用看收敛状态,9 轴航向结合磁场状态,需要绝对时间时看对时状态。

位名称=1 含义=0 含义
0–2保留——
3WB_CONV陀螺零偏未收敛,精度较差(建议静止 3~5 s)零偏收敛良好
4MAG_DIST9 轴模式下磁场状态异常,航向精度可能降低磁场正常,或处于 6 轴模式
5ACC_SAT当前或最近 2 s 内加速度计量程饱和连续 2 s 无饱和
6GYR_SAT当前或最近 2 s 内陀螺仪量程饱和连续 2 s 无饱和
7ATT_CONV姿态估计未充分收敛,精度较差(建议静止片刻)姿态精度正常
8保留——
9STATIC设备被判定为静止设备未判定为静止
10MAG_AIDING磁辅助使能(9 轴模式),航向可靠性还需结合磁场状态判断磁辅助关闭(6 轴模式)
11UTC_UNSYNCUTC 未 同步,system_time 为本地毫秒计数UTC 已同步,system_time 为当日 UTC 毫秒
12SOUT_PULSE本帧对应一次 SOUT 脉冲本帧不对应 SOUT 脉冲
13–15保留——

注意

WB_CONV、ATT_CONV 和 UTC_UNSYNC 三个位名描述的是「检查项」,=1 表示未收敛 / 未同步,请勿按字面理解为已收敛。保留位取值不保证为 0,解析时应屏蔽。

功能与配置 ​

本章按功能组织,每个小节给出用途、ASCII 命令语法、取值表和操作步骤,是各配置项的唯一出处。命令的通用规则和一页汇总见ASCII 命令速查表;同一配置项通过 Modbus 或 J1939 操作时,寄存器和报文见对应协议章。

配置流程与保存 ​

三条系统命令:

命令作用说明
SAVECONFIG保存配置配置完成后执行一次
REBOOT复位模块需要重启才生效的配置在此后加载
FRESET恢复出厂设置自动保存并复位;出厂校准参数不受影响

推荐流程:修改 → 读回确认 → SAVECONFIG → 需要时 REBOOT → 重启后再次读回并检查实际输出。读回命令为 LOG COMCONFIG(串口与输出)和 LOG USRCONFIG(工作模式、安装方向、输出数据轴向)。读回正确不等于已生效,需要重启的项在重启后还应检查实际输出。

复位和恢复出厂可能直接中断当前接口的应答,不必等待成功回显;以重启后的有效响应和实际配置确认结果。

各配置项的生效时机:

生效时机配置项
立即生效串口波特率、数据帧输出开关 / 周期 / 触发方式、姿态零点与校平、地磁校准结果、用户级陀螺校准结果
保存后复位或重新上电并确认HI83 字段选择、工作模式、输出数据轴向、安装方向、多功能 IO 映射

三种接口的保存与复位操作:

接口保存配置复位恢复出厂
ASCIISAVECONFIGREBOOTFRESET
Modbus向 0x00 写 0x0000向 0x00 写 0x00FF向 0x00 写 0x0001
J1939地址 0x0000 写 0x00000000地址 0x0000 写 0x000000FF地址 0x0000 写 0x00000001

警告

恢复出厂会把波特率、输出配置、工作模式、安装方向、输出数据轴向和姿态零点等全部还原为默认值并重启。执行前记录当前通信参数,执行后重新确认通信和输出。排查问题时不要把恢复出厂当作第一步。

串口与数据输出 ​

模块的 RS-232 / TTL / USB 串口既接收 ASCII 命令,也输出二进制数据帧。串口参数固定为 8 数据位、无校验、1 停止位(8N1),默认 115200 bps;默认在 COM1 和 COM2 以 100 Hz 输出 HI91 帧。

串口波特率 — SERIALCONFIG [<COM>] <BAUD> ​

  • <COM> 可选,如 COM2;省略时配置当前连接的串口。
  • <BAUD> 共 10 档:4800 9600 19200 38400 57600 115200 230400 256000 460800 921600。

示例:SERIALCONFIG 921600、SERIALCONFIG COM2 460800。

操作步骤(修改当前连接的串口时):

  1. 记录当前波特率,确认主机支持目标波特率;
  2. 发送命令,模块在 旧波特率 下返回 OK,然后立即切换;
  3. 主机切换到新波特率,发送 LOG COMCONFIG 确认 BAUD= 为目标值;
  4. 执行 SAVECONFIG。

修改其他串口时,当前连接不受影响。若目标波特率无法承载该串口已配置的输出(帧长 × 帧率超过带宽),命令返回 ERR,请先降低输出频率,估算方法见附录 C。改后无法通信时,按故障定位核对主机与设备参数,不要直接恢复出厂。

数据帧输出 — LOG [<COM>] <MSG> <TYPE> <VALUE> ​

  • <COM> 可选,省略时配置当前连接的串口;周期输出仅支持 COM1 和 COM2。
  • <MSG>:HI91(定长浮点帧,默认)或 HI83(可配置变长帧),格式见串口二进制协议。
  • <TYPE> / <VALUE>:
    • ONTIME <秒>:周期输出,推荐 0.001(1 kHz)~ 1(1 Hz),0 关闭;
    • ONMARK 1:改为由 SYNC_IN 脉冲触发,每个上升沿输出一帧(见SYNC_IN 触发输出);
    • ONMARK ONCE:软件触发当前串口所有已设为 ONMARK 1 的帧各输出一次,不返回 OK;须保持 LOG ENABLE。例如先 LOG HI91 ONMARK 1,再发送 LOG HI91 ONMARK ONCE。
示例说明
LOG HI91 ONTIME 0.01当前串口 HI91 以 100 Hz 输出
LOG COM2 HI91 ONTIME 0.002COM2 上 HI91 以 500 Hz 输出;须先将 COM2 波特率提高到 921600,步骤见串口波特率
LOG HI91 ONTIME 0关闭 HI91
LOG HI83 ONTIME 0.01先用 LOG HI91 ONTIME 0 关闭原周期帧,再设置 HI83 100 Hz;波特率须满足所选字段的帧长
LOG HI91 ONMARK 1HI91 改为 SYNC_IN 脉冲触发

LOG ENABLE / LOG DISABLE 用于临时恢复或暂停当前串口的全部数据输出,不改变周期配置,也不保存,重启后恢复输出。发送命令时被数据帧刷屏,可先 LOG DISABLE。

警告

高帧率需要足够的串口带宽:HI91 在 115200 bps 下最高约 100 Hz,500 Hz 需要 460800 bps 以上,建议 921600。超出带宽的设置会被拒绝或造成丢帧,见附录 C。

HI83 字段选择 — LOG HI83 MAP <BITMAP> ​

<BITMAP> 为十六进制(0x 前缀)或十进制,每位对应一个数据段,位定义见可变类型数据帧(HI83)。默认 0x000000FF;本手册定义的公开字段为 bit0–bit11(掩码 0x00000FFF),其他位不要置位。

命令输出内容
LOG HI83 MAP 0x000000FF默认:加速度 / 角速度 / 磁场 / 欧拉角 / 四元数 / 系统时间 / UTC / 气压
LOG HI83 MAP 0x0000001F加速度 / 角速度 / 磁场 / 欧拉角 / 四元数
LOG HI83 MAP 0x00000C1B加速度 / 角速度 / 欧拉角 / 四元数 / MRU 位移与频率

MAP 是全局设置,各串口共用。修改后执行 SAVECONFIG、REBOOT,再用 LOG COMCONFIG 读回,并检查实际输出帧的 data_bitmap。接收端应按每帧位图解析,不要依赖固定帧长。

查询命令 ​

命令返回内容
LOG VERSIONPNAME(型号)、BUILD、UUID、SN、APP_VER(固件版本)、BL_VER
LOG COMCONFIG当前串口的 BAUD,各数据帧的 ONTIME(单位 ms)或 ONMARK,HI83 的 MAP
LOG USRCONFIGPROFILE(工作模式)、URFR(安装方向)、COORD(输出数据轴向)
LOG MCAL STAT地磁校准的 STAT 和 PROGRESS

注意

LOG COMCONFIG 返回的 ONTIME 单位是毫秒,设置命令的单位是秒:读回 ONTIME=20 对应 LOG HI91 ONTIME 0.02。

工作模式 ​

工作模式决定姿态解算使用哪些传感器和运动约束,通过 CONFIG ATT MODE <VAL> 设置,复位或重新上电后生效。

VAL模式适用场景
06 轴(VRU)只用加速度计和陀螺仪,输出 相对航向(上电为 0);不受磁场影响,适合室内、机器人、近电机等场景
19 轴(AHRS)融合磁力计,输出 绝对航向(参考磁北);需要洁净磁环境并完成地磁校准
4人形机器人适用于双足 / 人形机器人等场景
5低速地面平台割草机、农机、工程机械等低速地面载体
7低动态 / 倾角仪静态或准静态测量,输出更平滑

示例:CONFIG ATT MODE 0 → SAVECONFIG → REBOOT,重启后 LOG USRCONFIG 应返回 PROFILE=0。其他数值为保留或专用交付模式,以产品说明为准。Modbus 用寄存器 0x06 设置,见寄存器列表。

警告

室内和机器人场景慎用 9 轴:室内钢结构、电机和大电流线缆会干扰磁力计,导致航向误差,且无法通过校准消除。此类场景优先使用 6 轴模式。

量程与带宽 ​

量程:模块自动完成量程适配,用户无需手动配置。使用时,以对应型号数据手册中规定的加速度和角速度测量范围为准,按其最小值与最大值确定测量上下限。

带宽:模块根据所选工作模式(PROFILE)自动调整带宽相关参数,优化响应延迟与输出噪声,兼顾低延迟和低噪声的应用需求,用户无需单独配置。具体带宽指标请查阅对应型号的数据手册。

输出数据轴向 ​

CONFIG IMU COORD <VAL> 选择输出数据的 X / Y / Z 按哪种约定对应载体,复位或重新上电后生效。它与安装方向分工不同:安装方向声明模块怎样装在载体上;输出数据轴向只决定数据怎样表达。设好安装方向后,数据按载体算,不再是外壳上印的箭头。CHCenter 在配置对话框「工作模式」页的「输出数据轴向」一节设置。

VAL输出数据轴向数据 X / Y / Z欧拉角顺序9 轴航向零点
0右-前-上(默认)车右 / 车头方向 / 向上312车头朝北
4ROS(REP-103)车头方向 / 车左 / 向上321车头朝东
  • 影响加速度、角速度、磁场、四元数和欧拉角,各角的正方向见姿态表示。速度和位置始终按东-北-天输出。
  • 倾角、罗盘航向(J1939 0xFF41 前 4 字节)和 MRU 输出始终按右-前-上计算,不随本项变化。
  • 6 轴等相对航向模式下,两种选择的航向都以开机方向为 0。
  • 使用 ROS 时选 4:把驱动的 frame_id 设为 base_link(或与它没有旋转的坐标系)即可,无需额外 TF,见官方 ROS 驱动说明。
  • Modbus 用寄存器 0x07、J1939 用地址 0x0007 设置。组合导航产品在组合导航工作模式下只能为 0。

注意

V1.7.2 及更早固件的 COORD 4 为北西天(NWU)约定,与上表不同。

安装方向 ​

模块非默认方向安装时,用 CONFIG IMU URFR <CODE> 声明外壳或 PCB 丝印上印的 X / Y / Z 箭头分别指向载体的哪个方向,模块据此把输出对齐到载体。复位或重新上电后生效。安装方向只描述安装,与输出数据轴向无关:选 ROS 时数据改按「前、左、上」输出,编码方式不变。

<CODE> 为三位数字 ABC(两位时补前导零,24 即 024),A / B / C 分别表示载体 X(右)/ Y(前)/ Z(上) 轴对应传感器的哪个方向:

数字传感器方向数字传感器方向
0+X1−X
2+Y3−Y
4+Z5−Z

三个方向必须构成右手系,共 24 种合法编码。实际使用时按模块在载体上的物理朝向直接查下表:「箭头指向」列是印字 X / Y / Z 箭头在载体上的实际指向,方向以载体为准:前 = 车头方向,右 = 驾驶员的右手边。DATA 列是编码的十六进制值,供 Modbus 寄存器 0xA6 和 J1939 地址 0x00A6 使用。

CHCenter 配置对话框的「安装设置」页用「X 箭头指向」「Y 箭头指向」两个下拉框选择,Z 自动确定,与下表第一列一一对应;Modbus 和 J1939 配置窗口也有该页。倾角仪产品没有该页。

箭头指向(X,Y,Z)命令DATA(hex)说明
右,前,上CONFIG IMU URFR 240018默认,水平安装
右,后,下CONFIG IMU URFR 350023绕 X 轴翻转倒装
右,下,前CONFIG IMU URFR 43002B侧装,Y 朝下
右,上,后CONFIG IMU URFR 520034侧装,Y 朝上
左,前,下CONFIG IMU URFR 125007D绕 Y 轴翻转倒装
左,后,上CONFIG IMU URFR 1340086水平安装,绕 Z 转 180°
左,上,前CONFIG IMU URFR 142008E左向立装,Y 朝上
左,下,后CONFIG IMU URFR 1530099左向立装,Y 朝下
前,右,下CONFIG IMU URFR 20500CD倒装,X 沿车头
后,右,上CONFIG IMU URFR 21400D6水平安装,绕 Z 转 −90°
上,右,前CONFIG IMU URFR 24000F0立装,X 朝上
下,右,后CONFIG IMU URFR 25100FB立装,X 朝下
前,左,上CONFIG IMU URFR 3040130水平安装,绕 Z 转 +90°
后,左,下CONFIG IMU URFR 315013B倒装,X 沿车尾
下,左,前CONFIG IMU URFR 3410155左向立装,X 朝下
上,左,后CONFIG IMU URFR 350015E左向立装,X 朝上
前,上,右CONFIG IMU URFR 4020192前向立装,Z 朝右
后,下,右CONFIG IMU URFR 413019D后向立装,Z 朝右
下,前,右CONFIG IMU URFR 42101A5立装,X 朝下、Z 朝右
上,后,右CONFIG IMU URFR 43001AE立装,X 朝上、Z 朝右
前,下,左CONFIG IMU URFR 50301F7前向立装,Z 朝左
后,上,左CONFIG IMU URFR 5120200后向立装,Z 朝左
上,前,左CONFIG IMU URFR 5200208立装,X 朝上、Z 朝左
下,后,左CONFIG IMU URFR 5310213立装,X 朝下、Z 朝左

设置后 SAVECONFIG、REBOOT,再抬起车头、让右侧下沉,确认输出方向:抬起车头时,右-前-上下 pitch 为正,ROS 下 pitch 为负;右侧下沉时两者 roll 均为正。不在表内的编码会被拒绝并返回 ERR。修改安装方向并重启后,之前保存的姿态零点不再生效,需要在新安装下重新设置(见姿态零点与校平)。

姿态零点与校平 ​

CONFIG ATT RST <VAL> 在当前姿态上设置用户零点,用于消除安装倾斜或把当前航向作为参考。执行时载体应静止,否则会把运动引入零点。

VAL动作掉电保持
0全部归零:当前 roll / pitch / yaw 置零,航向的保存方式见下文是
1航向复位:当前航向置零否,重启后清除
2相对零点:当前 pitch / roll 置零,航向不变是
3自动校平:仅当 pitch 和 roll 都在 ±5° 以内时把两者校平到 0°;否则不执行并返回 ERR是
5取消校平:清除已保存的零点,恢复模块原始姿态输出是

执行后检查姿态输出确认结果;RST 0、RST 2、成功的 RST 3 和 RST 5 执行后按配置流程与保存保存。RST 2 适合模块与载体存在固定安装倾斜的情况,倾角仪的零点也用它设置;RST 3 用于模块已经接近水平、只需消除小的残余偏差的情况。其他数值为保留用途。Modbus 用寄存器 0xA5、J1939 用地址 0x00A5 写入相同的取值。

  • 零点与安装方向绑定:零点按载体「右、前、上」记录,并记下保存时的安装方向。修改 URFR 并重启后旧零点自动失效(改回原安装方向后会重新生效,不需要时用 RST 5 清除);修改输出数据轴向不影响零点。9 轴下 RST 0 保存的是执行时输出数据轴向下的航向零点,之后切换输出数据轴向,同一朝向的航向读数随之改变:例如在 ROS 下置零后切回右-前-上,读数为 −90°。
  • RST 0 的航向:9 轴模式下航向连同调平一起保存;6 轴等相对航向模式下只保存调平,航向仅在本次上电内置零,下次开机仍从 0 开始。
  • 9 轴切换到 6 轴:在 9 轴模式下执行过 RST 0 后切换到 6 轴,开机航向会带上保存的航向偏置,不再从 0 开始(例如 ROS 下可能读到 −90°)。此时执行 CONFIG ATT RST 5 清除零点,再在 6 轴模式下按需重新调平(RST 2 或 RST 3)。

用户级陀螺校准 ​

CONFIG USRCAL 标定陀螺 Z 轴比例因子,用于降低水平旋转载体的长期航向累计误差,适用于 AGV、大型水平移动机器人、转台等能准确控制旋转角度的场景;不适合手持随意旋转或无法计量旋转角度的场景。

命令说明
CONFIG USRCAL START <ANGLE>开始校准,<ANGLE> 为计划旋转的总角度,单位度,范围 360~3600
CONFIG USRCAL STOP结束校准;成功返回 OK 并立即生效、掉电保持,失败返回 ERR

操作步骤:

  1. 将模块连同载体放在水平、平整的地面,环境温度稳定、无强振动;
  2. 发送 CONFIG USRCAL START 720(以旋转 2 圈为例);
  3. 以 20~100 deg/s 匀速水平旋转 720°,方向任意,中途不要停顿或反向;
  4. 发送 CONFIG USRCAL STOP。

STOP 返回 ERR 时,请检查是否先执行了 START、是否保持水平并绕竖直轴旋转,以及实际旋转角度是否与设定值一致。

警告

USRCAL 是精密校准,只在具备可靠角度基准时使用。错误操作可能增大航向误差;结果异常时不要反复校准,请联系技术支持。

同步功能 ​

同步功能使用 SYNC_IN/PPS 输入引脚和 SOUT 输出引脚,包含三种用途:外部脉冲触发数据输出、PPS 加时间消息对时、SOUT 标记数据帧发送时刻。引脚位置见硬件手册,引脚复用见多功能 IO 复用。

SYNC_IN 触发输出 ​

模块检测到 SYNC_IN/PPS 引脚上升沿后,把配置为脉冲触发模式的数据帧各输出一帧;这些帧不再周期发送。

  • 串口:LOG <MSG> ONMARK 1 把目标帧设为脉冲触发(见数据帧输出);
  • J1939:把目标 PGN 的发送周期写为 0x8000(见配置协议)。

引脚内部下拉,电平 ≤ 5 V(TTL/CMOS 兼容),只识别上升沿。不使用该功能时悬空或接地。

PPS 对时 ​

把外部 GNSS 接收机的 1PPS 秒脉冲接到 SYNC_IN/PPS,同时把接收机输出的 NMEA RMC 语句($GPRMC / $GNRMC)接入模块串口(COM1 或 COM2),模块即可把内部时钟对齐到 UTC。对时完成后 MAIN_STATUS.UTC_UNSYNC 清零,system_time 变为当日 UTC 毫秒,HI83 的 utc 字段和 J1939 0xFF2F 报文输出完整日期时间。

参数描述有效范围推荐
t0相邻秒脉冲上升沿间隔900~1100 ms1000 ms
t1秒脉冲高电平时间上升沿有效10~50 ms
t2RMC 语句传输时间与波特率相关—
t3RMC 语句相对最近一次脉冲上升沿的延迟< 1000 ms尽量靠近上升沿,相位稳定

RMC 语句要求:

  • 波特率与模块该串口当前配置一致,语句以 \r\n 结束,频率 1 Hz(最高 10 Hz);
  • 状态字段必须为 A(有效定位),模块只取其中的 UTC 时间和日期两个字段,其余字段忽略;
  • 每条语句描述的是它之前最近一次 PPS 上升沿对应的整秒时刻,必须在该上升沿后 1 s 内到达。

示例:$GNRMC,123519.000,A,3958.1234,N,11623.4567,E,0.0,0.0,180626,,,A*72 表示 2026-06-18 12:35:19 UTC。

同步确认:接入后等待 MAIN_STATUS.UTC_UNSYNC 清零,再按 UTC 解释时间。首次对时或重新获取时间时,时间戳可能跳变;中断、重连后应重新检查同步状态,不要只按等待时长判断对时成功。

警告

时间消息必须与 PPS 脉冲配对:只接 RMC 不接 PPS,或者 RMC 相对脉冲延迟超过 1 s,都无法完成对时。工程上建议直接使用 GNSS 接收机同步输出的 PPS 与 RMC。

SOUT 同步输出 ​

SOUT 用于标记 COM1 的 HI91/HI83 周期帧发送,默认每帧输出一次脉冲,对应帧的 MAIN_STATUS.SOUT_PULSE 位置 1。上位机可用它把串口数据与外部设备的时间轴对齐, 数据帧一定在脉冲下降沿后开始。

  • 约束:启用 SOUT 时 COM1 只能配置一种周期帧,切换 HI91 / HI83 前先用 LOG <MSG> ONTIME 0 关闭原周期帧;LOG DISABLE 只是临时停发,不清除周期配置。
  • SOUT 标记的是帧发送,不是传感器采样或相机曝光时刻。

多功能 IO 复用 ​

模块的多功能引脚(IOx)各有默认功能,可用 CONFIG PMUX<n> IO<m> 重新映射(n 为功能号,m 为引脚号),复位或重新上电后生效。

功能名称方向说明默认引脚
PMUX1SYNC_IN/PPS输入同步脉冲输入(见同步功能)IO1
PMUX2SOUT输出COM1 周期帧发送标记(见SOUT 同步输出)IO2
PMUX3LED输出运行状态指示灯IO5

示例:CONFIG PMUX2 IO3 把 SOUT功能(PMUX2) 改到 IO3引脚,随后 SAVECONFIG、REBOOT。一个引脚只能承担一种功能,映射到已被占用的引脚时原功能自动解除。

注意

并非所有 IO 引脚都会在具体产品上引出,详见对应产品硬件手册。

产品专属功能 ​

以下功能仅特定型号或交付配置支持,其余型号可跳过本节。

倾角仪输出 ​

倾角仪型号(如 HI50)把载体相对水平面的倾斜以「倾角」语义输出,适用于平台调平、角度监测、工程机械姿态等场景。倾角由姿态解算得到:

  • X 轴倾角:基于横滚,量程 ±180°(双轴型)或 0–360°(单轴型);
  • Y 轴倾角:基于俯仰,量程 ±90°。

输出位置:HI83(bit9)、Modbus(0x4A / 0x4B)、J1939(PGN 0xFF4A),各协议的比例因子见数据字典。倾角始终按右-前-上约定计算,不随输出数据轴向变化。零点:把载体置于基准姿态后执行 CONFIG ATT RST 2(见姿态零点与校平),零点掉电保持。建议配合 CONFIG ATT MODE 7 使用以获得更平滑的输出。

MRU 海浪补偿输出 ​

MRU 交付配置用于估计船舶或海上平台的周期性运动,输出三轴位移与主频:

运动轴描述输出
Heave升沉 / 垂荡垂向位移、频率
Surge纵荡船首–船尾方向位移、频率
Sway横荡左右方向位移、频率

纵荡、横荡分别沿载体的前后、左右方向,不随输出数据轴向变化。数据通过 HI83(bit10 位移、bit11 频率)或 Modbus(0x4E–0x50 位移、0x51–0x53 频率)输出,见数据字典。MRU 输出是周期运动的估计结果,不能当作绝对位置或航迹使用。典型应用:船舶运动监测与姿态控制、海洋工程作业补偿(起重、对接)、波浪特性研究、海上平台稳定性分析。

警告

使用限制:

  • 仅适用于周期性往复运动。周期超过 30 s 的运动、单向线性运动、阶跃式位移通常无法准确测量。
  • 需要 5~20 个稳定的海浪周期作为初始化时间。
  • 典型海浪周期 3~20 s,超出此范围精度下降。

地磁校准与磁环境 ​

地磁校准用于消除随模块一起运动的硬磁 / 软磁干扰,是 9 轴模式 获得可靠航向的前提;只使用 6 轴模式时不需要校准。

注意

流程概要:切换到 9 轴模式并重启 → 检查磁环境 → 启动校准并连同载体整体缓慢旋转各轴 → 查询校准状态 → 旋转一周验证航向。

适用场景 ​

9 轴模式建议在同时满足以下条件时使用:

  1. 首次使用前至少完成一次地磁校准;
  2. 使用环境无明显空间磁场干扰,建议室外空旷处;
  3. 模块与安装载体(PCB、外壳、机器人等)的相对位置在使用中保持固定,随模块一起运动的磁性部件不发生变化。

警告

室内环境优先 6 轴:机房、实验室、车间、地下车库等室内空间的磁场畸变来自钢筋、家具和电器,不随模块运动,无法通过校准消除,校准成功后 9 轴航向也可能不如 6 轴稳定。电机、线缆和驱动器产生的磁场随电流、转速变化,属于时变干扰,同样无法通过一次校准消除;建议在电机停止时校准,工作状态变化明显时拉开距离或改用 6 轴模式。原理见磁干扰类型与校准边界。

运行时可信度判断:MAG_AIDING 只表示磁辅助已使能,不能单独判断航向可靠;应结合 MAG_DIST、ATT_CONV 和实际航向变化判断,位定义见MAIN_STATUS 状态字。

校准步骤 ​

以下用 ASCII 命令说明。使用 Modbus 时按地磁校准寄存器操作替换对应命令,环境检查、旋转动作、状态含义和验证方法相同。

第 1 步:切换工作模式 ​

发送 CONFIG ATT MODE 1,SAVECONFIG,然后 REBOOT;重启后确认 MAIN_STATUS.MAG_AIDING=1 或 LOG USRCONFIG 返回 PROFILE=1。

第 2 步:检查校准环境 ​

常见磁场干扰源:磁铁、扬声器、磁性螺丝、铁质家具、钢制工装、车辆底盘、显示器、电机与变压器、大电流线缆、手机充电器、建筑钢筋结构。

环境等级要求
最佳室外空旷场地,远离建筑物和车辆(> 5 m)
仅用于临时验证室内远离钢结构、电机、大电流线缆和磁体的区域;量产验收应使用室外场地,或使用已通过 B_total 与航向旋转验证的固定场地

警告

整体校准原则:模块已焊装在产品 PCB 上、采用磁性外壳或已安装在机器人 / 车辆 / 三脚架等导磁刚体上时,必须把与模块固联的整体一起旋转校准;单独校准模块后再装入产品会失效,模块与载体分离或重装后需重新校准。

第 3 步:执行校准 ​

发送 CONFIG MCAL START,按以下要领旋转模块。校准过程最长约 120 s,会自动结束,不需要结束指令;是否成功以查询状态为准。

旋转要领:

  1. 位置尽量不动,只改变姿态;模块已与载体固联时旋转整体;
  2. 覆盖尽可能多的姿态方向:3D 校准建议每个轴至少转一圈(推荐 2~3 圈),速度均匀,推荐 20~100 deg/s,避免长时间停在同一姿态;
  3. 推荐方案:绕 X 轴 2 圈 → 绕 Y 轴 2 圈 → 绕 Z 轴 2 圈;或随机旋转,保证每个轴都经历充分的角度变化。

速度、时间和圈数只是操作参考,校准是否完成以 STAT=3 为准。

注意

3D 与平面(2D)校准:CONFIG MCAL START 执行 3D 校准,适用于手持设备、无人机等会明显俯仰 / 横滚的载体;首次校准或安装磁环境变化后也应做 3D 校准。运行中基本保持水平、主要绕竖直轴旋转的载体(AGV、转台、车辆)可用 CONFIG MCAL START 2D 做平面校准,只需保持水平、绕竖直轴旋转一周以上。CHCenter 的「地磁校准」窗口可选择「3D — 手持 / 无人机」或「2D — 车载 / AGV」,并显示对应的旋转要领。

第 4 步:查询校准状态 ​

发送 LOG MCAL STAT,返回示例:

text
STAT=3
PROGRESS=100
OK
STAT状态操作建议
0空闲可开始新的校准
1校准中继续旋转模块(或模块与载体整体)
3校准完成按第 5 步验证航向
4校准失败按故障排查流程处理后重新校准

PROGRESS 为校准进度提示,不能据此推算剩余时间,范围 0~100:校准中最高显示 99,STAT=3 后显示 100。

校准成功后补偿参数立即生效并自动掉电保持,不需要 SAVECONFIG。建议重新上电后再做一次航向旋转验证。

第 5 步:验证校准结果 ​

  1. 水平放置模块,缓慢旋转一周(360°);
  2. 航向输出应随旋转连续变化,只在 ±180°(或 0/360°)边界回绕,无其他跳变;
  3. 一周闭合误差或相对参考航向的误差超过 ±5°、出现非边界跳变、航向不随旋转变化时,按下文排查。

故障排查流程 ​

校准失败(STAT=4)或验证异常时按下表逐项排查,前一项合格再做下一项。磁场总强度 B_total = √(Bx² + By² + Bz²),由 mag_b 三轴计算。

顺序检查项合格判据不合格时的处理
1静止读取 B_total20–60 μT低于 20 μT(被屏蔽)或高于 60 μT(附近有磁体)→ 远离干扰源或更换位置后重新校准
2姿态覆盖3D:各轴充分覆盖,每轴 ≥ 360°;2D:水平绕竖直轴一周以上;速度 20–100 deg/s覆盖不足或长时间停在同一姿态 → 重做旋转后重新校准
3同一位置改变朝向时的 B_total 变化最大值与最小值之差 ≤ 10 μT超过 10 μT 说明存在空间磁场干扰(不要用单轴变化判断)→ 更换位置,或改用 6 轴模式
4校准时位置是否移动、模块与载体是否发生相对位移位置固定、安装固定固定位置只改变姿态,模块与载体整体重新校准
—以上均合格仍异常—在洁净环境重新校准一次

校准频率与模式选择 ​

何时需要重新校准:

  • 首次固定安装后校准并验证;安装状态未变且验证正常时通常不需要重复校准;
  • 模块与载体的相对位置或随模块运动的磁性部件发生变化后重新校准;
  • 更换使用环境或出现航向异常时先检查磁干扰和安装状态,排除干扰后仍异常再在合适环境重新校准。

模式选择建议:

应用场景推荐模式原因
室外空旷环境(无人机、船舶等)9 轴磁场干扰小,可获得绝对航向
室内环境(AGV、机器人等)6 轴室内磁场畸变大,6 轴更稳定
靠近电机 / 电磁设备6 轴时变干扰无法通过校准消除
需要绝对航向9 轴须确保磁场稳定并完成校准
只需相对航向6 轴上电航向为 0,适合相对测量

磁干扰类型与校准边界 ​

磁干扰按「是否随传感器一起运动」分为两类,只有随传感器运动的干扰才能通过校准消除:

磁干扰类型随传感器运动的干扰空间磁场干扰
特点干扰源随传感器一起运动干扰源不随传感器运动
子类硬磁(固联磁体 / PCB / 金属外壳)、软磁(固联导磁金属)、传感器标定误差空间畸变(钢筋 / 家具 / 电器)、时间畸变(电机 / 电流变化)
典型来源与模块固联的 PCB、金属外壳、无人机机架家具、家电、线缆、建筑钢筋
能否校准可以不可以,会显著增大航向误差

ASCII 命令速查表 ​

模块配置采用串口 ASCII 字符串命令(类似 AT 指令)。本章汇总全部公开命令;各命令的用途、取值表和操作步骤见功能与配置。

命令格式与响应 ​

  • 命令关键字和参数 区分大小写,全部大写;参数以空格分隔,例如 CONFIG IMU URFR 24。
  • 每条命令以回车换行 \r\n 结束。
  • 成功通常返回 OK,失败返回 ERR;查询命令先返回若干行 KEY=VALUE,再返回 OK。REBOOT / FRESET 可能直接复位,不必等待 OK,重连后验证结果。
  • 命令响应与数据帧共用同一串口,必要时先 LOG DISABLE 暂停数据输出。
响应含义
OK命令已接受
ERR参数错误、取值超范围或当前状态不允许执行(如 ATT RST 3 时不水平、USRCAL STOP 校验未通过、输出配置超出串口带宽)
ERROR: Unsupported baud + ERRSERIALCONFIG 的波特率不在 10 档之内
无响应命令名不存在或大小写错误;LOG <MSG> ONMARK ONCE 不返回 OK,输出条件见数据帧输出;复位可能中断应答

命令速查 ​

命令作用生效详见
LOG VERSION查询型号、序列号和固件版本—查询命令
LOG COMCONFIG查询当前串口波特率、各帧输出配置、HI83 MAP—查询命令
LOG USRCONFIG查询工作模式、安装方向、输出数据轴向—查询命令
LOG MCAL STAT查询地磁校准状态与进度—第 4 步:查询校准状态
LOG ENABLE / LOG DISABLE恢复 / 暂停当前串口数据输出(不保存)立即数据帧输出
LOG [<COM>] <MSG> ONTIME <秒>设置数据帧输出周期,0 关闭立即数据帧输出
LOG [<COM>] <MSG> ONMARK 1数据帧改为 SYNC_IN 脉冲触发立即SYNC_IN 触发输出
LOG <MSG> ONMARK ONCE触发当前串口已配置的 ONMARK 帧(无 OK)立即数据帧输出
LOG HI83 MAP <BITMAP>选择 HI83 输出字段保存、重启并确认HI83 字段选择
SERIALCONFIG [<COM>] <BAUD>设置串口波特率(10 档)立即串口波特率
CONFIG ATT MODE <0/1/4/5/7>工作模式重启后工作模式
CONFIG IMU COORD <0/4>输出数据轴向:右-前-上 / ROS重启后输出数据轴向
CONFIG IMU URFR <CODE>安装方向(24 种编码)重启后安装方向
CONFIG ATT RST <0/1/2/3/5>全部归零 / 航向复位 / 相对零点 / 自动校平 / 取消校平立即姿态零点与校平
CONFIG MCAL START [2D]启动 3D 或 2D 地磁校准立即校准步骤
CONFIG USRCAL START <角度> / STOP用户级陀螺比例校准立即用户级陀螺校准
CONFIG PMUX<n> IO<m>多功能 IO 映射重启后多功能 IO 复用
SAVECONFIG保存配置立即配置流程与保存
REBOOT复位模块立即配置流程与保存
FRESET恢复出厂设置(自动保存并复位)立即配置流程与保存

注意

本表为标准固件的公开命令,定制命令以交付说明为准。手册未列出的命令不作为公开接口。

数据字典与协议总览 ​

协议总览 ​

协议物理接口特点详见
HiPNUC 二进制 HI91RS-232 / TTL / USB出厂默认;定长 76 字节数据域,浮点工程单位串口二进制协议
HiPNUC 二进制 HI83RS-232 / TTL / USB按位图选择字段的变长帧,含微秒时间戳、UTC、倾角、MRU串口二进制协议
Modbus RTURS-485工业标准,寄存器读写,整型定点Modbus RTU 协议
J1939CAN 2.0B新项目 CAN 接入的推荐协议;PGN 周期广播,整型定点CAN 协议
CANFD83CAN FDHI83 的 CAN FD 版本,浮点 SI 单位CANFD83 可变帧

CANopen 仅供已有项目维护,其映射与比例因子单独见 CANopen(CAN),不在本章对照表内。

数据字典 ​

下表按物理量列出各协议的类型、比例因子和单位,物理值 = 原始值 × 比例因子;浮点字段比例因子为 1。地址和偏移见各协议章的字段表。

物理量HI91HI83ModbusJ1939
加速度 XYZfloat,Gfloat,m/s²i16 × 0.00048828 → G(0x34–0x36)i16 × 0.00048828 → G(0xFF34)
角速度 XYZfloat,deg/sfloat,rad/si16 × 0.061035 → deg/s(0x37–0x39)i16 × 0.061035 → deg/s(0xFF37)
磁场 XYZfloat,μTfloat,μTi16 × 0.030517 → μT(0x3A–0x3C)i16 × 0.030517 → μT(0xFF3A)
横滚 / 俯仰float,degfloat,degi32 × 0.001 → deg(0x3D–0x40)i32 × 0.001 → deg(0xFF3D)
航向 yawfloat,deg,±180°float,deg,±180°i32 × 0.001 → deg,±180°(0x41–0x42)u32 × 0.001 → 0–360° 顺时针(罗盘航向);i32 × 0.001 → ±180°(0xFF41)
四元数 WXYZfloatfloati16 × 0.0001(0x46–0x49)i16 × 0.0001(0xFF46)
温度i8,°C(整数)float,°Ci16 × 0.01 → °C(0x43)i16 × 0.01 → °C(0xFF43)
气压float,Pafloat,Pai32 × 0.01 → Pa(0x44–0x45)—
系统时间u32,ms(含义见时间与时间戳)u64,μs(本地开机累计)i32,ms(0x4C–0x4D,本地开机累计)0xFF2F 年月日时分秒毫秒
UTC 日期时间—8 字节(bit6)—0xFF2F
倾角 X / Y—float,deg(bit9)i16 × 0.011 → deg(0x4A–0x4B)i32 × 0.001 → deg(0xFF4A)
MRU 位移—float,m(bit10)i16 × 0.01 → m(0x4E–0x50)—
MRU 频率—float,Hz(bit11)i16 × 0.01 → Hz(0x51–0x53)—
状态字 MAIN_STATUSu16u16u16(0x09)—

警告

跨协议解码陷阱(同一物理量在不同协议中的差异是固件既有设计,不是笔误):

  • 加速度:HI91 是 G,HI83 是 m/s²,相差 9.8 倍;Modbus / J1939 是定点 G。
  • 角速度:HI91 是 deg/s,HI83 是 rad/s,相差 57.3 倍。
  • 航向:J1939 0xFF41 一帧含两种表示,前 4 字节是顺时针 0–360° 的罗盘航向(始终按右-前-上计算),后 4 字节与其他协议一致;取错字段则方向和符号全反。
  • 温度与气压:HI91 温度是整数度;Modbus 温度和气压都带 0.01 比例因子,气压不乘比例因子会差 100 倍。
  • 系统时间:HI91 的 system_time 含义随对时状态变化,Modbus CPUTIME 始终是本地时间,两者不能互换或直接相减。
  • CANFD83 的加速度、角速度是浮点 m/s²、rad/s,不要套用 J1939 的定点比例因子。

串口二进制协议 ​

RS-232、TTL 和 USB(虚拟串口)均为流式串行接口,统一使用 HiPNUC 二进制协议输出,这是模块出厂默认的数据协议。串口参数 8N1,默认 115200 bps。

接收、组帧与解析代码统一维护在官方 SDK(C / C++、STM32、ROS、Python),本章只定义线上报文格式和原始字段单位。SDK 的 API 和样本单位以其文档为准,不要把本章比例因子再次应用到 SDK 已换算的数据上。

帧格式 ​

域值长度(字节)说明
SOF5A A52帧头同步标志
LEN1–5122数据域长度(小端,不含帧头、长度和 CRC)
CRC—2对帧头、长度、数据域的 16 位 CRC(不含 CRC 字段本身),小端
数据域—1–512以 1 字节标签(tag)开头,标签决定后续数据的类型与长度

所有多字节数值均为 小端。数据域最大 512 字节(整帧最大 518 字节)。本手册定义的 HI83 公开字段全部启用时数据域为 132 字节。

浮点型数据帧(HI91) ​

出厂默认输出帧,数据域固定 76 字节,包含状态、温度、IMU 测量数据(加速度、角速度、磁场)、气压和融合后的姿态。IMU 测量数据已经过出厂校准,不是芯片寄存器原始读数;测量数据和姿态均按输出数据轴向表达。

偏移名称类型大小单位说明
0tagu81—数据标签 0x91
1main_statusu162—状态字,见MAIN_STATUS 状态字
3temperaturei81°C模块平均温度,整数
4air_pressurefloat4Pa气压
8system_timeu324ms时间戳,见时间与时间戳
12acc_bfloat4×3G加速度 XYZ,1 G ≈ 9.8 m/s²
24gyr_bfloat4×3deg/s角速度 XYZ
36mag_bfloat4×3μT磁场 XYZ
48rollfloat4deg横滚角
52pitchfloat4deg俯仰角
56yawfloat4deg航向角,±180°
60quatfloat4×4—四元数 WXYZ

警告

HI91 的角速度单位是 deg/s、加速度单位是 G;HI83 分别是 rad/s 和 m/s²。按帧类型选择单位。

可变类型数据帧(HI83) ​

HI83 按 data_bitmap 输出不同的数据组合,帧长随配置改变,适合需要微秒时间戳、UTC、倾角或 MRU 数据,或希望按需控制带宽的场景。字段选择方法见HI83 字段选择。

固定头部 8 字节,其后按 bit 从低到高的顺序拼接被选中的数据段;未选中的段不出现,整帧相应变短。解析器必须按每帧头部的 data_bitmap 逐段累加偏移。

偏移名称类型大小说明
0tagu81数据标签 0x83
1main_statusu162状态字,见MAIN_STATUS 状态字
3status_extu81扩展状态字节,本手册不定义,通用解析器忽略
4data_bitmapu324数据段位图
8…—变长按位序排列的数据段

data_bitmap 位定义(产品未启用对应功能时,字段可能为 0 或无物理意义):

位名称类型大小单位说明
0acc_bfloat4×3m/s²载体系加速度 XYZ
1gyr_bfloat4×3rad/s载体系角速度 XYZ
2mag_bfloat4×3μT载体系磁场 XYZ
3rpyfloat4×3deg欧拉角 roll / pitch / yaw,yaw ±180°
4quatfloat4×4—四元数 WXYZ
5system_time_usu648μs本地高分辨率时间戳(开机累计,不受对时影响)
6utc—8—年偏移(u8,year−2000)、月(u8)、日(u8)、时(u8)、分(u8)、秒(u16,单位 ms,如 12 s = 12000)、保留(u8)
7air_pressurefloat4Pa气压
8temperaturefloat4°C模块平均温度
9inclinationfloat4×3deg倾角仪输出:X 轴倾角、Y 轴倾角、航向角(第三个值是右-前-上约定的 yaw,逆时针 ±180°,不是 Z 轴倾角,也不是罗盘航向);三个值都不随输出数据轴向变化
10heave_surge_swayfloat4×3mMRU 位移:垂荡、纵荡、横荡
11heave_surge_sway_frqfloat4×3HzMRU 频率:垂荡、纵荡、横荡
12–31扩展———交付专用扩展字段,本手册不定义,通用用户不要置位

注意

公开字段掩码为 0x00000FFF。禁止使用 0xFFFFFFFF 等全开配置,否则帧长和字段语义无法仅按本手册解析。

CRC 校验 ​

采用 CRC-16/XMODEM(部分工具标注为 CRC-16/CCITT):多项式 0x1021,初值 0x0000,无输入 / 输出反转,无最终异或。校验范围为帧头(2)+ 长度(2)+ 数据域,不含 CRC 字段本身。

帧解析示例(HI91) ​

一帧 HI91 共 82 字节:前 6 字节为帧头 / 长度 / CRC,其后 76 字节为数据域。示例采集于默认输出数据轴向(COORD 0)。示例报文:

text
5A A5 4C 00 14 BB 91 08 15 23 09 A2 C4 47 08 15 1C 00 CC E8 61 BE 9A 35 56 3E 65 EA 72 3F 31 D0 7C BD 75 DD C5 BB 6B D7 24 BC 89 88 FC 40 01 00 6A 41 AB 2A 70 C2 96 D4 50 41 ED 03 43 41 41 F4 F4 C2 CC CA F8 BE 73 6A 19 BE F0 00 1C 3D 8D 37 5C 3F
字段类型原始值解析值说明
帧头—5A A5—帧头
数据域长度—4C 000x004C = 7676 字节
CRC—14 BB0xBB14校验值
tag—910x91数据域起始
main_statusu1608 150x1508状态字
temperaturei82335°C
air_pressurefloat09 A2 C4 47100676Pa
system_timeu3208 15 1C 001840392ms
acc_b x/y/zfloat…−0.2206 / 0.2092 / 0.9489G
gyr_b x/y/zfloat…−0.0617 / −0.0060 / −0.0101deg/s
mag_b x/y/zfloat…7.892 / 14.625 / −60.042μT
roll / pitch / yawfloat…13.052 / 12.188 / −122.477deg
quat w/x/y/zfloat…−0.4859 / −0.1498 / 0.0381 / 0.8602—

Modbus RTU 协议 ​

Modbus RTU 支持范围以型号和交付配置为准,默认从站接口为 COM1 对应的 RS-485 通道。数据以寄存器为单位收发,每寄存器 2 字节,大端(高字节在前),标准 Modbus CRC-16 校验(初值 0xFFFF,多项式 0xA001,低字节在前)。

  • 功能码:0x03(读保持寄存器,单次最多 125 个)、0x06(写单个寄存器)、0x10(写多个寄存器,单次最多 123 个);其他功能码不响应。
  • 节点 ID:出厂默认 80(0x50),有效范围 1–247。

帧格式 ​

读寄存器(0x03):请求 ID 03 ADDR_H ADDR_L LEN_H LEN_L CRC_L CRC_H,响应 ID 03 N DATA… CRC_L CRC_H(N 为数据字节数,每寄存器高字节在前)。

写寄存器(0x06):请求 ID 06 ADDR_H ADDR_L DATA_H DATA_L CRC_L CRC_H,正常响应与请求相同(回显)。主机还应支持写入被拒绝时可能返回的 5 字节异常响应 ID 86 04 CRC_L CRC_H。

写多个寄存器(0x10):请求 ID 10 ADDR_H ADDR_L QTY_H QTY_L N DATA… CRC_L CRC_H(QTY 为寄存器数,N = 2 × QTY),正常响应 ID 10 ADDR_H ADDR_L QTY_H QTY_L CRC_L CRC_H;写入被拒绝返回 ID 90 04 CRC_L CRC_H。用于一次写入 32 位量或数组参数。

注意

主机应按功能码判断响应类型,不要只等待固定 8 字节。正常回显不保证配置已生效,关键参数应回读确认。读取未定义地址返回 0。

寄存器列表 ​

地址名称类型R/W单位 / 比例说明
0x00CTRLu16W—控制寄存器:0x0000 保存配置、0x0001 恢复出厂、0x00FF 复位
0x04UART1_BAUDu16R/W—串口波特率档位,复位后生效,见配置波特率
0x05MD_IDu16R/W—Modbus 节点 ID,1–247,立即生效
0x06PROFILEu16R/W—工作模式:0 = 6 轴、1 = 9 轴、4 / 5 / 7 = 专用模式(见工作模式),复位后生效
0x07COORDu16R/W—输出数据轴向:0 = 右-前-上、4 = ROS(见输出数据轴向),复位后生效
0x08MCAL_STARTu16W—启动地磁校准:1 = 3D、2 = 2D,其他值被拒绝
0x09MAIN_STATUSu16R—状态字,见MAIN_STATUS 状态字
0x0AMCAL_STATUSu16R—地磁校准状态:0 空闲、1 校准中、3 成功、4 失败
0x0BMCAL_PROGRESSu16R%校准进度:校准中 0–99,成功后 100
0x0DMCAL_MODEu16R—最近一次有效校准的类型:2 = 2D、3 = 3D
0x34–0x36ACC X/Y/Zi16RG,×0.00048828加速度
0x37–0x39GYR X/Y/Zi16Rdeg/s,×0.061035角速度
0x3A–0x3CMAG X/Y/Zi16RμT,×0.030517磁场
0x3D–0x3EROLL (H/L)i32Rdeg,×0.001横滚角,高字在前
0x3F–0x40PITCH (H/L)i32Rdeg,×0.001俯仰角
0x41–0x42YAW (H/L)i32Rdeg,×0.001航向角,±180°
0x43TEMPi16R°C,×0.01温度
0x44–0x45PRS (H/L)i32RPa,×0.01气压
0x46–0x49Q0–Q3i16R×0.0001四元数 W/X/Y/Z
0x4AINCLI_Xi16Rdeg,×0.011倾角仪 X
0x4BINCLI_Yi16Rdeg,×0.011倾角仪 Y
0x4C–0x4DCPUTIME (H/L)i32Rms开机累计运行时间,始终是本地时间,不随对时切换;约 24.8 天后按 i32 解码转为负值
0x4E–0x50HEAVE/SURGE/SWAYi16Rm,×0.01MRU 位移
0x51–0x53HEAVE/SURGE/SWAY_FRQi16RHz,×0.01MRU 频率
0x70–0x77PNAMEu16R—型号名,ASCII,8 寄存器
0x78SW_VERSIONu16R—固件版本
0x79BL_VERSIONu16R—Bootloader 版本
0x7F–0x82SNu16R—序列号,4 寄存器
0xA5ATT_RSTu16W—姿态零点:0 全部归零、1 航向复位、2 相对零点、3 自动校平、5 取消校平(见姿态零点与校平)
0xA6URFRu16R/W—安装方向编码(见安装方向),复位后生效;修改后已保存的姿态零点失效

地磁校准寄存器操作:按校准步骤执行完整流程,下表给出 Modbus 对应操作。

对应步骤寄存器操作
第 1 步:切换工作模式向 0x06 写 1,向 0x00 写 0x0000 保存,再写 0x00FF 复位;重启后确认 MAIN_STATUS.MAG_AIDING=1
第 3 步:执行校准向 0x08 写 1(3D)或 2(2D),随后读 0x0A 确认进入 1
第 4 步:查询状态周期读取 0x0A 和 0x0B,含义同 STAT 和 PROGRESS;校准最长约 120 s

校准成功不等于航向可靠,仍需按第 5 步验证,并结合MAIN_STATUS 状态字判断。

常用配置示例 ​

注意

以下报文均以出厂默认 ID 0x50 为例;修改 ID 后需同步修改报文 ID 字段并重算 CRC。改动 DATA 后同样需要重算 CRC。

操作报文(Hex)
保存配置50 06 00 00 00 00 84 4B
恢复出厂设置50 06 00 00 00 01 45 8B
复位50 06 00 00 00 FF C4 0B
设为 6 轴模式50 06 00 06 00 00 64 4A
设为 9 轴模式50 06 00 06 00 01 A5 8A
设为低动态 / 倾角仪模式50 06 00 06 00 07 25 88
输出数据轴向设为 ROS50 06 00 07 00 04 34 49
输出数据轴向设为右-前-上(默认)50 06 00 07 00 00 35 8A
全部归零50 06 00 A5 00 00 94 68
航向复位50 06 00 A5 00 01 55 A8
设置相对零点50 06 00 A5 00 02 15 A9
自动校平50 06 00 A5 00 03 D4 69
取消校平50 06 00 A5 00 05 54 6B

配置波特率(0x04):写入档位后向 0x00 写 0x0000 保存,再写 0x00FF 复位;重启后主机切换到新波特率并读回 0x04 验证。复位可能中断应答,以重启后的有效响应为准。

目标波特率报文(ID=0x50)目标波特率报文(ID=0x50)
480050 06 00 04 00 00 C5 8A23040050 06 00 04 00 06 45 88
960050 06 00 04 00 01 04 4A46080050 06 00 04 00 07 84 48
1920050 06 00 04 00 02 44 4B92160050 06 00 04 00 08 C4 4C
3840050 06 00 04 00 03 85 8B25600050 06 00 04 00 09 05 8C
5760050 06 00 04 00 04 C4 49
11520050 06 00 04 00 05 05 89

配置节点 ID(0x05):格式 [CURRENT_ID] 06 00 05 00 [NEW_ID] CRC,例如改为 0x51:50 06 00 05 00 51 55 B6。节点 ID 立即生效:本次写请求仍以旧 ID 回显,之后的报文必须使用新 ID 并重算 CRC;用新 ID 读回 0x05 确认,再用新 ID 保存。

设置安装方向(0xA6):DATA 为安装方向编码的十六进制值,完整对照见安装方向。

安装方向(X,Y,Z 箭头指向)编码报文(ID=0x50)
右,前,上(默认水平安装)2450 06 00 A6 00 18 64 62
右,下,前(侧装,Y 朝下)4350 06 00 A6 00 2B 24 77
右,上,后(侧装,Y 朝上)5250 06 00 A6 00 34 65 BF
上,前,左(立装,X 朝上)52050 06 00 A6 02 08 64 CE
下,前,右(立装,X 朝下)42150 06 00 A6 01 A5 A5 83

读取版本信息(0x70–0x82) ​

请求:50 03 00 70 00 13 08 5D(从 0x70 读取 19 个寄存器)。完整响应 43 字节:

text
50 03 26 [38 字节寄存器数据] [CRC_L] [CRC_H]

寄存器数据按下表解析,字节偏移从数据区首字节起算,每个寄存器高字节在前:

寄存器地址字节偏移内容
0x70–0x770–15型号名,ASCII
0x7816–17固件版本
0x7918–19Bootloader 版本
0x7A–0x7E20–29跳过
0x7F–0x8230–37序列号

读取 IMU/AHRS 数据(0x34–0x4B) ​

请求:50 03 00 34 00 18 09 8F(从 0x34 读 24 个寄存器)。响应示例:

text
50 03 30 FF 01 03 B0 06 50 FC C9 FF 7C 00 91 01 D5 FD DB FD 27 00 00 21 FF 00 00 7F F6 FF FD 73 E7 ...

数据长度 0x30 = 48 字节(24 寄存器),各物理量按比例因子换算:

加速度(G,×0.00048828):

轴寄存器值原始值物理值
XFF 01−255−0.1245
Y03 B09440.4609
Z06 5016160.7891

角速度(deg/s,×0.061035):

轴寄存器值原始值物理值
XFC C9−823−50.232
YFF 7C−132−8.057
Z00 911458.850

磁场(μT,×0.030517):

轴寄存器值原始值物理值
X01 D546914.312
YFD DB−549−16.754
ZFD 27−729−22.247

欧拉角(deg,×0.001;i32 大端,每轴 2 个寄存器 H/L):

轴寄存器值(H L)原始值(i32)物理值
Roll00 00 21 FF0x000021FF = 87038.703
Pitch00 00 7F F60x00007FF6 = 3275832.758
YawFF FD 73 E70xFFFD73E7 = −166937−166.937

警告

欧拉角字节序:欧拉角为 32 位大端、跨 2 个寄存器(高字在前),必须先拼成完整 i32 再乘比例因子;FF FD 73 E7 → 0xFFFD73E7 = −166937 → −166.937°。

读取 MRU 数据(0x4E–0x53) ​

请求:50 03 00 4E 00 06 A8 5E(从 0x4E 读 6 个寄存器)。响应数据依次为 HEAVE、SURGE、SWAY、HEAVE_FRQ、SURGE_FRQ、SWAY_FRQ,均为 i16;位移比例因子 ×0.01 m,频率比例因子 ×0.01 Hz。

CAN 协议 ​

新项目的 CAN 接入请使用 J1939:上电即以默认周期广播数据,配置也通过 J1939 报文完成。支持 CAN FD 的产品另可启用 CANFD83 可变帧。CANopen 仅供已有项目维护,见本章末尾的 CANopen(CAN)。

集成前检查:

检查项J1939 / CANFD83
协议支持确认设备支持所用协议
CAN 波特率经典 CAN 默认 500 kbit/s,CAN FD 产品默认 1 Mbit/s(数据段 4 Mbit/s);以设备当前配置为准
节点地址默认 8,可选 1–126
帧类型29 位扩展帧;CANFD83 为 FD + BRS 扩展帧
默认输出加速度、角速度、俯仰横滚、航向四个 PGN 以 100 Hz 广播;CANFD83 默认关闭
硬件终端电阻、屏蔽、线序和收发器电平见硬件手册

J1939(CAN) ​

经典 CAN 数据输出采用 SAE J1939 的 29 位扩展标识符;CANFD83 沿用此标识符布局,数据域采用单独定义的 CAN FD 格式。

CAN 扩展帧格式 ​

text
CAN_ID = (P<<26)|(R<<25)|(DP<<24)|(PF<<16)|(PS<<8)|SA

本产品所有数据 PGN 均为厂商自定义格式(PF = 0xFF),PS 为 PGN 低字节,SA 为设备节点地址。优先级 3、节点 8 时,PGN 0xFF41 的 CAN ID = 0x0CFF4108。

警告

J1939 数据域为 小端:32 位值 0x12345678 在帧中为 78 56 34 12。

协议参数 ​

参数值说明
标称波特率默认 500 kbit/s(CAN FD 产品 1 Mbit/s)可配置,见配置协议
帧格式29 位扩展帧经典 PGN 为 CAN 2.0B,8 字节;CANFD83 为 CAN FD
帧优先级3(固定)—
节点地址 SA默认 8可配置 1–126;数据 PGN 以广播地址 255 发送,不要把设备设为 255
数据格式小端多字节低位在前

PGN 消息列表 ​

优先级 3 时 CAN ID 为 0x0CFF[PS][SA]。

PGN(hex)PGN(十进制)PS名称默认周期适用
0xFF2F653270x2F时间信息(UTC 或本地时间)关闭全部
0xFF34653320x34三轴加速度10 ms全部
0xFF37653350x37三轴角速度10 ms全部
0xFF3A653380x3A三轴磁场关闭9 轴产品
0xFF3D653410x3D俯仰 / 横滚角10 ms全部
0xFF41653450x41航向角10 ms全部
0xFF43653470x43温度关闭全部
0xFF46653500x46四元数关闭全部
0xFF4A653540x4A倾角仪输出关闭倾角仪产品
0xFF5B653710x5BCANFD83 可变帧关闭支持 CAN FD 的产品

各 PGN 的发送周期可通过配置协议修改。以下为经典 CAN PGN 的 8 字节数据域,未列出的字节为保留,固定 0。

0xFF2F 时间信息

字节字段类型单位说明
0–5年 / 月 / 日 / 时 / 分 / 秒u8×6—年为 year−2000,如 26 = 2026
6–7毫秒u16ms小端

示例:CAN ID 0x0CFF2F08,数据 1A 06 12 0E 1E 2D 58 02 → 2026-06-18 14:30:45.600 UTC。完成 UTC 对时后输出有效日期时间;未对时时年 / 月 / 日为 0,时 / 分 / 秒 / 毫秒来自本地 24 h 回绕时间,不可作为绝对 UTC,同步状态以 MAIN_STATUS.UTC_UNSYNC 判断。

0xFF34 加速度 / 0xFF37 角速度 / 0xFF3A 磁场(结构相同,比例因子不同;满量程加速度 ±16 G、角速度 ±2000 deg/s、磁场 ±1000 μT)

字节字段类型比例因子单位
0–1Xi16加速度 0.00048828 / 角速度 0.061035 / 磁场 0.030517G / deg/s / μT
2–3Yi16同上同上
4–5Zi16同上同上
6–7保留——固定 0

示例:CAN ID 0x0CFF3408,数据 EC FF 23 00 00 08 00 00 → X = 0xFFEC = −20 → −0.0098 G,Y = 0x0023 = 35 → 0.0171 G,Z = 0x0800 = 2048 → 1.0000 G(模块水平静止)。

0xFF3D 俯仰 / 横滚

字节字段类型比例因子单位
0–3横滚 Rolli320.001deg
4–7俯仰 Pitchi320.001deg

0xFF41 航向(一帧含两种表示,见航向约定)

字节字段类型比例因子单位
0–3罗盘航向,0–360°,顺时针为正(始终按右-前-上计算)u320.001deg
4–7航向,±180°,逆时针为正(随输出数据轴向)i320.001deg

示例(COORD 0):CAN ID 0x0CFF4108,数据 6D DE 01 00 93 21 FE FF → 前 4 字节 0x0001DE6D = 122477 → 122.477°(顺时针);后 4 字节 0xFFFE2193 = −122477 → −122.477°(逆时针),两者描述同一航向。ROS 9 轴下后 4 字节比该值大 90°,前 4 字节不变。

0xFF46 四元数

字节字段类型比例因子
0–1 / 2–3 / 4–5 / 6–7qw / qx / qy / qzi160.0001

0xFF4A 倾角仪(倾角仪产品)

字节字段类型比例因子单位
0–3X 轴倾角i320.001deg
4–7Y 轴倾角i320.001deg

0xFF43 温度

字节字段类型比例因子单位
0–1温度i160.01°C
2–3保留——固定 0
4–7保留u32—固定占位值 999,不是气压,请勿解析

CANFD83 可变帧 ​

适用于支持 CAN FD 且固件启用 CANFD83 的产品。典型标称速率 1 Mbit/s、数据段速率 4 Mbit/s,以设备当前配置为准;总线设备须兼容 CAN FD。

PGN=0xFF5B,优先级 3,扩展 ID=0x0CFF5B00 | node_id,FD=1、BRS=1。

帧格式 ​

固定头部 8 字节,随后按 MAP 位从低到高拼接所选字段。多字节整数及 IEEE 754 float32 均为小端。

偏移字节数字段类型说明
04MAPuint32本帧字段位图
42main_statusuint16见 MAIN_STATUS,bit12=0
61ins_statusuint8导航状态
71sequenceuint8编码序号,0–255 回卷
bit字段类型字节数单位顺序 / 含义
0ACC_Bfloat32×312m/s²X、Y、Z
1GYR_Bfloat32×312rad/sX、Y、Z
2MAG_Bfloat32×312μTX、Y、Z;需产品支持磁力计
3RPYfloat32×312degroll、pitch、yaw;yaw 为 ±180°
4QUATfloat32×416—w、x、y、z
5SYSTEM_TIMEuint648μs单调 IMU 采样时刻
6UTCpacked8—见下文
8TEMPERATUREfloat324°C温度

UTC 布局:year-2000:u8、month:u8、day:u8、hour:u8、minute:u8、second*1000+ms:u16le、reserved:u8=0。无有效日期时 year=0;同步状态见 MAIN_STATUS bit11。

MAP 支持位掩码为 0x0000017F。配置必须非零、不含保留位,且逻辑长度 8 + 所选字段字节数之和 ≤ 64。0x17F 全部选中为 92 字节,非法写入被拒绝并保留原 MAP。

默认 MAP=0x0000012B,逻辑长度 56 字节,总线长度 64 字节(DLC=15),尾部补零。其他配置同样向上取最近的合法长度,填充字节不参与解析。

CAN FD 数据字节数12162024324864
DLC 编码9101112131415
J1939 配置 ​

沿用 配置协议,请求为经典 CAN、8 字节,FD=0、BRS=0。

参数地址默认生效
CANFD83 MAP0x01800x12B下一帧
CANFD83 周期0x015B0(关闭)立即,单位 ms
周期输出总开关0x009D1(开)立即,0/1
数据段速率索引0x009B11保存后重启

周期输出要求总开关为 1;0x8000 为设备支持的 SYNC_IN 触发模式,其余非零 16 位值为周期 ms。数据段速率索引:0=1 Mbit/s、10=2 Mbit/s、11=4 Mbit/s;标称速率地址为 0x009A。

节点 8、主机地址 0x55:请求 ID=0x0CEF0855,响应 ID=0x0CEF5508。写成功回显请求,读返回当前值;非法 MAP/地址不应答。

操作请求数据(8 字节)
MAP = 0x12B80 01 06 00 2B 01 00 00
读取 MAP80 01 03 00 00 00 00 00
周期 = 10 ms5B 01 06 00 0A 00 00 00
报文示例 ​

构造数据,非实测采集:ID=0x0CFF5B08、FD=1、BRS=1、DLC=15。

text
2B 01 00 00 00 00 00 7E
00 00 80 3F 00 00 00 C0
00 00 18 41 00 00 80 3E
00 00 00 BF 00 00 80 3F
00 00 20 41 00 00 A0 C1
00 00 F0 41 40 42 0F 00
00 00 00 00 00 00 CC 41
00 00 00 00 00 00 00 00

解析:ACC_B=[1, -2, 9.5] m/s²,GYR_B=[0.25, -0.5, 1] rad/s,RPY=[10, -20, 30] deg,SYSTEM_TIME=1000000 μs,TEMPERATURE=25.5 °C。末尾 8 字节为填充。

配置协议 ​

主机通过专用配置 PGN 读写设备参数,参数地址与 Modbus 寄存器地址一致。

配置帧格式:CAN ID = 0x0CEF[DA][SA](DA = 设备节点地址或广播 255,SA = 主机地址),数据 8 字节:

字节字段类型说明
0–1ADDRu16参数地址,小端
2CMDu80x06 写,0x03 读
3保留u8主机写 0,设备原样回显
4–7VALu32数据值,小端

应答规则:

请求应答说明
点对点写(DA = 节点地址)CAN ID 0x0CEF55[节点地址],回显请求写成功
点对点读(DA = 节点地址)CAN ID 0x0CEF55[节点地址],ADDR + CMD + 当前值读成功
广播写(DA = 255)无已执行,必要时读回确认
地址非法、数值越界或不支持无主机按超时判失败

应答的目的地址固定为 0x55,源地址为设备节点地址:节点 8 的应答 CAN ID 为 0x0CEF5508。建议主机以 SA = 0x55 发送请求,便于过滤接收。

复位和恢复出厂可能在回显前重启,以重启后的有效响应确认结果,不要因未收到回显而反复发送复位。

常用配置(默认节点 8,请求 CAN ID 0x0CEF0855;[VAL] 为 4 字节 u32 小端,如 100 ms 写作 64 00 00 00):

数据说明
2F 01 06 00 [VAL]PGN 0xFF2F(时间信息)周期
34 01 06 00 [VAL]PGN 0xFF34(加速度)周期
37 01 06 00 [VAL]PGN 0xFF37(角速度)周期
3A 01 06 00 [VAL]PGN 0xFF3A(磁场)周期
3D 01 06 00 [VAL]PGN 0xFF3D(俯仰 / 横滚)周期
41 01 06 00 [VAL]PGN 0xFF41(航向)周期
43 01 06 00 [VAL]PGN 0xFF43(温度)周期
46 01 06 00 [VAL]PGN 0xFF46(四元数)周期
4A 01 06 00 [VAL]PGN 0xFF4A(倾角仪)周期
5B 01 06 00 [VAL]PGN 0xFF5B(CANFD83)周期,默认关闭,见 CANFD83
80 01 06 00 [VAL]CANFD83 字段位图,见 CANFD83
9D 00 06 00 01 00 00 00打开全部周期数据输出(默认)
9D 00 06 00 00 00 00 00关闭全部周期数据输出
9A 00 06 00 [VAL]CAN 标称波特率:0 = 1000k、1 = 800k、2 = 500k、3 = 250k、4 = 125k;保存并复位后生效
9B 00 06 00 [VAL]CAN FD 数据段速率索引,见 CANFD83;保存并复位后生效
9C 00 06 00 [VAL]节点地址,1–126;保存并复位后生效
06 00 06 00 [VAL]工作模式,取值见工作模式;保存并复位后生效
07 00 06 00 [VAL]输出数据轴向:0 = 右-前-上、4 = ROS,见输出数据轴向;保存并复位后生效
A6 00 06 00 [VAL]安装方向编码,见安装方向;保存并复位后生效,已保存的姿态零点随之失效
A5 00 06 00 [VAL]姿态零点:0 全部归零 / 1 航向复位 / 2 相对零点 / 3 自动校平 / 5 取消校平,见姿态零点与校平
00 00 06 00 00 00 00 00保存配置
00 00 06 00 01 00 00 00恢复出厂设置(自动保存并复位)
00 00 06 00 FF 00 00 00复位

周期取值:0 关闭;推荐 5 / 10 / 20 / 50 / 100 / 200 / 500 / 1000 ms;0x8000(写作 00 80 00 00)为 SYNC_IN 触发模式,该 PGN 不再定时发送,改为在 SYNC_IN 上升沿输出一帧。周期写入立即生效。

注意

示例:向 0x0CEF0855 发送 37 01 06 00 64 00 00 00,把角速度 PGN 改为 100 ms(10 Hz);设备应答 0x0CEF5508,数据与请求相同。发送 34 01 06 00 00 80 00 00 则把加速度 PGN 改为 SYNC_IN 触发。读取时把 CMD 改为 0x03、VAL 写 0,例如 9C 00 03 00 00 00 00 00 读节点地址。

时间同步 ​

PGN 0xFF2F 只用于 输出 模块当前时间,不作为对时输入。需要 UTC 同步时使用 PPS 对时(PPS + 串口 RMC)。

CANopen(CAN) ​

固件默认支持J1939协议,CANopen协议输出定制固件,如需使用请联系我司.

支持 CANopen 的固件同时支持 J1939 与 CANopen:出厂时 J1939 周期输出已开启,而所有 CANopen TPDO 周期为 0,总线上默认只有 J1939 数据。启用 CANopen 不需要更换固件:按需关闭 J1939 周期输出(配置协议地址 0x9D 写 0),再用 SDO 打开所需 TPDO 的周期即可。CANopen 使用 11 位标准帧,节点 ID 与 J1939 节点地址共用,默认 8。

TPDO 映射 ​

通道帧 ID参数索引DLC数据类型 / 比例 / 单位
TPDO10x180+ID0x18006加速度 X/Y/Zi16,mG(0.001 G)
TPDO20x280+ID0x18016角速度 X/Y/Zi16,0.1 deg/s
TPDO30x380+ID0x18026欧拉角 Roll/Pitch/Yawi16,0.01 deg
TPDO40x480+ID0x18038四元数 W/X/Y/Zi16,×0.0001
TPDO60x680+ID0x18044气压i32,Pa
TPDO70x780+ID0x18058倾角仪 X/Yi32,0.01 deg

TPDO5 未使用。所有多字节字段低字节在前。CANopen 的比例因子与其他协议不同,不要套用 Modbus / J1939 的比例因子。

示例(节点 8):ID 0x188,数据 4A 00 1F 00 C8 03 → 加速度 X = 74 mG、Y = 31 mG、Z = 968 mG;ID 0x288,数据 15 00 14 01 34 00 → 角速度 X = 2.1、Y = 27.6、Z = 5.2 deg/s。

SDO 配置 ​

采用 expedited SDO,主机发送 0x600+ID,从机响应 0x580+ID,数据 8 字节:CS | Index_L | Index_H | SubIndex | Data0..Data3(Index 与 Data 小端)。

CS方向含义
0x23 / 0x2B / 0x2F主机→从机写 4 / 2 / 1 字节
0x40主机→从机读请求
0x60从机→主机写成功
0x43 / 0x4B / 0x4F从机→主机读 4 / 2 / 1 字节响应
0x80从机→主机SDO abort,0x06090030 数值超范围、0x06010000 不支持访问

厂商对象索引 = 0x2000 + 参数地址(与 Modbus / J1939 地址一致)。常用指令(节点 8,发送到 0x608):

操作数据
修改节点 ID(0x209C,1–126)23 9C 20 00 [ID] 00 00 00
CAN 波特率(0x209A):0 = 1000k、1 = 800k、2 = 500k、3 = 250k、4 = 125k23 9A 20 00 [VAL] 00 00 00
姿态相对零点 / 自动校平 / 取消校平(0x20A5)23 A5 20 00 02 00 00 00 / … 03 … / … 05 …
保存配置 / 复位 / 恢复出厂(0x2000)23 00 20 00 00 00 00 00 / … FF … / … 01 …
读取节点 ID40 9C 20 00 00 00 00 00

节点 ID 和波特率写入后保存(向 0x2000 写 0x00),再复位(写 0xFF)生效,复位后主机同步切换。复位或恢复出厂可能中断 SDO 应答,以重启后的有效响应确认结果。

TPDO 周期:写参数索引的子索引 5,单位 ms,0 关闭,立即生效并掉电保持。以加速度(0x1800)为例:2B 00 18 05 0A 00 00 00 → 10 ms(100 Hz);2B 00 18 05 64 00 00 00 → 100 ms;2B 00 18 05 00 00 00 00 → 关闭。其他通道把索引低字节改为 01(角速度)/ 02(欧拉角)/ 03(四元数)/ 04(气压)/ 05(倾角仪),例如角速度 100 Hz:2B 01 18 05 0A 00 00 00。

同步模式:把传输类型(子索引 2)写为 0x01 即转为同步模式,收到同步帧(CAN_ID=0x80,无数据)时各发送一帧;写 0xFF 恢复异步定时(默认)。以 TPDO1 为例:2F 00 18 02 01 00 00 00 / 2F 00 18 02 FF 00 00 00。传输类型不掉电保持,复位后恢复异步。

心跳:写 0x1017.0 设置周期(ms,0 禁用),例如 2B 17 10 00 64 00 00 00 → 100 ms,掉电保持。

故障定位 ​

先按现象定位,再进入对应章节检查。排查通信问题时先核对接线和当前配置,不要把恢复出厂或升级固件作为第一步。

现象先检查继续排查
串口无响应供电、接线、端口与波特率;命令是否全大写并以 \r\n 结束按第一次上手只读验证;对照命令格式与响应
Modbus 无响应或异常响应节点 ID、波特率、请求 CRC;收到 86 04 说明写入被拒绝对照寄存器列表的可写范围
修改通信参数后失联主机是否已切换到设备生效的波特率或节点 ID;保存、复位与切换顺序对照串口波特率或配置波特率重做
CAN 收不到数据交付协议、接线与终端电阻、波特率、标准帧 / 扩展帧;CANFD83 另需核对 FD / BRS查CAN 协议集成前检查,再核对周期输出总开关 0x9D
有报文但数值异常帧长、CRC、偏移、数据类型、字节序与比例因子;HI83 按每帧位图解析查数据字典和对应协议的字段表
姿态方向或航向不符合预期安装方向、输出数据轴向、6 / 9 轴模式;相对航向不是地磁航向;右-前-上与 ROS 的俯仰符号相反、9 轴航向相差 90°;修改安装方向后旧零点已失效查坐标系与方向约定、安装方向、输出数据轴向、姿态零点与校平
航向漂移或跳变6 轴模式的航向漂移是正常现象;9 轴看 MAG_DIST 和磁环境查地磁校准与磁环境
地磁校准失败或校准后航向异常校准状态、安装是否固定、磁环境与旋转覆盖按故障排查流程逐项检查
高帧率丢帧波特率是否足够按附录 C估算后提高波特率
UTC 未同步PPS 是否接入、RMC 是否有效且与脉冲配对查PPS 对时

仍无法定位时,请向技术支持提供:产品型号与 LOG VERSION 输出、接口及当前通信参数、操作顺序和原始收发报文;姿态或航向问题同时提供安装方向与使用环境说明。

附录 A — 四元数 / 欧拉角 / 旋转矩阵互转 ​

四元数顺序为 WXYZ(q0 为标量部分),Qb2n 表示载体系(b)到世界系(n)的旋转。右-前-上(COORD 0)使用 312 公式,ROS(COORD 4)使用 321 公式,两者的坐标轴定义见坐标系与方向约定。两种配置的载体轴不同,互相换算时应从四元数按对应公式重新提取欧拉角,不能只给某个角加减 90°。

四元数转旋转矩阵 ​

给定 Qb2n=[q0,q1,q2,q3]T,方向余弦矩阵为:

Cb2n=[q02+q12−q22−q322(q1q2−q0q3)2(q1q3+q0q2)2(q1q2+q0q3)q02−q12+q22−q322(q2q3−q0q1)2(q1q3−q0q2)2(q2q3+q0q1)q02−q12−q22+q32]

东北天(ENU)— 312 旋转顺序(先 Z,再 X,最后 Y) ​

  • pitch(θ):绕 X 轴,范围 [−π2,π2]
  • roll(φ):绕 Y 轴,范围 [−π,π]
  • yaw(ψ):绕 Z 轴,范围 [−π,π]

四元数转欧拉角:

pitch=arcsin⁡(2(q0q1+q2q3))roll=−atan2(2(q1q3−q0q2), q02−q12−q22+q32)yaw=−atan2(2(q1q2−q0q3), q02−q12+q22−q32)

欧拉角转四元数(cp=cos⁡pitch2、sp=sin⁡pitch2,cr/sr、cy/sy 同理):

q0=cpcrcy−spsrsyq1=spcrcy−cpsrsyq2=cpsrcy+spcrsyq3=cpcrsy+spsrcy

ROS(REP-103)— 321 旋转顺序(先 Z,再 Y,最后 X) ​

ROS 配置下载体系为前、左、上(FLU),世界系为东北天 ENU;9 轴航向以车头朝东为 0,6 轴等相对航向模式开机为 0:

  • roll(φ):绕 X 轴,范围 [−π,π]
  • pitch(θ):绕 Y 轴,范围 [−π2,π2]
  • yaw(ψ):绕 Z 轴,范围 [−π,π]

四元数转欧拉角:

roll=atan2(2(q0q1+q2q3), 1−2(q12+q22))pitch=arcsin⁡(2(q0q2−q1q3))yaw=atan2(2(q0q3+q1q2), 1−2(q22+q32))

欧拉角转四元数(cr=cos⁡roll2、sr=sin⁡roll2,cp/sp、cy/sy 同理):

q0=crcpcy+srspsyq1=srcpcy−crspsyq2=crspcy+srcpsyq3=crcpsy−srspcy

上述 321 公式与航空常用的北东地(NED)欧拉角提取公式相同,只是坐标轴指向不同;本手册不定义 NED 输出配置。

附录 B — 固件升级 ​

如需升级,请联系技术支持并提供产品型号和 LOG VERSION 查询结果,由技术支持确认适用的固件文件(.hex);请勿使用其他型号的固件。取得文件后,使用 CHCenter 上位机按下图步骤升级。

注意

升级前用 LOG VERSION 核对型号并记录当前配置,确认固件文件与产品型号匹配;升级过程中请勿断电。

附录 C — 输出带宽与波特率 ​

数据帧能否稳定输出取决于 帧长 × 帧率 是否在串口带宽之内。以 8N1(每字节 10 bit)估算:

最大帧率 (Hz)≈波特率/10单帧字节数

实际应用建议再预留 10~20% 余量。HI91 单帧 82 字节(6 字节帧头 / 长度 / CRC + 76 字节数据域),各波特率下的推荐最大帧率:

协议单帧字节9600115200230400460800921600
HI918210 Hz100 Hz250 Hz500 Hz1000 Hz

HI83 为变长帧,按所选字段累加帧长后代入上式。默认 0x000000FF 单帧约 98 字节(数据域 92 + 6),100 Hz 约需 98 kbit/s,115200 bps 余量偏紧,建议 230400 及以上。固件会拒绝超出带宽的输出配置或波特率设置。

附录 D — 出厂默认配置 ​

典型默认配置如下,具体以产品交付为准。

配置项典型默认值可选范围生效时机
串口波特率(COM1–4)11520010 档,见串口波特率立即
默认输出帧HI91 @ 100 Hz(COM1、COM2)—立即
HI83 输出关闭;MAP 0x000000FF见 HI83输出开关立即;MAP 保存、重启并确认
工作模式6 轴或 9 轴,见产品交付0 / 1 / 4 / 5 / 7复位后
输出数据轴向右-前-上(0)右-前-上 / ROS复位后
安装方向 URFR24(水平,Z 朝上)24 种编码复位后
Modbus 节点 ID801–247立即
CAN 节点地址81–126复位后
CAN 标称波特率500 kbit/s(CAN FD 产品 1 Mbit/s)见配置协议复位后
J1939 周期输出加速度 / 角速度 / 俯仰横滚 / 航向 @ 100 Hz,总开关开见配置协议立即
CANFD83关闭;MAP 0x12B;数据段 4 Mbit/s见 CANFD83立即 / 下一帧 / 复位后
CANopen全部 TPDO 周期 0(不输出),心跳关闭见 CANopen立即

附录 E — 缩略词与术语表 ​

缩写 / 术语全称 / 含义
IMUInertial Measurement Unit,惯性测量单元(加速度计 + 陀螺仪,可含磁力计)
AHRSAttitude and Heading Reference System,姿态航向参考系统(9 轴,绝对航向)
VRUVertical Reference Unit,垂直参考单元(6 轴,相对航向)
MRUMotion Reference Unit,运动参考单元(海浪补偿输出)
ENU东北天世界坐标系(见坐标系与方向约定)
RFU / FLU右前上 / 前左上载体坐标系;FLU 是 ROS 的载体轴约定
ROS / REP-103机器人操作系统及其坐标约定:载体前-左-上、世界东-北-天,见输出数据轴向
URFR安装方向编码(见安装方向)
COORD输出数据轴向配置(见输出数据轴向)
MAIN_STATUS16 位主状态字(见MAIN_STATUS 状态字)
MCALMagnetometer Calibration,地磁校准
USRCAL用户级陀螺比例校准
PMUXPin Multiplexing,多功能 IO 复用
SYNC_IN / PPS同步脉冲输入 / 秒脉冲,用于触发与对时
SOUTSync Output,COM1 数据帧发送标记脉冲
RMCNMEA 推荐最简定位信息语句,PPS 对时用的时间消息
HI91 / HI83HiPNUC 二进制数据帧:定长浮点 / 变长位图
CANFD83HI83 字段布局的 CAN FD 数据帧
SOFStart of Frame,帧头同步标志(5A A5)
CRCCyclic Redundancy Check,循环冗余校验
PGNParameter Group Number,J1939 参数组编号
SA / DASource / Destination Address,J1939 源 / 目的地址
TPDO / SDOCANopen 发送过程数据对象 / 服务数据对象
DBCCAN 数据库文件,描述 CAN 信号定义,供 CANoe / BusMaster 等导入
Heave / Surge / Sway垂荡 / 纵荡 / 横荡,船舶三轴周期运动

附录 F — 开发资源与技术支持 ​

资源用途获取
CHCenter 上位机设备连接、参数配置、数据曲线 / 姿态可视化、数据记录与回放、固件升级www.hipnuc.com
C / C++、STM32、ROS、Python SDK按平台接收、解析和使用设备数据驱动与例程
J1939 DBCCAN 信号定义,便于 CAN 工具导入CAN 数据库
固件升级联系技术支持确认适用固件,通过 CHCenter 升级附录 B

新产品与资料信息可通过官方网站及公众号获取。

官网:www.hipnuc.com

微信公众号:

Telegram:

最后更新:

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