指令与编程手册
文档版本: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 结束。以下为响应格式示例,具体信息以实际设备为准(> 为主机发送,其余为模块返回):
> 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 指天)。航向零点随工作模式和输出数据轴向而定,见航向约定。 |
旋转正方向遵循右手定则:右手拇指指向轴正向,四指弯曲方向即为该轴正旋转方向。

姿态表示

模块同时输出 欧拉角 与 四元数 两种姿态表示,两者描述的是同一个载体系到世界系的旋转
- 欧拉角:横滚
roll、俯仰pitch、航向yaw,单位度。量程 roll ∈ [−180°, 180°],pitch ∈ [−90°, 90°],yaw ∈ [−180°, 180°]。 - 四元数:顺序 WXYZ(
为标量部分)。
欧拉角的旋转顺序、各角所绕的轴和正方向随输出数据轴向而变,这是最容易套错公式的地方:
| 输出数据轴向 | 载体系 | 旋转顺序 | roll 绕 | pitch 绕 | yaw 绕 | pitch 为正 | roll 为正 |
|---|---|---|---|---|---|---|---|
右-前-上(COORD 0,默认) | 右前上 RFU | 312(先 Z,再 X,最后 Y) | Y 轴 | X 轴 | Z 轴 | 抬头 | 右侧下沉 |
ROS(COORD 4,REP-103) | 前左上 FLU | 321(先 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 |
| float | IEEE-754 单精度浮点 | 4 |
| double | IEEE-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 时间 |
|---|---|
| 0 | 00:00:00.000 |
| 3 661 000 | 01:01:01.000 |
| 43 200 000 | 12:00:00.000 |
| 86 399 999 | 23: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 | 保留 | — | — |
| 3 | WB_CONV | 陀螺零偏未收敛,精度较差(建议静止 3~5 s) | 零偏收敛良好 |
| 4 | MAG_DIST | 9 轴模式下磁场状态异常,航向精度可能降低 | 磁场正常,或处于 6 轴模式 |
| 5 | ACC_SAT | 当前或最近 2 s 内加速度计量程饱和 | 连续 2 s 无饱和 |
| 6 | GYR_SAT | 当前或最近 2 s 内陀螺仪量程饱和 | 连续 2 s 无饱和 |
| 7 | ATT_CONV | 姿态估计未充分收敛,精度较差(建议静止片刻) | 姿态精度正常 |
| 8 | 保留 | — | — |
| 9 | STATIC | 设备被判定为静止 | 设备未判定为静止 |
| 10 | MAG_AIDING | 磁辅助使能(9 轴模式),航向可靠性还需结合磁场状态判断 | 磁辅助关闭(6 轴模式) |
| 11 | UTC_UNSYNC | UTC 未 同步,system_time 为本地毫秒计数 | UTC 已同步,system_time 为当日 UTC 毫秒 |
| 12 | SOUT_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 映射 |
三种接口的保存与复位操作:
| 接口 | 保存配置 | 复位 | 恢复出厂 |
|---|---|---|---|
| ASCII | SAVECONFIG | REBOOT | FRESET |
| 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 档:48009600192003840057600115200230400256000460800921600。
示例:SERIALCONFIG 921600、SERIALCONFIG COM2 460800。
操作步骤(修改当前连接的串口时):
- 记录当前波特率,确认主机支持目标波特率;
- 发送命令,模块在 旧波特率 下返回
OK,然后立即切换; - 主机切换到新波特率,发送
LOG COMCONFIG确认BAUD=为目标值; - 执行
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.002 | COM2 上 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 1 | HI91 改为 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 VERSION | PNAME(型号)、BUILD、UUID、SN、APP_VER(固件版本)、BL_VER |
LOG COMCONFIG | 当前串口的 BAUD,各数据帧的 ONTIME(单位 ms)或 ONMARK,HI83 的 MAP |
LOG USRCONFIG | PROFILE(工作模式)、URFR(安装方向)、COORD(输出数据轴向) |
LOG MCAL STAT | 地磁校准的 STAT 和 PROGRESS |
注意
LOG COMCONFIG 返回的 ONTIME 单位是毫秒,设置命令的单位是秒:读回 ONTIME=20 对应 LOG HI91 ONTIME 0.02。
工作模式
工作模式决定姿态解算使用哪些传感器和运动约束,通过 CONFIG ATT MODE <VAL> 设置,复位或重新上电后生效。
| VAL | 模式 | 适用场景 |
|---|---|---|
| 0 | 6 轴(VRU) | 只用加速度计和陀螺仪,输出 相对航向(上电为 0);不受磁场影响,适合室内、机器人、近电机等场景 |
| 1 | 9 轴(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 | 车头朝北 |
| 4 | ROS(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 | +X | 1 | −X |
| 2 | +Y | 3 | −Y |
| 4 | +Z | 5 | −Z |
三个方向必须构成右手系,共 24 种合法编码。实际使用时按模块在载体上的物理朝向直接查下表:「箭头指向」列是印字 X / Y / Z 箭头在载体上的实际指向,方向以载体为准:前 = 车头方向,右 = 驾驶员的右手边。DATA 列是编码的十六进制值,供 Modbus 寄存器 0xA6 和 J1939 地址 0x00A6 使用。
CHCenter 配置对话框的「安装设置」页用「X 箭头指向」「Y 箭头指向」两个下拉框选择,Z 自动确定,与下表第一列一一对应;Modbus 和 J1939 配置窗口也有该页。倾角仪产品没有该页。
| 箭头指向(X,Y,Z) | 命令 | DATA(hex) | 说明 |
|---|---|---|---|
| 右,前,上 | CONFIG IMU URFR 24 | 0018 | 默认,水平安装 |
| 右,后,下 | CONFIG IMU URFR 35 | 0023 | 绕 X 轴翻转倒装 |
| 右,下,前 | CONFIG IMU URFR 43 | 002B | 侧装,Y 朝下 |
| 右,上,后 | CONFIG IMU URFR 52 | 0034 | 侧装,Y 朝上 |
| 左,前,下 | CONFIG IMU URFR 125 | 007D | 绕 Y 轴翻转倒装 |
| 左,后,上 | CONFIG IMU URFR 134 | 0086 | 水平安装,绕 Z 转 180° |
| 左,上,前 | CONFIG IMU URFR 142 | 008E | 左向立装,Y 朝上 |
| 左,下,后 | CONFIG IMU URFR 153 | 0099 | 左向立装,Y 朝下 |
| 前,右,下 | CONFIG IMU URFR 205 | 00CD | 倒装,X 沿车头 |
| 后,右,上 | CONFIG IMU URFR 214 | 00D6 | 水平安装,绕 Z 转 −90° |
| 上,右,前 | CONFIG IMU URFR 240 | 00F0 | 立装,X 朝上 |
| 下,右,后 | CONFIG IMU URFR 251 | 00FB | 立装,X 朝下 |
| 前,左,上 | CONFIG IMU URFR 304 | 0130 | 水平安装,绕 Z 转 +90° |
| 后,左,下 | CONFIG IMU URFR 315 | 013B | 倒装,X 沿车尾 |
| 下,左,前 | CONFIG IMU URFR 341 | 0155 | 左向立装,X 朝下 |
| 上,左,后 | CONFIG IMU URFR 350 | 015E | 左向立装,X 朝上 |
| 前,上,右 | CONFIG IMU URFR 402 | 0192 | 前向立装,Z 朝右 |
| 后,下,右 | CONFIG IMU URFR 413 | 019D | 后向立装,Z 朝右 |
| 下,前,右 | CONFIG IMU URFR 421 | 01A5 | 立装,X 朝下、Z 朝右 |
| 上,后,右 | CONFIG IMU URFR 430 | 01AE | 立装,X 朝上、Z 朝右 |
| 前,下,左 | CONFIG IMU URFR 503 | 01F7 | 前向立装,Z 朝左 |
| 后,上,左 | CONFIG IMU URFR 512 | 0200 | 后向立装,Z 朝左 |
| 上,前,左 | CONFIG IMU URFR 520 | 0208 | 立装,X 朝上、Z 朝左 |
| 下,后,左 | CONFIG IMU URFR 531 | 0213 | 立装,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 |
操作步骤:
- 将模块连同载体放在水平、平整的地面,环境温度稳定、无强振动;
- 发送
CONFIG USRCAL START 720(以旋转 2 圈为例); - 以 20~100 deg/s 匀速水平旋转 720°,方向任意,中途不要停顿或反向;
- 发送
CONFIG USRCAL STOP。
STOP 返回 ERR 时,请检查是否先执行了 START、是否保持水平并绕竖直轴旋转,以及实际旋转角度是否与设定值一致。
警告
USRCAL 是精密校准,只在具备可靠角度基准时使用。错误操作可能增大航向误差;结果异常时不要反复校准,请联系技术支持。
同步功能
同步功能使用 SYNC_IN/PPS 输入引脚和 SOUT 输出引脚,包含三种用途:外部脉冲触发数据输出、PPS 加时间消息对时、SOUT 标记数据帧发送时刻。引脚位置见硬件手册,引脚复用见多功能 IO 复用。
SYNC_IN 触发输出
模块检测到 SYNC_IN/PPS 引脚上升沿后,把配置为脉冲触发模式的数据帧各输出一帧;这些帧不再周期发送。
引脚内部下拉,电平 ≤ 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 ms | 1000 ms |
| t1 | 秒脉冲高电平时间 | 上升沿有效 | 10~50 ms |
| t2 | RMC 语句传输时间 | 与波特率相关 | — |
| t3 | RMC 语句相对最近一次脉冲上升沿的延迟 | < 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 为引脚号),复位或重新上电后生效。
| 功能 | 名称 | 方向 | 说明 | 默认引脚 |
|---|---|---|---|---|
| PMUX1 | SYNC_IN/PPS | 输入 | 同步脉冲输入(见同步功能) | IO1 |
| PMUX2 | SOUT | 输出 | COM1 周期帧发送标记(见SOUT 同步输出) | IO2 |
| PMUX3 | LED | 输出 | 运行状态指示灯 | 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 轴模式建议在同时满足以下条件时使用:
- 首次使用前至少完成一次地磁校准;
- 使用环境无明显空间磁场干扰,建议室外空旷处;
- 模块与安装载体(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,会自动结束,不需要结束指令;是否成功以查询状态为准。
旋转要领:
- 位置尽量不动,只改变姿态;模块已与载体固联时旋转整体;
- 覆盖尽可能多的姿态方向:3D 校准建议每个轴至少转一圈(推荐 2~3 圈),速度均匀,推荐 20~100 deg/s,避免长时间停在同一姿态;
- 推荐方案:绕 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,返回示例:
STAT=3
PROGRESS=100
OK| STAT | 状态 | 操作建议 |
|---|---|---|
| 0 | 空闲 | 可开始新的校准 |
| 1 | 校准中 | 继续旋转模块(或模块与载体整体) |
| 3 | 校准完成 | 按第 5 步验证航向 |
| 4 | 校准失败 | 按故障排查流程处理后重新校准 |
PROGRESS 为校准进度提示,不能据此推算剩余时间,范围 0~100:校准中最高显示 99,STAT=3 后显示 100。
校准成功后补偿参数立即生效并自动掉电保持,不需要 SAVECONFIG。建议重新上电后再做一次航向旋转验证。
第 5 步:验证校准结果
- 水平放置模块,缓慢旋转一周(360°);
- 航向输出应随旋转连续变化,只在 ±180°(或 0/360°)边界回绕,无其他跳变;
- 一周闭合误差或相对参考航向的误差超过 ±5°、出现非边界跳变、航向不随旋转变化时,按下文排查。
故障排查流程
校准失败(STAT=4)或验证异常时按下表逐项排查,前一项合格再做下一项。磁场总强度 B_total = √(Bx² + By² + Bz²),由 mag_b 三轴计算。
| 顺序 | 检查项 | 合格判据 | 不合格时的处理 |
|---|---|---|---|
| 1 | 静止读取 B_total | 20–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 + ERR | SERIALCONFIG 的波特率不在 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 二进制 HI91 | RS-232 / TTL / USB | 出厂默认;定长 76 字节数据域,浮点工程单位 | 串口二进制协议 |
| HiPNUC 二进制 HI83 | RS-232 / TTL / USB | 按位图选择字段的变长帧,含微秒时间戳、UTC、倾角、MRU | 串口二进制协议 |
| Modbus RTU | RS-485 | 工业标准,寄存器读写,整型定点 | Modbus RTU 协议 |
| J1939 | CAN 2.0B | 新项目 CAN 接入的推荐协议;PGN 周期广播,整型定点 | CAN 协议 |
| CANFD83 | CAN FD | HI83 的 CAN FD 版本,浮点 SI 单位 | CANFD83 可变帧 |
CANopen 仅供已有项目维护,其映射与比例因子单独见 CANopen(CAN),不在本章对照表内。
数据字典
下表按物理量列出各协议的类型、比例因子和单位,物理值 = 原始值 × 比例因子;浮点字段比例因子为 1。地址和偏移见各协议章的字段表。
| 物理量 | HI91 | HI83 | Modbus | J1939 |
|---|---|---|---|---|
| 加速度 XYZ | float,G | float,m/s² | i16 × 0.00048828 → G(0x34–0x36) | i16 × 0.00048828 → G(0xFF34) |
| 角速度 XYZ | float,deg/s | float,rad/s | i16 × 0.061035 → deg/s(0x37–0x39) | i16 × 0.061035 → deg/s(0xFF37) |
| 磁场 XYZ | float,μT | float,μT | i16 × 0.030517 → μT(0x3A–0x3C) | i16 × 0.030517 → μT(0xFF3A) |
| 横滚 / 俯仰 | float,deg | float,deg | i32 × 0.001 → deg(0x3D–0x40) | i32 × 0.001 → deg(0xFF3D) |
| 航向 yaw | float,deg,±180° | float,deg,±180° | i32 × 0.001 → deg,±180°(0x41–0x42) | u32 × 0.001 → 0–360° 顺时针(罗盘航向);i32 × 0.001 → ±180°(0xFF41) |
| 四元数 WXYZ | float | float | i16 × 0.0001(0x46–0x49) | i16 × 0.0001(0xFF46) |
| 温度 | i8,°C(整数) | float,°C | i16 × 0.01 → °C(0x43) | i16 × 0.01 → °C(0xFF43) |
| 气压 | float,Pa | float,Pa | i32 × 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_STATUS | u16 | u16 | u16(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含义随对时状态变化,ModbusCPUTIME始终是本地时间,两者不能互换或直接相减。 - CANFD83 的加速度、角速度是浮点 m/s²、rad/s,不要套用 J1939 的定点比例因子。
串口二进制协议
RS-232、TTL 和 USB(虚拟串口)均为流式串行接口,统一使用 HiPNUC 二进制协议输出,这是模块出厂默认的数据协议。串口参数 8N1,默认 115200 bps。
接收、组帧与解析代码统一维护在官方 SDK(C / C++、STM32、ROS、Python),本章只定义线上报文格式和原始字段单位。SDK 的 API 和样本单位以其文档为准,不要把本章比例因子再次应用到 SDK 已换算的数据上。
帧格式
| 域 | 值 | 长度(字节) | 说明 |
|---|---|---|---|
| SOF | 5A A5 | 2 | 帧头同步标志 |
| LEN | 1–512 | 2 | 数据域长度(小端,不含帧头、长度和 CRC) |
| CRC | — | 2 | 对帧头、长度、数据域的 16 位 CRC(不含 CRC 字段本身),小端 |
| 数据域 | — | 1–512 | 以 1 字节标签(tag)开头,标签决定后续数据的类型与长度 |
所有多字节数值均为 小端。数据域最大 512 字节(整帧最大 518 字节)。本手册定义的 HI83 公开字段全部启用时数据域为 132 字节。
浮点型数据帧(HI91)
出厂默认输出帧,数据域固定 76 字节,包含状态、温度、IMU 测量数据(加速度、角速度、磁场)、气压和融合后的姿态。IMU 测量数据已经过出厂校准,不是芯片寄存器原始读数;测量数据和姿态均按输出数据轴向表达。
| 偏移 | 名称 | 类型 | 大小 | 单位 | 说明 |
|---|---|---|---|---|---|
| 0 | tag | u8 | 1 | — | 数据标签 0x91 |
| 1 | main_status | u16 | 2 | — | 状态字,见MAIN_STATUS 状态字 |
| 3 | temperature | i8 | 1 | °C | 模块平均温度,整数 |
| 4 | air_pressure | float | 4 | Pa | 气压 |
| 8 | system_time | u32 | 4 | ms | 时间戳,见时间与时间戳 |
| 12 | acc_b | float | 4×3 | G | 加速度 XYZ,1 G ≈ 9.8 m/s² |
| 24 | gyr_b | float | 4×3 | deg/s | 角速度 XYZ |
| 36 | mag_b | float | 4×3 | μT | 磁场 XYZ |
| 48 | roll | float | 4 | deg | 横滚角 |
| 52 | pitch | float | 4 | deg | 俯仰角 |
| 56 | yaw | float | 4 | deg | 航向角,±180° |
| 60 | quat | float | 4×4 | — | 四元数 WXYZ |
警告
HI91 的角速度单位是 deg/s、加速度单位是 G;HI83 分别是 rad/s 和 m/s²。按帧类型选择单位。
可变类型数据帧(HI83)
HI83 按 data_bitmap 输出不同的数据组合,帧长随配置改变,适合需要微秒时间戳、UTC、倾角或 MRU 数据,或希望按需控制带宽的场景。字段选择方法见HI83 字段选择。
固定头部 8 字节,其后按 bit 从低到高的顺序拼接被选中的数据段;未选中的段不出现,整帧相应变短。解析器必须按每帧头部的 data_bitmap 逐段累加偏移。
| 偏移 | 名称 | 类型 | 大小 | 说明 |
|---|---|---|---|---|
| 0 | tag | u8 | 1 | 数据标签 0x83 |
| 1 | main_status | u16 | 2 | 状态字,见MAIN_STATUS 状态字 |
| 3 | status_ext | u8 | 1 | 扩展状态字节,本手册不定义,通用解析器忽略 |
| 4 | data_bitmap | u32 | 4 | 数据段位图 |
| 8 | … | — | 变长 | 按位序排列的数据段 |
data_bitmap 位定义(产品未启用对应功能时,字段可能为 0 或无物理意义):
| 位 | 名称 | 类型 | 大小 | 单位 | 说明 |
|---|---|---|---|---|---|
| 0 | acc_b | float | 4×3 | m/s² | 载体系加速度 XYZ |
| 1 | gyr_b | float | 4×3 | rad/s | 载体系角速度 XYZ |
| 2 | mag_b | float | 4×3 | μT | 载体系磁场 XYZ |
| 3 | rpy | float | 4×3 | deg | 欧拉角 roll / pitch / yaw,yaw ±180° |
| 4 | quat | float | 4×4 | — | 四元数 WXYZ |
| 5 | system_time_us | u64 | 8 | μs | 本地高分辨率时间戳(开机累计,不受对时影响) |
| 6 | utc | — | 8 | — | 年偏移(u8,year−2000)、月(u8)、日(u8)、时(u8)、分(u8)、秒(u16,单位 ms,如 12 s = 12000)、保留(u8) |
| 7 | air_pressure | float | 4 | Pa | 气压 |
| 8 | temperature | float | 4 | °C | 模块平均温度 |
| 9 | inclination | float | 4×3 | deg | 倾角仪输出:X 轴倾角、Y 轴倾角、航向角(第三个值是右-前-上约定的 yaw,逆时针 ±180°,不是 Z 轴倾角,也不是罗盘航向);三个值都不随输出数据轴向变化 |
| 10 | heave_surge_sway | float | 4×3 | m | MRU 位移:垂荡、纵荡、横荡 |
| 11 | heave_surge_sway_frq | float | 4×3 | Hz | MRU 频率:垂荡、纵荡、横荡 |
| 12–31 | 扩展 | — | — | — | 交付专用扩展字段,本手册不定义,通用用户不要置位 |
注意
公开字段掩码为 0x00000FFF。禁止使用 0xFFFFFFFF 等全开配置,否则帧长和字段语义无法仅按本手册解析。
CRC 校验
采用 CRC-16/XMODEM(部分工具标注为 CRC-16/CCITT):多项式 0x1021,初值 0x0000,无输入 / 输出反转,无最终异或。校验范围为帧头(2)+ 长度(2)+ 数据域,不含 CRC 字段本身。
帧解析示例(HI91)
一帧 HI91 共 82 字节:前 6 字节为帧头 / 长度 / CRC,其后 76 字节为数据域。示例采集于默认输出数据轴向(COORD 0)。示例报文:
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 00 | 0x004C = 76 | 76 字节 |
| CRC | — | 14 BB | 0xBB14 | 校验值 |
| tag | — | 91 | 0x91 | 数据域起始 |
| main_status | u16 | 08 15 | 0x1508 | 状态字 |
| temperature | i8 | 23 | 35 | °C |
| air_pressure | float | 09 A2 C4 47 | 100676 | Pa |
| system_time | u32 | 08 15 1C 00 | 1840392 | ms |
| acc_b x/y/z | float | … | −0.2206 / 0.2092 / 0.9489 | G |
| gyr_b x/y/z | float | … | −0.0617 / −0.0060 / −0.0101 | deg/s |
| mag_b x/y/z | float | … | 7.892 / 14.625 / −60.042 | μT |
| roll / pitch / yaw | float | … | 13.052 / 12.188 / −122.477 | deg |
| quat w/x/y/z | float | … | −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 | 单位 / 比例 | 说明 |
|---|---|---|---|---|---|
| 0x00 | CTRL | u16 | W | — | 控制寄存器:0x0000 保存配置、0x0001 恢复出厂、0x00FF 复位 |
| 0x04 | UART1_BAUD | u16 | R/W | — | 串口波特率档位,复位后生效,见配置波特率 |
| 0x05 | MD_ID | u16 | R/W | — | Modbus 节点 ID,1–247,立即生效 |
| 0x06 | PROFILE | u16 | R/W | — | 工作模式:0 = 6 轴、1 = 9 轴、4 / 5 / 7 = 专用模式(见工作模式),复位后生效 |
| 0x07 | COORD | u16 | R/W | — | 输出数据轴向:0 = 右-前-上、4 = ROS(见输出数据轴向),复位后生效 |
| 0x08 | MCAL_START | u16 | W | — | 启动地磁校准:1 = 3D、2 = 2D,其他值被拒绝 |
| 0x09 | MAIN_STATUS | u16 | R | — | 状态字,见MAIN_STATUS 状态字 |
| 0x0A | MCAL_STATUS | u16 | R | — | 地磁校准状态:0 空闲、1 校准中、3 成功、4 失败 |
| 0x0B | MCAL_PROGRESS | u16 | R | % | 校准进度:校准中 0–99,成功后 100 |
| 0x0D | MCAL_MODE | u16 | R | — | 最近一次有效校准的类型:2 = 2D、3 = 3D |
| 0x34–0x36 | ACC X/Y/Z | i16 | R | G,×0.00048828 | 加速度 |
| 0x37–0x39 | GYR X/Y/Z | i16 | R | deg/s,×0.061035 | 角速度 |
| 0x3A–0x3C | MAG X/Y/Z | i16 | R | μT,×0.030517 | 磁场 |
| 0x3D–0x3E | ROLL (H/L) | i32 | R | deg,×0.001 | 横滚角,高字在前 |
| 0x3F–0x40 | PITCH (H/L) | i32 | R | deg,×0.001 | 俯仰角 |
| 0x41–0x42 | YAW (H/L) | i32 | R | deg,×0.001 | 航向角,±180° |
| 0x43 | TEMP | i16 | R | °C,×0.01 | 温度 |
| 0x44–0x45 | PRS (H/L) | i32 | R | Pa,×0.01 | 气压 |
| 0x46–0x49 | Q0–Q3 | i16 | R | ×0.0001 | 四元数 W/X/Y/Z |
| 0x4A | INCLI_X | i16 | R | deg,×0.011 | 倾角仪 X |
| 0x4B | INCLI_Y | i16 | R | deg,×0.011 | 倾角仪 Y |
| 0x4C–0x4D | CPUTIME (H/L) | i32 | R | ms | 开机累计运行时间,始终是本地时间,不随对时切换;约 24.8 天后按 i32 解码转为负值 |
| 0x4E–0x50 | HEAVE/SURGE/SWAY | i16 | R | m,×0.01 | MRU 位移 |
| 0x51–0x53 | HEAVE/SURGE/SWAY_FRQ | i16 | R | Hz,×0.01 | MRU 频率 |
| 0x70–0x77 | PNAME | u16 | R | — | 型号名,ASCII,8 寄存器 |
| 0x78 | SW_VERSION | u16 | R | — | 固件版本 |
| 0x79 | BL_VERSION | u16 | R | — | Bootloader 版本 |
| 0x7F–0x82 | SN | u16 | R | — | 序列号,4 寄存器 |
| 0xA5 | ATT_RST | u16 | W | — | 姿态零点:0 全部归零、1 航向复位、2 相对零点、3 自动校平、5 取消校平(见姿态零点与校平) |
| 0xA6 | URFR | u16 | R/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 |
| 输出数据轴向设为 ROS | 50 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) |
|---|---|---|---|
| 4800 | 50 06 00 04 00 00 C5 8A | 230400 | 50 06 00 04 00 06 45 88 |
| 9600 | 50 06 00 04 00 01 04 4A | 460800 | 50 06 00 04 00 07 84 48 |
| 19200 | 50 06 00 04 00 02 44 4B | 921600 | 50 06 00 04 00 08 C4 4C |
| 38400 | 50 06 00 04 00 03 85 8B | 256000 | 50 06 00 04 00 09 05 8C |
| 57600 | 50 06 00 04 00 04 C4 49 | ||
| 115200 | 50 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) |
|---|---|---|
| 右,前,上(默认水平安装) | 24 | 50 06 00 A6 00 18 64 62 |
| 右,下,前(侧装,Y 朝下) | 43 | 50 06 00 A6 00 2B 24 77 |
| 右,上,后(侧装,Y 朝上) | 52 | 50 06 00 A6 00 34 65 BF |
| 上,前,左(立装,X 朝上) | 520 | 50 06 00 A6 02 08 64 CE |
| 下,前,右(立装,X 朝下) | 421 | 50 06 00 A6 01 A5 A5 83 |
读取版本信息(0x70–0x82)
请求:50 03 00 70 00 13 08 5D(从 0x70 读取 19 个寄存器)。完整响应 43 字节:
50 03 26 [38 字节寄存器数据] [CRC_L] [CRC_H]寄存器数据按下表解析,字节偏移从数据区首字节起算,每个寄存器高字节在前:
| 寄存器地址 | 字节偏移 | 内容 |
|---|---|---|
0x70–0x77 | 0–15 | 型号名,ASCII |
0x78 | 16–17 | 固件版本 |
0x79 | 18–19 | Bootloader 版本 |
0x7A–0x7E | 20–29 | 跳过 |
0x7F–0x82 | 30–37 | 序列号 |
读取 IMU/AHRS 数据(0x34–0x4B)
请求:50 03 00 34 00 18 09 8F(从 0x34 读 24 个寄存器)。响应示例:
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):
| 轴 | 寄存器值 | 原始值 | 物理值 |
|---|---|---|---|
| X | FF 01 | −255 | −0.1245 |
| Y | 03 B0 | 944 | 0.4609 |
| Z | 06 50 | 1616 | 0.7891 |
角速度(deg/s,×0.061035):
| 轴 | 寄存器值 | 原始值 | 物理值 |
|---|---|---|---|
| X | FC C9 | −823 | −50.232 |
| Y | FF 7C | −132 | −8.057 |
| Z | 00 91 | 145 | 8.850 |
磁场(μT,×0.030517):
| 轴 | 寄存器值 | 原始值 | 物理值 |
|---|---|---|---|
| X | 01 D5 | 469 | 14.312 |
| Y | FD DB | −549 | −16.754 |
| Z | FD 27 | −729 | −22.247 |
欧拉角(deg,×0.001;i32 大端,每轴 2 个寄存器 H/L):
| 轴 | 寄存器值(H L) | 原始值(i32) | 物理值 |
|---|---|---|---|
| Roll | 00 00 21 FF | 0x000021FF = 8703 | 8.703 |
| Pitch | 00 00 7F F6 | 0x00007FF6 = 32758 | 32.758 |
| Yaw | FF FD 73 E7 | 0xFFFD73E7 = −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 扩展帧格式
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 | 名称 | 默认周期 | 适用 |
|---|---|---|---|---|---|
| 0xFF2F | 65327 | 0x2F | 时间信息(UTC 或本地时间) | 关闭 | 全部 |
| 0xFF34 | 65332 | 0x34 | 三轴加速度 | 10 ms | 全部 |
| 0xFF37 | 65335 | 0x37 | 三轴角速度 | 10 ms | 全部 |
| 0xFF3A | 65338 | 0x3A | 三轴磁场 | 关闭 | 9 轴产品 |
| 0xFF3D | 65341 | 0x3D | 俯仰 / 横滚角 | 10 ms | 全部 |
| 0xFF41 | 65345 | 0x41 | 航向角 | 10 ms | 全部 |
| 0xFF43 | 65347 | 0x43 | 温度 | 关闭 | 全部 |
| 0xFF46 | 65350 | 0x46 | 四元数 | 关闭 | 全部 |
| 0xFF4A | 65354 | 0x4A | 倾角仪输出 | 关闭 | 倾角仪产品 |
| 0xFF5B | 65371 | 0x5B | CANFD83 可变帧 | 关闭 | 支持 CAN FD 的产品 |
各 PGN 的发送周期可通过配置协议修改。以下为经典 CAN PGN 的 8 字节数据域,未列出的字节为保留,固定 0。
0xFF2F 时间信息
| 字节 | 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|---|
| 0–5 | 年 / 月 / 日 / 时 / 分 / 秒 | u8×6 | — | 年为 year−2000,如 26 = 2026 |
| 6–7 | 毫秒 | u16 | ms | 小端 |
示例: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–1 | X | i16 | 加速度 0.00048828 / 角速度 0.061035 / 磁场 0.030517 | G / deg/s / μT |
| 2–3 | Y | i16 | 同上 | 同上 |
| 4–5 | Z | i16 | 同上 | 同上 |
| 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 | 横滚 Roll | i32 | 0.001 | deg |
| 4–7 | 俯仰 Pitch | i32 | 0.001 | deg |
0xFF41 航向(一帧含两种表示,见航向约定)
| 字节 | 字段 | 类型 | 比例因子 | 单位 |
|---|---|---|---|---|
| 0–3 | 罗盘航向,0–360°,顺时针为正(始终按右-前-上计算) | u32 | 0.001 | deg |
| 4–7 | 航向,±180°,逆时针为正(随输出数据轴向) | i32 | 0.001 | deg |
示例(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–7 | qw / qx / qy / qz | i16 | 0.0001 |
0xFF4A 倾角仪(倾角仪产品)
| 字节 | 字段 | 类型 | 比例因子 | 单位 |
|---|---|---|---|---|
| 0–3 | X 轴倾角 | i32 | 0.001 | deg |
| 4–7 | Y 轴倾角 | i32 | 0.001 | deg |
0xFF43 温度
| 字节 | 字段 | 类型 | 比例因子 | 单位 |
|---|---|---|---|---|
| 0–1 | 温度 | i16 | 0.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 均为小端。
| 偏移 | 字节数 | 字段 | 类型 | 说明 |
|---|---|---|---|---|
| 0 | 4 | MAP | uint32 | 本帧字段位图 |
| 4 | 2 | main_status | uint16 | 见 MAIN_STATUS,bit12=0 |
| 6 | 1 | ins_status | uint8 | 导航状态 |
| 7 | 1 | sequence | uint8 | 编码序号,0–255 回卷 |
| bit | 字段 | 类型 | 字节数 | 单位 | 顺序 / 含义 |
|---|---|---|---|---|---|
| 0 | ACC_B | float32×3 | 12 | m/s² | X、Y、Z |
| 1 | GYR_B | float32×3 | 12 | rad/s | X、Y、Z |
| 2 | MAG_B | float32×3 | 12 | μT | X、Y、Z;需产品支持磁力计 |
| 3 | RPY | float32×3 | 12 | deg | roll、pitch、yaw;yaw 为 ±180° |
| 4 | QUAT | float32×4 | 16 | — | w、x、y、z |
| 5 | SYSTEM_TIME | uint64 | 8 | μs | 单调 IMU 采样时刻 |
| 6 | UTC | packed | 8 | — | 见下文 |
| 8 | TEMPERATURE | float32 | 4 | °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 数据字节数 | 12 | 16 | 20 | 24 | 32 | 48 | 64 |
|---|---|---|---|---|---|---|---|
| DLC 编码 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
J1939 配置
沿用 配置协议,请求为经典 CAN、8 字节,FD=0、BRS=0。
| 参数 | 地址 | 默认 | 生效 |
|---|---|---|---|
| CANFD83 MAP | 0x0180 | 0x12B | 下一帧 |
| CANFD83 周期 | 0x015B | 0(关闭) | 立即,单位 ms |
| 周期输出总开关 | 0x009D | 1(开) | 立即,0/1 |
| 数据段速率索引 | 0x009B | 11 | 保存后重启 |
周期输出要求总开关为 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 = 0x12B | 80 01 06 00 2B 01 00 00 |
| 读取 MAP | 80 01 03 00 00 00 00 00 |
| 周期 = 10 ms | 5B 01 06 00 0A 00 00 00 |
报文示例
构造数据,非实测采集:ID=0x0CFF5B08、FD=1、BRS=1、DLC=15。
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–1 | ADDR | u16 | 参数地址,小端 |
| 2 | CMD | u8 | 0x06 写,0x03 读 |
| 3 | 保留 | u8 | 主机写 0,设备原样回显 |
| 4–7 | VAL | u32 | 数据值,小端 |
应答规则:
| 请求 | 应答 | 说明 |
|---|---|---|
| 点对点写(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 | 数据 | 类型 / 比例 / 单位 |
|---|---|---|---|---|---|
| TPDO1 | 0x180+ID | 0x1800 | 6 | 加速度 X/Y/Z | i16,mG(0.001 G) |
| TPDO2 | 0x280+ID | 0x1801 | 6 | 角速度 X/Y/Z | i16,0.1 deg/s |
| TPDO3 | 0x380+ID | 0x1802 | 6 | 欧拉角 Roll/Pitch/Yaw | i16,0.01 deg |
| TPDO4 | 0x480+ID | 0x1803 | 8 | 四元数 W/X/Y/Z | i16,×0.0001 |
| TPDO6 | 0x680+ID | 0x1804 | 4 | 气压 | i32,Pa |
| TPDO7 | 0x780+ID | 0x1805 | 8 | 倾角仪 X/Y | i32,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 = 125k | 23 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 … |
| 读取节点 ID | 40 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(COORD 0)使用 312 公式,ROS(COORD 4)使用 321 公式,两者的坐标轴定义见坐标系与方向约定。两种配置的载体轴不同,互相换算时应从四元数按对应公式重新提取欧拉角,不能只给某个角加减 90°。
四元数转旋转矩阵
给定
东北天(ENU)— 312 旋转顺序(先 Z,再 X,最后 Y)

- pitch(θ):绕 X 轴,范围
- roll(φ):绕 Y 轴,范围
- yaw(ψ):绕 Z 轴,范围
四元数转欧拉角:
欧拉角转四元数(
ROS(REP-103)— 321 旋转顺序(先 Z,再 Y,最后 X)
ROS 配置下载体系为前、左、上(FLU),世界系为东北天 ENU;9 轴航向以车头朝东为 0,6 轴等相对航向模式开机为 0:
- roll(φ):绕 X 轴,范围
- pitch(θ):绕 Y 轴,范围
- yaw(ψ):绕 Z 轴,范围
四元数转欧拉角:
欧拉角转四元数(
上述 321 公式与航空常用的北东地(NED)欧拉角提取公式相同,只是坐标轴指向不同;本手册不定义 NED 输出配置。
附录 B — 固件升级
如需升级,请联系技术支持并提供产品型号和 LOG VERSION 查询结果,由技术支持确认适用的固件文件(.hex);请勿使用其他型号的固件。取得文件后,使用 CHCenter 上位机按下图步骤升级。

注意
升级前用 LOG VERSION 核对型号并记录当前配置,确认固件文件与产品型号匹配;升级过程中请勿断电。
附录 C — 输出带宽与波特率
数据帧能否稳定输出取决于 帧长 × 帧率 是否在串口带宽之内。以 8N1(每字节 10 bit)估算:
实际应用建议再预留 10~20% 余量。HI91 单帧 82 字节(6 字节帧头 / 长度 / CRC + 76 字节数据域),各波特率下的推荐最大帧率:
| 协议 | 单帧字节 | 9600 | 115200 | 230400 | 460800 | 921600 |
|---|---|---|---|---|---|---|
| HI91 | 82 | 10 Hz | 100 Hz | 250 Hz | 500 Hz | 1000 Hz |
HI83 为变长帧,按所选字段累加帧长后代入上式。默认 0x000000FF 单帧约 98 字节(数据域 92 + 6),100 Hz 约需 98 kbit/s,115200 bps 余量偏紧,建议 230400 及以上。固件会拒绝超出带宽的输出配置或波特率设置。
附录 D — 出厂默认配置
典型默认配置如下,具体以产品交付为准。
| 配置项 | 典型默认值 | 可选范围 | 生效时机 |
|---|---|---|---|
| 串口波特率(COM1–4) | 115200 | 10 档,见串口波特率 | 立即 |
| 默认输出帧 | HI91 @ 100 Hz(COM1、COM2) | — | 立即 |
| HI83 输出 | 关闭;MAP 0x000000FF | 见 HI83 | 输出开关立即;MAP 保存、重启并确认 |
| 工作模式 | 6 轴或 9 轴,见产品交付 | 0 / 1 / 4 / 5 / 7 | 复位后 |
| 输出数据轴向 | 右-前-上(0) | 右-前-上 / ROS | 复位后 |
| 安装方向 URFR | 24(水平,Z 朝上) | 24 种编码 | 复位后 |
| Modbus 节点 ID | 80 | 1–247 | 立即 |
| CAN 节点地址 | 8 | 1–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 — 缩略词与术语表
| 缩写 / 术语 | 全称 / 含义 |
|---|---|
| IMU | Inertial Measurement Unit,惯性测量单元(加速度计 + 陀螺仪,可含磁力计) |
| AHRS | Attitude and Heading Reference System,姿态航向参考系统(9 轴,绝对航向) |
| VRU | Vertical Reference Unit,垂直参考单元(6 轴,相对航向) |
| MRU | Motion Reference Unit,运动参考单元(海浪补偿输出) |
| ENU | 东北天世界坐标系(见坐标系与方向约定) |
| RFU / FLU | 右前上 / 前左上载体坐标系;FLU 是 ROS 的载体轴约定 |
| ROS / REP-103 | 机器人操作系统及其坐标约定:载体前-左-上、世界东-北-天,见输出数据轴向 |
| URFR | 安装方向编码(见安装方向) |
| COORD | 输出数据轴向配置(见输出数据轴向) |
| MAIN_STATUS | 16 位主状态字(见MAIN_STATUS 状态字) |
| MCAL | Magnetometer Calibration,地磁校准 |
| USRCAL | 用户级陀螺比例校准 |
| PMUX | Pin Multiplexing,多功能 IO 复用 |
| SYNC_IN / PPS | 同步脉冲输入 / 秒脉冲,用于触发与对时 |
| SOUT | Sync Output,COM1 数据帧发送标记脉冲 |
| RMC | NMEA 推荐最简定位信息语句,PPS 对时用的时间消息 |
| HI91 / HI83 | HiPNUC 二进制数据帧:定长浮点 / 变长位图 |
| CANFD83 | HI83 字段布局的 CAN FD 数据帧 |
| SOF | Start of Frame,帧头同步标志(5A A5) |
| CRC | Cyclic Redundancy Check,循环冗余校验 |
| PGN | Parameter Group Number,J1939 参数组编号 |
| SA / DA | Source / Destination Address,J1939 源 / 目的地址 |
| TPDO / SDO | CANopen 发送过程数据对象 / 服务数据对象 |
| DBC | CAN 数据库文件,描述 CAN 信号定义,供 CANoe / BusMaster 等导入 |
| Heave / Surge / Sway | 垂荡 / 纵荡 / 横荡,船舶三轴周期运动 |
附录 F — 开发资源与技术支持
| 资源 | 用途 | 获取 |
|---|---|---|
| CHCenter 上位机 | 设备连接、参数配置、数据曲线 / 姿态可视化、数据记录与回放、固件升级 | www.hipnuc.com |
| C / C++、STM32、ROS、Python SDK | 按平台接收、解析和使用设备数据 | 驱动与例程 |
| J1939 DBC | CAN 信号定义,便于 CAN 工具导入 | CAN 数据库 |
| 固件升级 | 联系技术支持确认适用固件,通过 CHCenter 升级 | 附录 B |
新产品与资料信息可通过官方网站及公众号获取。
微信公众号:

Telegram:

