指令与编程手册
Rev 1.7.2
适用于 HiPNUC IMU / AHRS / MRU 产品的公开指令与数据接口
具体功能以实际产品型号、固件版本及交付配置为准
© 2016–2026 北京超核电子科技有限公司 版权所有。文档包含的信息可能在未经通知的情况下发生更改。

文档范围与版本
关于本手册
本手册是 HiPNUC IMU / AHRS / MRU 产品的 指令与编程参考,面向需要直接对接模块、配置参数、解析数据或集成到上层系统的工程师。
适用产品:HiPNUC IMU / AHRS / MRU 标准产品的公开编程接口。具体功能以实际产品型号、固件版本及交付配置为准;未启用的传感器、CAN、RS-485 或 MRU 功能不会产生对应输出。本手册仅涵盖编程与数据接口;引脚定义、机械尺寸、供电与电气规格请参阅对应产品的硬件手册。
适用固件版本:不同固件版本指令略有差异。查看方法:串口发送 LOG VERSION,或在 CHCenter 上位机中查看,然后按下表选择对应手册。
| 你的硬件固件版本 | 对应手册版本 | 获取 |
|---|---|---|
| 1.7.1及以上 | Rev 1.7.2 | 本手册(即本文档) |
| 1.7.0及以下 | Rev 1.3.0 | imu_cum_cn_150_170.pdf |
注意:版本号换算:
LOG VERSION返回的APP_VER为整数编码,主版本 =APP_VER / 100,次版本 =(APP_VER % 100) / 10,修订号 =APP_VER % 10(以上除法均为整数除法,向下取整)。例如APP_VER=172表示固件1.7.2。CHCenter 直接显示点分版本,两处来源一致。
手册结构:
| 章 | 内容 | 适用读者 |
|---|---|---|
| 1 | 文档范围与版本 | 确认产品、固件和阅读路径 |
| 2 | 基础约定(坐标系 / 数据类型 / 状态字) | 解析数据前必读 |
| 3 | 产品功能与配置 | 配置模块功能 |
| 4 | 地磁校准与磁环境 | 配置 9 轴绝对航向前必读 |
| 5 | ASCII 命令参考 | 命令语法速查 |
| 6 | 统一数据字典 | 跨协议物理量语义 |
| 7 | 串口二进制协议(HI91 / HI83) | 解析二进制输出 |
| 8 | Modbus RTU 协议 | 集成 RS-485 |
| 9 | CAN 协议(J1939 / CANopen) | 集成 CAN |
| 附录 | A 姿态数学 / B 固件升级 / C 带宽 / D 出厂默认配置 / E 缩略词表 / F 开发资源 | 参考 |
读者路径:
| 目标 | 先读 | 再读 |
|---|---|---|
| 配置串口、工作模式、安装方向 | 「产品功能与配置」 | 「ASCII 命令参考」、附录「出厂默认配置」 |
| 解析 HI91 / HI83 二进制数据 | 「基础约定」、「统一数据字典」 | 「串口二进制协议」 |
| 集成 Modbus / J1939 / CANopen | 「基础约定」、「统一数据字典」 | 「Modbus RTU 协议」「CAN 协议」 |
| 使用 9 轴绝对航向 | 「工作模式」 | 「地磁校准与磁环境」 |
| 使用 MRU 海浪补偿输出 | 「海浪补偿 / MRU 输出」 | 「统一数据字典」「串口二进制协议」「Modbus RTU 协议」 |
| 估算带宽或查默认配置 | 附录「输出带宽与波特率」 | 附录「出厂默认配置」 |
体例约定:命令关键字、寄存器、十六进制以 等宽字体 标注;提示框使用 警告(误用会导致解析错误、配置损坏或精度/通讯异常)和 注意(补充说明与示例);坐标系、字节序、比例因子统一定义见「基础约定」;常见缩写与术语见附录「缩略词与术语表」。
快速接入流程
首次接入建议按下列顺序完成最小闭环;确认数据正确后,再进入对应协议章节做系统集成。
| 步骤 | 操作 | 验证 |
|---|---|---|
| 1 | 按硬件手册连接电源、地线和通讯接口 | 上位机或串口工具可打开端口 |
| 2 | 串口使用 8N1,默认 115200 bps;发送 LOG VERSION | 能读到 PNAME、SN、APP_VER |
| 3 | 按「统一数据字典」和对应协议章节解析数据 | 静止时加速度模长约 1 G,角速度接近 0 |
基础约定
本章集中定义全手册通用的坐标系、姿态表示、航向约定、数据类型与字节序、时间戳及状态字。各协议章节均引用本章,不再重复定义。 在解析任何数据前,请先阅读本章。
坐标系与方向约定
模块涉及三个右手坐标系:
| 坐标系 | 记号 | 定义 |
|---|---|---|
| 传感器坐标系 | b(载体系) | 固联于模块,X/Y/Z 轴方向印在外壳/PCB 丝印上。所有 IMU 原始量(加速度、角速度、磁场)在此系下表示。 |
| 用户坐标系 | — | 由安装方向 URFR 将传感器系映射得到(见「安装方向」)。默认 24 时与传感器系一致。 |
| 世界坐标系 | n(世界系) | 姿态的参考系,默认 东北天 ENU,可切换 北西天 NWU(CONFIG IMU COORD)。 |
东北天(ENU):X 轴指东、Y 轴指北、Z 轴指天。北西天(NWU):X 轴指北、Y 轴指西、Z 轴指天。均为右手系。
旋转正方向遵循右手定则:右手拇指指向轴正向,四指弯曲方向即为该轴正旋转方向。

姿态表示

模块同时输出 欧拉角 与 四元数 两种姿态表示。
- 欧拉角:横滚
roll、俯仰pitch、航向yaw,单位度。默认 ENU 下采用 312 旋转顺序(先绕 Z 转 yaw、再绕 X 转 pitch、最后绕 Y 转 roll)——此约定下 pitch 绕 X 轴、roll 绕 Y 轴(与直觉相反,详见附录 A);切换到 NWU 后改用 321 顺序(绕 Z→Y→X),变为 roll 绕 X 轴、pitch 绕 Y 轴,与 ENU 相反(详见附录 A)。量程:roll ∈ [−180°, 180°],pitch ∈ [−90°, 90°],yaw ∈ [−180°, 180°]。 - 四元数:顺序 WXYZ(
为标量部分),表示载体系到世界坐标系的旋转 。
四元数 ↔ 欧拉角 ↔ 旋转矩阵的完整互转公式见“附录 A”。
注意:俯仰 ±90° 奇异点:当 pitch 接近 ±90° 时欧拉角存在万向锁奇异,roll/yaw 不再唯一。对高仰角姿态,建议使用四元数。
航向(yaw)约定
警告:航向是最易混淆之处:模块在不同协议/坐标系下对 yaw 的表示并不统一,请对照下表理解。
| 输出位置 | 航向表示 | 正方向 |
|---|---|---|
| HI91 / HI83 / CANopen | 原始 yaw,范围 ±180° | 逆时针为正(ENU) |
| Modbus YAW 寄存器 | 原始 yaw,范围 ±180° | 逆时针为正 |
| J1939 YAW 报文(前 4 字节) | 0–360° | 顺时针为正 |
| J1939 YAW 报文(后 4 字节) | ±180° | 逆时针为正 |
ENU 与 NWU 世界坐标系下,yaw 的零点朝向不同,且 roll/pitch 所绕轴的指派也随之改变(ENU 为 312、NWU 为 321,见「姿态表示」);切换坐标系(CONFIG IMU COORD)后请重新确认航向基准与欧拉角约定。
9 轴 AHRS 模式下,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 / CANopen | 小端 |
| Modbus RTU | 大端(每寄存器 2 字节,高字节在前) |
位编号约定:本手册所有位字段(如 MAIN_STATUS、HI83 数据位图)均以 bit0 表示最低位(LSB),bitN 为自最低位起第 N 位;故位掩码 0x00000FFF 即 bit0–bit11、0x000000FF 即 bit0–bit7。
比例因子约定:整型协议中以比例因子还原物理量,物理值 = 原始值 × 比例因子。例如 Modbus 加速度原始值 1000,比例因子 0.00048828,物理值 = 0.488 G。浮点协议(HI91/HI83 的 float/double 字段)已是工程单位,比例因子为 1。
警告:同一物理量在不同协议中的类型/比例因子/单位不同,详见「统一数据字典」。
时间与时间戳
数据帧中的 system_time(HI91 为 u32,单位 ms)含义随对时状态变化:
- 未完成 UTC 对时:为本地单调毫秒计数按 24 h 回绕,范围
0~86,399,999 ms;不含日期,不表示绝对 UTC; - 已完成 UTC 对时:为 当日 UTC 毫秒计数(自当日 00:00:00 起,按 24 h 回绕)。
对时状态可由 MAIN_STATUS 的 UTC_UNSYNC 位判断(见「MAIN_STATUS 状态字」)。UTC 对时通过 PPS + 串口时间消息实现,硬件接线与时序要求见「同步功能」。
当日 UTC 毫秒时间戳:
| 项 | 值 |
|---|---|
| 范围 | 0 ~ 86,399,999 ms |
| 对应 | 00:00:00.000 ~ 23:59:59.999 |
| 精度 | 1 ms |
换算显示时间时可按 hh=system_time/3600000、mm=(system_time/60000)%60、ss=(system_time/1000)%60、ms=system_time%1000 解析。换算示例:
| 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 同样以UTC_UNSYNC判断。
MAIN_STATUS 状态字
MAIN_STATUS 为 16 位状态字,出现在 HI91、HI83 等输出中,统一定义如下
| 位 | 名称 | =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 为本地 24 h 回绕毫秒计数 | UTC 已同步,system_time 为当日 UTC 毫秒 |
| 12 | SOUT_PULSE | 当前数据帧对应一次 SOUT 脉冲输出 | 当前帧不对应 SOUT 脉冲 |
| 13 | 保留 | — | — |
| 14–15 | 保留 | — | — |
注意:
UTC_UNSYNC位为“1 表示未同步”,请勿按字面误解为“已同步”。SOUT_PULSE用于与外部采集设备或主机采样时序做时间同步对齐。保留位:保留位由固件内部使用,取值不保证为 0;客户端应屏蔽并忽略所有保留位,仅判断本表已定义的位,以保证前向兼容。
产品功能与配置
本章按功能介绍模块的配置项、使用场景与操作流程。具体命令语法见「ASCII 命令参考」,输出数据格式见「统一数据字典」及后续各协议章。
工作模式(姿态 / 航向 Profile)
模块通过 CONFIG ATT MODE(见「CONFIG 配置命令」)选择姿态 / 航向 profile。常用公开 profile 如下:
- 6 轴(VRU)模式:仅用加速度计 + 陀螺仪,输出 相对航向(上电航向为 0),不受磁场干扰,适合室内、机器人、近电机等磁环境复杂场景。
- 9 轴(AHRS)模式:融合磁力计,输出 绝对航向(相对地磁北)。需在洁净磁环境使用并完成地磁校准(见「地磁校准与磁环境」)。
- 专用运动 profile:针对特定载体运动约束优化,如人形机器人、低速地面平台、低动态倾角仪等。具体可选值见「CONFIG ATT MODE」。
警告:室内/机器人慎用 9 轴:室内环境与电机磁场易干扰磁力计,导致航向误差。此类场景建议优先使用 6 轴模式。

安装方向(URFR)
CONFIG IMU URFR <CODE>(见「CONFIG 配置命令」)用于声明模块的安装方向,使输出对齐到用户期望的右-前-上方向。
CODE 写作 ABC 三位数字(2 位时等价于补前导零,如 24 = 024):A/B/C 分别表示用户坐标系 X/Y/Z 轴对应传感器系的哪个方向:
| 数字 | 方向 | 数字 | 方向 |
|---|---|---|---|
| 0 | +X | 1 | −X |
| 2 | +Y | 3 | −Y |
| 4 | +Z | 5 | −Z |
须满足右手系约束(X × Y = Z)。查表时按模块的物理朝向直接选取对应命令即可,无需手工套用上方“用户轴 → 传感器方向”的编码规则——下表 24 种合法安装中「右 / 前 / 上」指传感器 X / Y / Z 轴在载体(用户)系中的实际指向(与上方编码规则互为逆视角;如需自定义表外方向,请按编码规则从“用户轴”出发推算,勿照搬本表的传感器轴观察方向):
| IMU 轴指向(X,Y,Z) | 命令 | 说明 |
|---|---|---|
| 右,前,上 | URFR 24 | 默认水平安装(=024) |
| 右,后,下 | URFR 35 | 绕 X 翻转倒装(=035) |
| 右,下,前 | URFR 43 | 侧装(Right+Down) |
| 右,上,后 | URFR 52 | 侧装(Right+Up) |
| 左,前,下 | URFR 125 | X 反向、Z 向下倒装 |
| 左,后,上 | URFR 134 | X/Y 反向、Z 向上 |
| 左,上,前 | URFR 142 | 左向立装,Y 朝上 |
| 左,下,后 | URFR 153 | 左向立装,Y 朝下 |
| 前,右,下 | URFR 205 | 前向安装,X 沿车头 |
| 后,右,上 | URFR 214 | 后向安装,Y 朝右 |
| 上,右,前 | URFR 240 | 立装,X 朝上 |
| 下,右,后 | URFR 251 | 立装,X 朝下 |
| 前,左,上 | URFR 304 | 前向安装,Y 朝左 |
| 后,左,下 | URFR 315 | 后向倒装 |
| 下,左,前 | URFR 341 | 左向立装,X 朝下 |
| 上,左,后 | URFR 350 | 左向立装,X 朝上 |
| 前,上,右 | URFR 402 | 前向立装,Z 朝右 |
| 后,下,右 | URFR 413 | 后向立装 |
| 下,前,右 | URFR 421 | 立装,X 朝下、Z 朝右 |
| 上,后,右 | URFR 430 | 立装,X 朝上、Z 朝右 |
| 前,下,左 | URFR 503 | 前向立装,Z 朝左 |
| 后,上,左 | URFR 512 | 后向立装 |
| 上,前,左 | URFR 520 | 立装,X 朝上、Z 朝左 |
| 下,后,左 | URFR 531 | 立装,X 朝下、Z 朝左 |
世界坐标系(ENU/NWU)通过 CONFIG IMU COORD 切换,见「CONFIG 配置命令」。
姿态校准
CONFIG ATT RST(见「CONFIG 配置命令」)用于用户姿态零点操作:航向复位、相对零点、自动校平、取消校平。执行时设备须静止;自动校平仅在设备接近水平正放时生效。
CONFIG USRCAL(见「CONFIG 配置命令」)用于用户级陀螺比例校准,标定陀螺 Z 轴比例因子,降低水平旋转载体的长期航向累计误差。该功能适用于 AGV、大型水平移动机器人、转台等可控水平旋转场景;不适合手持随意旋转或无法准确计量旋转角度的场景。操作步骤:
- 将模块连同载体放在水平、平整地面,环境温度稳定、无强振动;
- 发送
CONFIG USRCAL START <ANGLE>(角度 360°~3600°); - 以 20~100 deg/s 匀速水平旋转设定角度(方向任意,勿停顿、勿突变);
- 旋转完成后发送
CONFIG USRCAL STOP,成功返回OK。建议人工或转台控制实际旋转角度误差不超过 ±5°;若实际角度与设定角度偏差过大,校准会引入新的比例误差。
常见失败原因:旋转不规范(太快、太慢、中途停顿或明显摆动)、环境振动、实际旋转角度与设定值偏差过大。
同步功能
模块的同步功能依赖 SYNC_IN/PPS 与 SOUT 引脚,包含三类用途。下图为逻辑分析仪实测波形,以 SYNC_IN 触发模式为例:SYNC_IN/PPS 上升沿触发该帧输出,模块在数据帧发送前先输出 SOUT 帧前脉冲,脉冲下降沿后紧接数据帧。注意 SOUT 帧前脉冲对每次输出的数据帧都会产生,并不依赖 SYNC_IN 触发(详见「SOUT 同步输出」)。

SYNC_IN 同步数据触发
通过外部脉冲触发数据输出。模块检测到 SYNC_IN/PPS 引脚上升沿后,输出已配置为同步触发模式的数据帧;该帧不再周期发送。
- 串口协议:用
LOG <MSG> ONMARK 1将目标帧配置为脉冲触发(见「LOG 命令」)。 - J1939:将目标 PGN 的发送周期设为
0x8000(见「J1939 配置协议」)。
不使用该功能时,引脚建议悬空或接地。
PPS 标准秒脉冲对时
使用 SYNC_IN/PPS 引脚接入外部 1PPS 秒脉冲,配合串口接收时间消息,可为启用该功能的交付配置提供精确 UTC 时间同步。模块检测到有效 PPS 上升沿并收到匹配的时间消息后,内部时钟自动对齐到 UTC 整秒。
| 参数 | 描述 | 有效范围 | 推荐 |
|---|---|---|---|
| t0 | 相邻秒脉冲上升沿间隔 | 990~1010 ms | 1000 ms |
| t1 | 秒脉冲高电平时间(脉宽) | 1~100 ms | 10~50 ms |
| t2 | 时间消息传输时间 | 与波特率相关 | — |
| t3 | 时间消息相对最近一次脉冲上升沿的延迟 | 固件配对窗口内 | 0~100 ms |
警告:核心要求:用于对时的时间消息必须携带整秒 UTC 时间,并在最近一次 PPS 的配对窗口内到达。工程上建议尽量靠近 PPS 上升沿发送,并保持相位稳定。
硬件与接口要求:
SYNC_IN/PPS:上升沿有效;高电平 ≤ 5V(TTL/CMOS 兼容)。- 串口
RX:时间消息频率 1~10 Hz(推荐 1 Hz);波特率必须与模块当前配置一致;仅支持固件定义的 UTC 时间消息。
模块仅从时间消息中提取 UTC 时间(时/分/秒/毫秒)与日期(年/月/日) 字段用于对时,其余字段忽略。对时成功后 system_time 含义见「时间与时间戳」。该输入消息格式属于交付配置的一部分;如需使用 PPS 对时,请以对应产品交付说明为准。
SOUT 同步输出
SOUT 为同步输出引脚。无数据输出时为低电平;一帧数据开始发送前先输出一个高脉冲,脉冲下降沿后紧接数据。可用于触发相机等设备实现严格时间同步。对应数据帧的 MAIN_STATUS 的 SOUT_PULSE 位(见「MAIN_STATUS 状态字」)置 1。
多功能 IO 复用(PMUX)
模块提供多个多功能引脚(IOx),各引脚有默认复用功能,也可经 CONFIG PMUX<n> IO<m>(如 CONFIG PMUX2 IO3,见「CONFIG 配置命令」)重新映射:
| 功能 | 名称 | 方向 | 说明 | 默认 IO |
|---|---|---|---|---|
| PMUX1 | SYNC_IN/PPS | 输入 | 同步脉冲输入(见「同步功能」) | IO1 |
| PMUX2 | SOUT | 输出 | 帧前同步脉冲输出(见「SOUT 同步输出」) | IO2 |
| PMUX3 | LED | 输出 | 运行状态指示灯 | IO5 |
注意:并非所有 IO 引脚都会在具体产品上引出,详见对应产品硬件手册。
产品专属功能
以下功能仅特定型号或特定交付配置支持,其余型号可跳过本节。
倾角仪输出(仅 HI50 等特定型号)
倾角仪将载体相对水平面的倾斜以“倾角”语义输出,适用于平台调平、角度监测、工程机械姿态等场景。倾角由姿态解算得到:
- X 轴倾角:基于横滚,量程双轴 ±180°、单轴可配 0–360°;
- Y 轴倾角:基于俯仰,量程 ±90°。
输出位置:HI83(bit9)、Modbus(0x4A / 0x4B)、J1939(PGN 0xFF4A)、CANopen(TPDO7);各协议比例因子见「统一数据字典」。
方向与零点:各轴输出方向可独立反向(0=默认、1=反向,J1939 配置见「J1939 配置协议」);倾角零点通过“姿态相对零点”实现(CONFIG ATT RST 2,见「CONFIG 配置命令」;CANopen 对应「CANopen 配置指令」的 0x20A5)。配置后建议复位或重新上电复核。
海浪补偿 / MRU 输出(Heave / Surge / Sway)
MRU 交付配置用于估计船舶或海上平台的周期性运动,输出三轴位移与主频信息:
| 运动轴 | 描述 | 输出 |
|---|---|---|
| Heave | 升沉 / 垂荡 | 垂向位移、频率 |
| Surge | 纵荡 / 纵移 | 船首-船尾方向位移、频率 |
| Sway | 横荡 / 横移 | 左右方向位移、频率 |
数据通过 HI83(bit10 位移 / bit11 频率)或 Modbus(0x4E–0x50 位移、0x51–0x53 频率)输出,见「统一数据字典」。MRU 输出反映周期运动估计结果,不作为绝对位置或航迹信息使用。
应用场景:船舶动态监测与姿态控制、海洋工程作业补偿(起重、对接)、波浪特性研究、海上平台姿态稳定分析。
使用限制:
警告:重要限制
- 仅适用于周期性往复运动;以下情况通常无法准确测量:周期过长的运动(> 30 s)、单向线性运动、阶跃式位移。
- 零均值假设:算法假设位移的长期平均值为 0。
- 初始化时间:需稳定的 5~20 个海浪周期 作为初始化时间才能获得正确结果。
- 频率响应范围:典型海浪周期 3~20 s,超出此范围精度下降。
地磁校准与磁环境
地磁校准用于消除随模块一起运动的硬磁/软磁干扰,是 9 轴(AHRS / 磁辅助绝对航向)模式 获得可靠航向角的前提。仅使用 6 轴(VRU)模式时无需进行地磁校准。
注意:流程概要:切换到 9 轴模式 → 在洁净磁环境下连同载体整体缓慢旋转各轴 → 用
LOG MCAL STAT观察进度 → 旋转一周验证航向角连续无跳变。
适用场景
9 轴模式建议在同时满足以下条件时使用:
- 首次使用 9 轴模式前,至少完成一次用户地磁校准;
- 使用环境无明显空间磁场干扰(建议室外空旷处;室内复杂磁环境难以保证效果);
- 模块与安装载体(PCB、外壳、机器人等)的相对位置在使用过程中保持固定。
警告:室内环境优先 6 轴:室内空间磁场畸变无法通过校准消除,即使校准成功,9 轴航向角精度也可能不如 6 轴模式。机房、实验室、车间、地下车库等场景建议优先使用 6 轴模式。
运行时可信度判断:
| 状态位 | 含义 | 主机处理建议 |
|---|---|---|
MAIN_STATUS.MAG_AIDING=1 | 磁场参与航向解算 | 绝对航向可用的前提,仍需结合环境判断 |
MAIN_STATUS.MAG_AIDING=0 | 磁场未参与航向解算 | yaw 按 6 轴相对航向逻辑处理,长期会漂移 |
MAIN_STATUS.MAG_DIST=1 | 检测到磁干扰或磁场状态异常 | 绝对航向不可信,优先排查环境或改用 6 轴模式 |
控制系统不要只根据 yaw 数值判断可靠性,应同时检查 MAIN_STATUS 中的磁辅助与磁干扰状态位。
校准步骤

第 1 步:切换工作模式
先将模块配置为 9 轴模式(CONFIG ATT MODE 1,详见「工作模式」),然后复位或重新上电,再通过 MAIN_STATUS.MAG_AIDING=1 或配置读回确认磁辅助模式已使能。
第 2 步:检查校准环境
常见磁场干扰源:磁铁、扬声器、磁性螺丝、铁质家具、钢制工装、车辆底盘、电脑显示器、电机与变压器、大电流线缆、手机充电器、建筑钢筋结构等。
| 环境等级 | 要求 |
|---|---|
| 最佳 | 室外空旷场地,远离建筑物和车辆(距离 > 5 m) |
| 仅用于临时验证 | 室内远离钢结构、电机、大电流线缆和磁体的区域;量产验收应使用室外空旷场地,或使用已通过 B_total 与航向旋转验证的固定场地 |
警告:整体校准原则:若模块已焊装在产品 PCB 上、采用磁性外壳,或已安装在机器人/机械设备上,必须将与模块固联的整体一起旋转校准。单独校准模块后再装入产品将失效。
第 3 步:执行校准
发送校准指令:CONFIG MCAL START(需固件版本 ≥ 1.7.0)。模块进入校准流程后会采集旋转过程中的三轴磁场样本,并自动拟合硬磁/软磁补偿参数,无需再发送结束指令。
旋转要领:
- 在尽量小的空间范围内保持位置基本不变,仅缓慢旋转模块;若模块已与载体固联,则旋转模块与载体整体;
- 覆盖尽可能多的姿态方向;3D 校准建议每个轴至少旋转 360°(建议 2~3 圈),速度均匀,推荐 20~100 deg/s(约 4~18 秒/圈),避免长时间停在同一姿态;
- 校准通常需要 30~60 s。
推荐旋转方案:绕 X 轴旋转 2 圈 → 绕 Y 轴旋转 2 圈 → 绕 Z 轴旋转 2 圈;或随机旋转,确保每个轴都经历充分的角度变化,但位置尽量不动。
注意:平面安装(2D)校准:对于运行中基本保持水平、主要绕竖直轴旋转的安装(如 AGV、转台、车辆),可通过命令行
CONFIG MCAL START 2D启动平面校准,仅需绕竖直轴旋转。标准 CHCenter 校准按钮执行普通CONFIG MCAL START流程;如需强制 2D,请使用命令行或交付说明指定的配置方式。2D 校准不会自动识别,必须显式带2D参数;它仅更新水平面参数,并保留既有 Z 轴硬磁补偿。若从未做过有效 3D 校准、Z 轴硬磁环境变化,或载体会明显俯仰/横滚,应使用 3D 校准。
第 4 步:查询校准状态
发送 LOG MCAL STAT,返回示例:
STAT=3
PROGRESS=100
QUALITY=72
OK| STAT | 状态 | 操作建议 |
|---|---|---|
| 0 | 当前空闲 | 可开始新的校准 |
| 1 | 正在校准中 | 继续旋转模块;若模块已与载体固联,则旋转模块与载体整体 |
| 3 | 校准已完成 | 校准成功,可正常使用 |
| 4 | 校准失败 | 参考故障排查流程,重新校准 |
PROGRESS:范围 0~100,表示磁场样本覆盖度,不是时间进度;运行中最高显示 99,只有 STAT=3 后才显示 100。QUALITY:范围 0~100,表示拟合完成后的结果质量,手动校准要求 QUALITY ≥ 50 才判定成功(STAT=3 即已满足),数值越高拟合越好;STAT=1 时不作为本次校准质量判据,可能仍是上一次校准结果。
校准成功后,硬磁/软磁补偿参数会立即应用到 AHRS 解算,并写入掉电保持存储;无需额外执行 SAVECONFIG,也不需要复位才生效。建议复位或重新上电后再做一次航向旋转验证,确认掉电保持后的参数仍适用于当前安装与环境。
第 5 步:验证校准结果
- 校准完成后,水平放置模块,缓慢旋转一周(360°);
- 观察航向角输出:理想情况下应随旋转连续变化,无非预期跳变;若协议输出范围为 ±180°,允许在 ±180° 边界回绕;若输出范围为 0°~360°,允许在 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(存在空间磁场干扰);不要用单轴 Bx/By/Bz 变化判断 → 更换位置,或改用 6 轴模式 |
| — | 上述三项均合格仍异常 | — | 在洁净环境重新执行一次校准 |
常见问题
| 失败原因 | 典型现象 | 解决方案 |
|---|---|---|
| 环境磁场干扰过大 | STAT=4 或航向角跳变 | 更换至室外空旷处校准 |
| 旋转动作不规范 | PROGRESS 增长缓慢或停滞 | 确保每轴充分旋转、速度均匀 |
| 旋转时位置移动 | 校准完成但精度差 | 校准时固定位置,仅旋转姿态 |
| 模块与载体位置变化 | 重装后航向角误差增大 | 将模块与载体作为整体重新校准 |
注意事项
警告:室内磁场限制:室内空间磁场干扰无法通过校准消除,9 轴航向角精度取决于实际磁场畸变程度;原理说明见本章「磁干扰类型与校准边界」。
警告:固定安装要求:磁场干扰源必须与模块保持固定相对位置。模块安装在导磁刚体(机器人/机械设备/车辆/船舶/三脚架/PCB 等)之上时,需将整个系统一起旋转校准;使用过程中不应发生相对位移,一旦分离需重新校准。
警告:电机与电流影响:电机、线缆和驱动器产生的磁场若随负载、电流或转速变化,属于时变干扰,不能通过一次地磁校准消除。建议在电机停止状态下校准;仅当工作状态稳定且磁场相对模块固定时,才可在该工作状态下校准。若工作状态变化明显,应拉开距离或使用 6 轴模式。
校准频率与模式选择
校准频率建议:
- 固定安装且环境稳定时,首次校准 1 次即可;
- 移动应用每次更换环境后建议重新校准;
- 模块与载体相对位置变化时应重新校准;
- 长期使用(> 1 年)建议每年校准 1 次;
- 出现异常航向角误差时应立即重新校准。
模式选择建议:
| 应用场景 | 推荐模式 | 原因 |
|---|---|---|
| 室外空旷环境(无人机等) | 9 轴 | 磁场干扰小,可获得绝对航向角 |
| 室内环境(AGV、机器人等) | 6 轴 | 室内磁场干扰大,6 轴更稳定 |
| 靠近电机/电磁设备 | 6 轴 | 电磁干扰无法通过校准消除 |
| 需要绝对航向角 | 9 轴 | 须确保环境磁场稳定且完成校准 |
| 仅需相对航向角 | 6 轴 | 6 轴航向角上电为 0,适合相对测量 |
磁干扰类型与校准边界
磁干扰可按“是否随传感器一起运动”分为两大类。只有随传感器运动的干扰才能通过用户磁校准消除;空间磁场干扰无论如何校准都无法消除。
| 磁干扰类型 | 随传感器运动的干扰 | 空间磁场干扰 |
|---|---|---|
| 特点 | 干扰源随传感器运动而运动 | 干扰源不随传感器运动 |
| 包含子类 | 硬磁(固联磁体 / PCB / 金属外壳)、软磁(固联导磁金属)、传感器标定误差 | 空间畸变(钢筋 / 家具 / 电器)、时间畸变(电机 / 电流变化) |
| 典型干扰源 | 与模块固联的 PCB、金属外壳、无人机机架等 | 家具、家电、线缆、房屋钢筋结构等 |
| 能否校准 | 可以 | 不可能 |
| 抗干扰措施 | 可通过用户磁校准消除 | 校准无法消除,会显著增大航向角误差 |

ASCII 命令参考
模块配置采用串口 ASCII 字符串命令,每条命令以回车换行 \r\n 结束(类似 AT 指令)。本章是命令的 权威语法参考;功能背景与操作流程见「产品功能与配置」。
命令格式与约定
- 大小写:命令关键字大写。
- 分隔:参数以空格分隔,例如
CONFIG IMU URFR 24(不是URFR=24)。 - 生效与保存:
- 通信类命令(
SERIALCONFIG、LOG ENABLE/DISABLE、LOG <MSG> ONTIME/ONMARK)通常 立即生效; - 长期配置写入后通常已持久化,但部分配置需复位或重新上电后加载;具体以各命令说明和附录「出厂默认配置」为准;
SAVECONFIG用于保存所有参数到 Flash,建议保留在配置流程末尾以兼容不同固件版本;- 恢复类命令(
FRESET)自动保存并触发复位。
- 通信类命令(
- 推荐流程:发送配置 → 必要时复位或重新上电 → 读回确认。
注意:本章列出常用对外命令。兼容或定制命令以实际交付说明为准。
命令总览
| 命令 | 功能 | 生效 |
|---|---|---|
REBOOT | 复位模块 | 立即 |
SAVECONFIG | 保存所有参数到 Flash | 立即 |
SERIALCONFIG | 设置串口波特率 | 立即 |
FRESET | 恢复出厂设置 | 立即(自动保存并复位) |
CONFIG | 配置各种参数及工作模式 | 按子命令 |
LOG | 查询信息 / 配置数据输出 | 按子命令 |
系统命令
REBOOT — 复位模块。 示例:REBOOT
SAVECONFIG — 保存所有参数到 Flash。不同固件版本的自动保存策略可能不同,主机配置流程应在参数写入完成后执行一次该命令。
示例:SAVECONFIG
SERIALCONFIG — 设置串口波特率。格式:SERIALCONFIG [<COM>] <BAUD>
- 省略
<COM>时配置当前连接的串口;指定时(如COM2)配置对应串口。 BAUD支持值(共 9 档):48009600192003840057600115200230400460800921600
示例:SERIALCONFIG 115200、SERIALCONFIG COM2 921600
警告:该命令立即生效,执行后须切换主机到新波特率才能继续通讯。
FRESET — 恢复默认用户配置,执行后自动保存并复位,请谨慎使用。 示例:FRESET
CONFIG 配置命令
注意:
CONFIG配置的生效时机不同;长期配置写入后已持久化,但通常建议复位或重新上电后读回复核。当前公开配置可用LOG COMCONFIG、LOG USRCONFIG、LOG MCAL STAT读回(见「LOG 命令」)。
ATT RST、IMU URFR、PMUX、MCAL 等事件型或运行态配置通常立即作用;ATT MODE、IMU COORD 等长期配置写入即保存,复位或重新上电后加载。
工作模式 — CONFIG ATT MODE <VAL>
| VAL | 模式 |
|---|---|
| 0 | VRU(6 轴) |
| 1 | AHRS(9 轴,地磁辅助) |
| 4 | 人形机器人专用 |
| 5 | 低速地面平台(割草机 / 农机 / 工程机械等) |
| 7 | 低动态 / 倾角仪 |
其他交付模式以对应产品说明为准。背景见「工作模式」。
姿态校准 — CONFIG ATT RST <VAL>
执行时设备应静止,否则引入误差。
| VAL | 动作 |
|---|---|
| 1 | 航向复位:当前航向角置零 |
| 2 | 设置相对零点:当前 Pitch、Roll 置零 |
| 3 | 自动校平:仅当 Pitch/Roll 均接近 0°(判定阈值 5°)时,将 Pitch/Roll 校平到 0°,0°;否则命令无效果 |
| 5 | 取消水平校平:恢复绝对角度 |
注意:其他数值为保留或兼容用途,不作为公开接口使用。
安装方向 — CONFIG IMU URFR <CODE>
CODE 为 2~3 位方向编码,表示用户坐标系相对传感器坐标系的安装方向。完整编码表(24 种合法右手系)见「安装方向」。 示例:CONFIG IMU URFR 24(默认水平安装)
世界坐标系 — CONFIG IMU COORD <VAL>
| VAL | 坐标系 |
|---|---|
| 0 | 东北天(ENU,默认) |
| 4 | 北西天(NWU) |
多功能 IO 复用 — CONFIG PMUX<n> IO<m>
n=1~3 为复用功能,m=1~5 为目标引脚。功能定义见「多功能 IO 复用」。 示例:CONFIG PMUX2 IO1(将 IO1 设为同步输出)
地磁校准 — CONFIG MCAL START [2D]
启动一次手动地磁校准。无 2D 参数为 3D 校准;CONFIG MCAL START 2D 为平面(仅绕竖直轴旋转)校准。状态查询见 LOG MCAL STAT。完整流程见「地磁校准与磁环境」。
用户级陀螺校准 — CONFIG USRCAL START <ANGLE> / CONFIG USRCAL STOP
ANGLE:校准角度,单位 度,有效范围 360°~3600°;超出范围返回错误。- 旋转完成后发送
CONFIG USRCAL STOP;成功返回OK,否则返回ERR(通常表示旋转主轴不明确或比例因子超出允许范围)。 - 示例:
CONFIG USRCAL START 720→ 旋转 2 圈 →CONFIG USRCAL STOP。完整操作步骤与失败排查见「姿态校准」。
警告:USRCAL 是精密校准过程。若设定旋转 720° 实际却转了 725°,比例因子将被错误标定约 0.7%,反而引入额外航向误差、降低长期精度。仅在具备可靠角度基准时使用。
LOG 命令
数据输出开关
LOG ENABLE— 全局使能数据帧输出LOG DISABLE— 全局禁止数据帧输出
设置数据帧输出类型及频率 — LOG [<COM>] <MSG> <TYPE> <VALUE>
COM(可选):目标串口,如COM2;省略时配置当前连接的串口。MSG:数据帧种类,常用HI91、HI83等(以产品与串口配置为准)。TYPE:ONTIME(定时)或ONMARK(脉冲/软件触发)。VALUE:TYPE=ONTIME:输出周期,单位 s,范围0.001(1 kHz)~1(1 Hz),0关闭定时输出;TYPE=ONMARK:1由 SYNC_IN/PPS 脉冲触发;ONCE手动触发一次。
示例:
LOG HI91 ONTIME 0.01— HI91 以 100 Hz 输出(当前串口)LOG COM2 HI91 ONTIME 0.01— 在 COM2 上以 100 Hz 输出 HI91LOG HI91 ONTIME 0— 关闭 HI91 输出LOG HI91 ONMARK 1— HI91 配置为 SYNC_IN/PPS 脉冲触发LOG HI91 ONMARK ONCE— 手动触发一次 HI91 输出
警告:高帧率(如 500 Hz)下默认
115200波特率可能不足,请提高波特率(如921600)。带宽估算见附录「输出带宽与波特率」。
HI83 字段配置 — LOG HI83 MAP <BITMAP>
BITMAP 为十六进制或十进制,每位对应一种数据段(位定义见「可变类型数据帧(HI83)」)。默认 0x000000FF。
本手册定义的 HI83 字段为 bit0-bit11(字段掩码:0x00000FFF)。其他位未在本手册定义,用户不应置位;MRU 海浪补偿使用 bit10/bit11。
| 命令 | 说明 |
|---|---|
LOG HI83 MAP 0x000000FF | 默认组合:加速度/角速度/磁场/欧拉角/四元数/系统时间/UTC/气压 |
LOG HI83 MAP 0x0000001F | IMU+姿态基础:加速度/角速度/磁场/欧拉角/四元数 |
注意:
MAP仅选择 HI83 输出哪些字段;帧的开关与频率仍由LOG HI83 ONTIME <周期>设置(见上)。MAP写入后会持久化,运行中的 HI83 字段映射需复位或重新上电后按新值加载。
查询子命令
| 命令 | 输出内容 |
|---|---|
LOG VERSION | PNAME、BUILD、UUID、SN、APP_VER、BL_VER |
LOG COMCONFIG | 当前串口配置:波特率、各数据帧的 ONTIME / ONMARK 设置、HI83 MAP |
LOG USRCONFIG | 用户配置:安装方向(URFR)、世界坐标系(COORD) |
LOG MCAL STAT | 地磁校准状态:STAT、PROGRESS、QUALITY |
命令响应与错误码
ASCII 命令执行后通过同一串口返回结果。成功通常回显 OK(或对应查询内容),失败返回以 ERROR / ERR 开头的提示。常见响应汇总:
| 来源 | 响应 | 含义 |
|---|---|---|
| 通用配置 | OK | 命令已接受 |
SERIALCONFIG | ERROR: Unsupported baud | 波特率不在 9 档支持值内 |
CONFIG USRCAL STOP | OK / ERR | 陀螺校准成功 / 校验未通过(见「CONFIG 配置命令」) |
LOG MCAL STAT | STAT=4 | 地磁校准失败(排查见「地磁校准与磁环境」) |
| CANopen SDO | abort 0x06090030 | 数值超出范围 |
| CANopen SDO | abort 0x06010000 | 不支持的访问 |
注意:Modbus / J1939 / CANopen 各总线的错误与应答机制见对应协议章(「Modbus RTU 协议」「CAN 协议」)。
统一数据字典
模块支持多种数据输出协议,覆盖不同的物理接口与上层总线:
| 协议 | 物理接口 | 特点 | 详见 |
|---|---|---|---|
| HiPNUC 二进制(HI91 / HI83) | RS-232 / TTL / USB | 出厂默认;HI91 定长、HI83 位图可配置 | 「串口二进制协议」 |
| Modbus RTU | RS-485 | 工业标准,寄存器读写 | 「Modbus RTU 协议」 |
| J1939 | CAN 2.0B | 车载/工业总线,PGN 周期广播 | 「CAN 协议」J1939 |
| CANopen | CAN 2.0B | 标准从站,TPDO 输出 | 「CAN 协议」CANopen |
注意:配置与数据分离:模块维护同一份传感与状态数据,各输出协议只负责按各自帧格式封装。配置由 ASCII 命令负责(见「ASCII 命令参考」),本章及后续各协议章描述数据输出。
本章定义各协议共有物理量的规范语义;每个物理量在此定义一次(SI),各协议章只描述其封帧方式。本章各表为跨协议速查对照;某一协议的权威比例因子与地址,以该协议章的寄存器/字段表为准。 HI83 的完整字段字典见「可变类型数据帧(HI83)」。
警告:跨协议单位差异:同一物理量在不同协议中的数据类型、比例因子、单位并不相同。这是固件的既有事实(非笔误)。请严格按所用协议的列解码,切勿跨协议套用比例因子。比例因子约定见「数据类型、字节序与比例因子」:物理值 = 原始值 × 比例因子。
解码陷阱速览
下表仅列跨协议易混淆项;逐项精确解码(地址 / 类型 / 比例 / 单位)见所用协议章的寄存器/字段表。
| 物理量 | 跨协议陷阱 | 套错后果 |
|---|---|---|
| 加速度 | 4 种解码:HI91 = G(f32)、HI83 = m/s²(f32)、Modbus / J1939 = i16 ×0.00048828 → G(±16 G)、CANopen = mG(×0.001 G) | 量纲差 9.8×(G ↔ m/s²)或 1000×(G ↔ mG) |
| 航向 yaw | 一帧双表示:J1939 同帧并存 u32 = CW 0–360 与 i32 = ±180;HI91 / HI83 / Modbus / CANopen 均为 CCW/raw | 取错字段 → 方向与符号全反 |
| 系统时间 | 三种时基:HI91 = 墙钟 ms、HI83 = 开机 μs、Modbus = 开机 ms、J1939 = UTC 打包;CANopen 不输出 | 跨协议相减 → 时间戳无意义 |
| 倾角 | 4 种编码:HI83 = f32 deg、Modbus = i16 ×0.011 deg、J1939 = i32 ×0.001 deg、CANopen = i32 ×0.01 deg;HI91 不输出 | 套错比例 / 类型 → 数值错 |
| 角速度 | 单位 / 比例多样:HI91 = deg/s(f32)、HI83 = rad/s(f32,差 57.3×)、Modbus / J1939 = i16 ×0.061 → deg/s、CANopen = i16 ×0.1 deg/s(较粗) | 量纲差 57.3×(deg/s ↔ rad/s)或比例套错 |
| 欧拉角 | CANopen 比例较粗:×0.01 deg(≠ Modbus / J1939 ×0.001 deg;HI91 / HI83 为 f32 deg) | 精度 / 数值与预期不符 |
| 磁场 | 任何 CANopen TPDO 都没有磁场 | 在 CANopen 找不到该量 |
输出覆盖一览
✓ = 该协议输出此量;— = 不输出。精确地址 / 比例 / 单位见所用协议章的寄存器/字段表。
| 物理量 | HI91 | HI83 | Modbus | J1939 | CANopen |
|---|---|---|---|---|---|
| 加速度 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 角速度 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 磁场 | ✓ | ✓ | ✓ | ✓ | — |
| 横滚 / 俯仰 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 航向 yaw | ✓ | ✓ | ✓ | ✓ | ✓ |
| 四元数 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 温度 | ✓ | ✓ | ✓ | ✓ | — |
| 气压 | ✓ | ✓ | ✓ | — | ✓ |
| 系统时间 | ✓ | ✓ | ✓ | ✓ | — |
| 倾角 | — | ✓ | ✓ | ✓ | ✓ |
| 垂荡 / 纵荡 / 横荡 | — | ✓ | ✓ | — | — |
串口二进制协议
RS-232、串口 TTL 以及 USB(虚拟串口)均为流式串行接口,统一使用超核自定义二进制协议输出。该协议为模块出厂默认输出协议。串口参数为 8 数据位、无校验、1 停止位(8N1),出厂默认波特率 115200 bps(见附录「出厂默认配置」)。
帧格式
| 域 | 值 | 长度(字节) | 说明 |
|---|---|---|---|
| SOF | 5A A5 | 2 | 帧头同步标志 |
| LEN | 1–512 | 2 | 数据域长度(小端,不含帧头/长度/CRC) |
| CRC | — | 2 | 对帧头、长度、数据域的 16 位 CRC(不含 CRC 字段本身) |
| 数据域 | — | 1–512 | 由若干子数据段组成;每个子数据段由标签(tag)和数据两部分构成,标签决定其类型与长度 |
警告:帧长上限:数据域最大 512 字节(整帧最大 518 字节)。解码器对超过 512 字节的数据域直接拒绝。本手册定义的 HI83 公开字段全部启用时,数据域共 132 字节,仍在上限内。
警告:字节序:所有多字节数值均为 小端(低字节在前)。详见「数据类型、字节序与比例因子」。
出厂默认输出:浮点型 IMU 数据帧(HI91)。
浮点型 IMU 数据帧(HI91)
数据域共 76 字节,包含模块状态、温度、IMU 原始数据、磁场、气压及融合后的姿态。
| 偏移 | 名称 | 类型 | 大小 | 单位 | 说明 |
|---|---|---|---|---|---|
| 0 | tag | uint8 | 1 | — | 数据标签:0x91 |
| 1 | main_status | uint16 | 2 | — | 状态字,见「MAIN_STATUS 状态字」 |
| 3 | temperature | int8 | 1 | °C | 模块平均温度 |
| 4 | air_pressure | float | 4 | Pa | 气压 |
| 8 | system_time | uint32 | 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 | 航向角 |
| 60 | quat | float | 4×4 | — | 四元数,顺序 WXYZ |
警告:单位差异:HI91 的角速度单位为 deg/s;HI83 的
gyr_b单位为 rad/s(两者相差 57.3 倍)。请按所解析的帧类型选择正确单位。
可变类型数据帧(HI83)
HI83 为可配置变长帧,按 data_bitmap 输出不同的数据组合,帧长随配置改变。适用于需要同时输出 IMU、姿态、时间等数据并希望按需控制带宽的场景。
固定头部(8 字节)后紧跟由 data_bitmap 选择的数据段。数据段排列顺序见下方“数据段排列与偏移计算”,解析器必须按该顺序累加偏移,不可只按 bit 数值推断。
| 偏移 | 名称 | 类型 | 大小 | 说明 |
|---|---|---|---|---|
| 0 | tag | uint8 | 1 | 数据标签:0x83 |
| 1 | main_status | uint16 | 2 | 状态字,见「MAIN_STATUS 状态字」 |
| 3 | status_ext | uint8 | 1 | 状态扩展字节;本手册不定义具体位含义,通用解析器可忽略 |
| 4 | data_bitmap | uint32 | 4 | 数据段位图,每位对应一种数据段 |
| 8 | … | — | 变长 | 按下方线序排列的数据段 |
data_bitmap 位定义(配置方式见「LOG 命令」的 HI83 字段配置)。下表为公开 IMU/AHRS/MRU 字段字典;产品未启用对应功能时,字段可能为 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 | 欧拉角:横滚 −180~180、俯仰 −90~90、航向 −180~180(逆时针为正) |
| 4 | quat | float | 4×4 | — | 四元数,顺序 WXYZ |
| 5 | system_time_us | uint64 | 8 | μs | 本地高分辨率时间戳(开机累计微秒,不受对时影响) |
| 6 | utc | — | 8 | — | UTC 时间:年偏移(1,year-2000,如 24=2024)、月(1)、日(1)、时(1)、分(1)、秒(2,单位 ms,如 12 s = 12000)、保留(1) |
| 7 | air_pressure | float | 4 | Pa | 气压 |
| 8 | temperature | float | 4 | °C | 模块平均温度 |
| 9 | inclination | float | 4×3 | deg | 倾角仪输出,顺序 inclination_x / inclination_y / yaw;第三个 float 为航向角,不是 Z 轴倾角 |
| 10 | heave_surge_sway | float | 4×3 | m | MRU 位移:垂荡、纵荡、横荡 |
| 11 | heave_surge_sway_frq | float | 4×3 | Hz | MRU 频率:垂荡、纵荡、横荡 |
| 12–31 | 扩展 | — | — | — | 交付专用扩展字段,本手册不定义;通用用户不应主动置位 |
注意:数据段排列与偏移计算:本手册定义的 HI83 公开字段按 bit0–bit11 的顺序拼接,公开字段掩码为
0x00000FFF。bit12 及以上可能启用未公开扩展字段,通用用户不应主动置位;禁止使用0xFFFFFFFF等全开配置,否则帧长和字段语义无法仅按本手册解析。未置位字段不出现,整帧相应变短;解析时须按表中字段大小逐项累加偏移。
CRC 校验
采用 CRC-16/XMODEM(部分工具中亦标注为 CRC-16/CCITT):多项式 0x1021,初值 0x0000,无输入/输出反转,无最终异或。校验范围为帧头(2) + 长度(2) + 数据域,不含 CRC 字段本身。
/*
currentCrc: previous crc value, set 0 if it's the first section
src: source stream data
lengthInBytes: length
*/
static void crc16_update(uint16_t *currentCrc, const uint8_t *src, uint32_t lengthInBytes)
{
uint32_t crc = *currentCrc;
for (uint32_t j = 0; j < lengthInBytes; ++j)
{
crc ^= (uint32_t)src[j] << 8;
for (uint32_t i = 0; i < 8; ++i)
{
uint32_t temp = crc << 1;
if (crc & 0x8000)
temp ^= 0x1021;
crc = temp;
}
}
*currentCrc = crc;
}帧解析示例(HI91)
一帧 HI91 共 82 字节:前 6 字节为帧头/长度/CRC,其后 76 字节为数据域。示例帧(接收到数组 buf):
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 | payload 起始 |
| main_status | uint16 | 08 15 | 0x1508 | 状态字 |
| temperature | int8 | 23 | 35 | °C |
| air_pressure | float | 09 A2 C4 47 | 100676 | Pa |
| system_time | uint32 | 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.189 / −122.477 | deg |
| quat w/x/y/z | float | … | −0.4859 / −0.1498 / 0.0381 / 0.8602 | — |
C 语言解析示例(HI91)
下面示例解析一帧完整 HI91。若处理连续串口字节流,应先完成帧同步和缓存,再把完整帧传入该函数。示例依赖上文的 crc16_update();协议字节序为小端,浮点数按 IEEE-754 单精度编码,不建议把 payload 直接强转为 C 结构体。
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#define HIPNUC_SOF0 0x5Au
#define HIPNUC_SOF1 0xA5u
#define HIPNUC_MAX_PAYLOAD 512u
#define HI91_TAG 0x91u
#define HI91_PAYLOAD_LEN 76u
typedef struct {
uint8_t tag; /* 0x91 */
uint16_t main_status; /* status word */
int8_t temperature; /* deg C */
float pressure; /* Pa */
uint32_t timestamp; /* ms */
float acc[3]; /* G */
float gyr[3]; /* deg/s */
float mag[3]; /* uT */
float eul[3]; /* deg */
float quat[4]; /* WXYZ */
} imu_data_t;
static uint8_t U1(const uint8_t *src)
{
return src[0];
}
static int8_t I1(const uint8_t *src)
{
return (int8_t)src[0];
}
static uint16_t U2(const uint8_t *src)
{
return (uint16_t)src[0] | ((uint16_t)src[1] << 8);
}
static uint32_t U4(const uint8_t *src)
{
return (uint32_t)src[0] |
((uint32_t)src[1] << 8) |
((uint32_t)src[2] << 16) |
((uint32_t)src[3] << 24);
}
static float R4(const uint8_t *src)
{
uint32_t raw = U4(src);
float value;
memcpy(&value, &raw, sizeof(value));
return value;
}
bool parse_hi91_frame(const uint8_t *buf, size_t len, imu_data_t *out)
{
if (buf == NULL || out == NULL) {
return false;
}
if (len < 6u) {
return false;
}
if (buf[0] != HIPNUC_SOF0 || buf[1] != HIPNUC_SOF1) {
return false;
}
uint16_t payload_size = U2(buf + 2);
if (payload_size > HIPNUC_MAX_PAYLOAD || payload_size != HI91_PAYLOAD_LEN) {
return false;
}
if (len != (size_t)payload_size + 6u) {
return false;
}
uint16_t crc = 0;
crc16_update(&crc, buf, 4); /* SOF + LEN */
crc16_update(&crc, buf + 6, payload_size); /* payload */
if (crc != U2(buf + 4)) {
return false;
}
const uint8_t *data = buf + 6;
if (U1(data) != HI91_TAG) {
return false;
}
imu_data_t decoded = {0};
decoded.tag = U1(data + 0);
decoded.main_status = U2(data + 1);
decoded.temperature = I1(data + 3);
decoded.pressure = R4(data + 4);
decoded.timestamp = U4(data + 8);
for (int i = 0; i < 3; i++) {
decoded.acc[i] = R4(data + 12 + (size_t)i * 4u);
decoded.gyr[i] = R4(data + 24 + (size_t)i * 4u);
decoded.mag[i] = R4(data + 36 + (size_t)i * 4u);
decoded.eul[i] = R4(data + 48 + (size_t)i * 4u);
}
for (int i = 0; i < 4; i++) {
decoded.quat[i] = R4(data + 60 + (size_t)i * 4u);
}
*out = decoded;
return true;
}Modbus RTU 协议
Modbus 是工业自动化领域的通用协议。带 RS-485 或以太网接口的产品通常支持 Modbus,具体以实际型号和交付配置为准。当前固件默认将 Modbus 从站挂载在 COM1 对应的 RS-485 通道上。
遵循 Modbus RTU 规范:数据以寄存器为单位收发,每寄存器 2 字节,采用 大端(高字节在前),采用标准 Modbus CRC 校验。
警告:字节序提示:Modbus 寄存器为大端,与二进制/CAN 协议的小端不同。
支持的功能码:
0x03(Read Holding Registers):读取单个或多个寄存器0x06(Write Single Register):写单个寄存器
出厂默认节点 ID: 80(0x50)。
帧格式
读寄存器(0x03)— 主机请求:
| 域 | 值 | 说明 |
|---|---|---|
| ID | 1–247 | 节点 ID |
| FUN | 0x03 | 功能码 |
| ADDR_H / ADDR_L | — | 起始寄存器地址(高/低 8 位) |
| LEN_H / LEN_L | — | 读取寄存器个数(高/低 8 位) |
| CRC_L / CRC_H | — | CRC(低/高 8 位) |
读寄存器(0x03)— 从机响应: ID, 0x03, LEN(字节数), DATA_H, DATA_L, …, CRC_L, CRC_H
写寄存器(0x06)— 主机请求 / 从机响应(回显相同): ID, 0x06, ADDR_H, ADDR_L, DATA_H, DATA_L, CRC_L, CRC_H
注意:写入越界值(如 Modbus ID 超出 1–247)或对只读寄存器执行
0x06时,从机仍回显请求帧(不返回异常帧),但该值不会生效;读取未定义地址返回 0。配置关键参数后请回读确认。
寄存器列表
下表列出常用读取与配置寄存器。其余配置项(CAN / 串口 / J1939 周期等)请见对应协议章(「CAN 协议」)及 ASCII 命令(见「ASCII 命令参考」)。
| 地址 | 名称 | 类型 | R/W | 单位 / 比例 | 说明 |
|---|---|---|---|---|---|
| 0x00 | CTRL | u16 | W | — | 控制寄存器,见下 |
| 0x04 | UART1_BAUD | u16 | R/W | — | 串口波特率档位 |
| 0x05 | MD_ID | u16 | R/W | — | Modbus ID,有效范围 1–247(出厂默认 80) |
| 0x06 | HEADING_MODE | u16 | R/W | — | 工作模式:0=6 轴(相对航向,上电为 0)、1=9 轴(地磁融合,绝对航向);其余专用模式(4/5/7 等)见「CONFIG ATT MODE」 |
| 0x34–0x36 | ACC X/Y/Z | i16 | R | G,×0.00048828 | 加速度(1 G ≈ 9.8 m/s²) |
| 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 | 横滚角(大端 32 位) |
| 0x3F–0x40 | PITCH (H/L) | i32 | R | deg,×0.001 | 俯仰角 |
| 0x41–0x42 | YAW (H/L) | i32 | R | deg,×0.001 | 航向角 |
| 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:双轴 ±180°;单轴 0–360° |
| 0x4B | INCLI_Y | i16 | R | deg,×0.011 | 倾角仪 Y:双轴 ±90°;单轴产品保留 |
| 0x4C–0x4D | CPUTIME (H/L) | i32 | R | ms | 系统运行时间(自上电累计毫秒,大端 32 位);始终为本地运行时间,不随对时切换为 UTC,约 24.8 天后溢出。需当日 UTC 毫秒请改用数据帧 system_time(见「时间与时间戳」) |
| 0x4E–0x50 | HEAVE/SURGE/SWAY | i16×3 | R | m,×0.01 | MRU 垂荡/纵荡/横荡位移 |
| 0x51–0x53 | HEAVE/SURGE/SWAY_FRQ | i16×3 | 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 | — | 姿态控制:1 航向复位 / 2 相对零点 / 3 自动校平 / 5 取消校平(见下) |
| 0xA6 | URFR | u16 | R/W | — | 安装方向编码,见「安装方向」 |
控制寄存器(0x00)写入值: 0x0000 保存所有参数到 Flash;0x0001 恢复出厂设置;0x00FF 复位。
ATT_RST(0xA5): 1 航向复位(当前航向角置零);2 设置相对零点(当前 Pitch/Roll 置零);3 自动校平——仅当当前 Pitch/Roll 均接近 0°(阈值 5°)时校平到 0°,0°,否则命令无效果;5 取消自动校平,恢复绝对角度。
注意:ATT_RST 其他数值为保留或兼容用途,不作为公开接口使用。
常用配置示例
注意:以下示例均以出厂默认 ID
0x50为例;若已修改 Modbus ID,需同步修改报文 ID 字段并重算 CRC。
| 操作 | 报文(Hex) |
|---|---|
| 保存所有参数到 Flash | 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 轴模式(VAL=0) | 50 06 00 06 00 00 64 4A |
| 设为 9 轴模式(VAL=1) | 50 06 00 06 00 01 A5 8A |
| 设为低动态/倾角仪模式(VAL=7) | 50 06 00 06 00 07 25 88 |
| 航向复位(当前航向角置零) | 50 06 00 A5 00 01 55 A8 |
| 设置相对零点(Pitch/Roll 置零) | 50 06 00 A5 00 02 15 A9 |
| 启动自动校平 | 50 06 00 A5 00 03 D4 69 |
| 取消自动校平 | 50 06 00 A5 00 05 54 6B |
注意:工作模式(0x06)DATA = 「CONFIG ATT MODE」的 VAL(公开 0/1/4/5/7);姿态控制(0xA5)DATA = ATT_RST 模式码(1/2/3/5,见上「ATT_RST(0xA5)」)。改 DATA 后需重算 CRC。
配置波特率(0x04):
| 目标波特率 | 报文(ID=0x50) |
|---|---|
| 4800 | 50 06 00 04 00 00 C5 8A |
| 9600 | 50 06 00 04 00 01 04 4A |
| 19200 | 50 06 00 04 00 02 44 4B |
| 38400 | 50 06 00 04 00 03 85 8B |
| 57600 | 50 06 00 04 00 04 C4 49 |
| 115200 | 50 06 00 04 00 05 05 89 |
| 230400 | 50 06 00 04 00 06 45 88 |
| 460800 | 50 06 00 04 00 07 84 48 |
| 921600 | 50 06 00 04 00 08 C4 4C |
配置节点 ID(0x05): 格式 [CURRENT_ID] 06 00 05 00 [NEW_ID] CRC(2B)。
- 设
NEW_ID=0x51:50 06 00 05 00 51 55 B6
警告:节点 ID 修改后立即生效,后续报文需使用新 ID。不熟悉 Modbus 报文构造时,建议使用上位机工具完成配置。
设置安装方式(0xA6):
| 安装方式 | 报文(ID=0x50) |
|---|---|
| 水平,Z 轴朝上(默认) | 50 06 00 A6 00 18 64 62 |
| 绕 X 轴 −90°(Y 朝下垂直) | 50 06 00 A6 00 2B 24 77 |
| 绕 X 轴 +90°(Y 朝上垂直) | 50 06 00 A6 00 34 65 BF |
| 绕 Y 轴 +90°(X 朝上垂直) | 50 06 00 A6 02 08 64 CE |
| 绕 Y 轴 −90°(X 朝下垂直) | 50 06 00 A6 01 A5 A5 83 |
注意:报文 DATA(第 5–6 字节)= URFR 安装方向编码的十进制值转十六进制(高字节在前),如 24→
00 18、520→02 08、421→01 A5;完整 24 种合法安装方向见「安装方向」。改编码后需重算 CRC。
读取版本信息(0x70–0x82)
请求:50 03 00 70 00 14 49 9F(从 0x70 读 20 个寄存器)。
响应(示例):
50 03 28 48 49 31 34 52 32 4E 2D 34 38 35 2D 30 30 30 00 00 98 00 6B 00 00 00 00 00 00 00 00 00 00 04 7D 95 5F 8D 2A 17 08 00 00 4D 0C数据长度 0x28=40 字节。48 49 31 34 52 32 4E 2D 34 38 35 2D 30 30 30 为产品名 ASCII(HI14R2N-485-000),其后依次为软件版本、Bootloader 版本、序列号。
读取 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,再乘比例因子(见上表 Yaw 行:
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,均为有符号 16 位整数。位移比例因子为 ×0.01 m,频率比例因子为 ×0.01 Hz。
CAN 协议
CAN 总线上提供两类高层协议,按交付配置启用其一:J1939(默认,基于 CAN 2.0B 扩展帧)与 CANopen(标准从站,基于 CAN 2.0B 标准帧,TPDO 输出)。支持 CANFD 的产品可在 J1939 下额外输出 CANFD 帧 0。
集成前检查:
| 检查项 | J1939 | CANopen |
|---|---|---|
| 交付协议 | 确认交付固件启用 J1939 | 确认交付固件启用 CANopen 从站(定制固件) |
| CAN 波特率 | 默认 500 kbit/s,实际值以产品交付为准 | 默认 500 kbit/s,实际值以产品交付为准 |
| 节点 ID / 地址 | 默认 8,推荐 1–126 | 默认 8,推荐 1–126 |
| 帧类型 | CAN 2.0B 扩展帧;CANFD 帧 0 仅支持 CANFD 产品 | CAN 2.0B 标准帧 |
| 默认输出状态 | 数据 PGN 默认周期广播 | TPDO 默认关闭,需先写入 TPDO 周期 |
| 硬件接线 | 终端电阻、屏蔽、线序和收发器电平见硬件手册 | 同左 |
J1939(CAN)
支持 CAN 输出的产品默认采用 J1939 协议,遵循 SAE J1939 标准(基于 CAN 2.0B 扩展帧的高层协议)。支持 CANFD 的产品可额外输出 CANFD 帧 0。
CAN 扩展帧格式
J1939 使用 29 位扩展标识符:
CAN_ID = (P<<26)|(R<<25)|(DP<<24)|(PF<<16)|(PS<<8)|SA其中 P/R/DP/PF/PS/SA 位域见上图。本产品所有数据 PGN 均为厂商自定义格式(PF=0xFF);各数据 PGN 见「PGN 消息列表」。
警告:字节序:J1939 数据域为 小端(低字节在前)。例如 32 位
0x12345678在帧中为78 56 34 12。
协议参数
| 参数 | 默认 | 可选 / 说明 |
|---|---|---|
| CAN 标称波特率 | 500 kbit/s | 125K / 250K / 500K / 800K / 1000K,以实际产品为准 |
| 帧格式 | CAN 2.0B 扩展帧(29 位);CANFD 帧 0 仅支持 CANFD 产品 | 符合 J1939 |
| 数据长度 | 8 字节;CANFD 帧 0 为 64 字节 | 按帧类型 |
| 帧优先级 | 3 | 0–7,0 最高 |
| 节点地址 | 8 | 公开建议使用 1–126;127 在部分型号中保留。数据 PGN 以广播地址 255 发送,请勿将设备设为 255 |
| 数据格式 | 小端 | 多字节低位在前 |
PGN 消息列表
下表仅列出本手册公开的 IMU/AHRS J1939 经典 CAN 数据 PGN(CAN ID 形如 0x0CFF[PS][SA],优先级 3 → 高位 0x0C)。MRU 位移 / 频率输出见 HI83 或 Modbus;CANFD 帧 0 见下文,且仅存在于支持 CANFD 的产品上。
| PGN(hex) | PGN(十进制) | PS | 名称 | 适用 |
|---|---|---|---|---|
| 0xFF2F | 65327 | 0x2F | 时间信息(UTC 或本地运行时间) | 全部 |
| 0xFF34 | 65332 | 0x34 | 三轴加速度 | 全部 |
| 0xFF37 | 65335 | 0x37 | 三轴角速度 | 全部 |
| 0xFF3A | 65338 | 0x3A | 三轴磁场强度 | 9 轴产品 |
| 0xFF3D | 65341 | 0x3D | 俯仰/横滚角 | 全部 |
| 0xFF41 | 65345 | 0x41 | 航向角 | 全部 |
| 0xFF46 | 65350 | 0x46 | 四元数 | 全部 |
| 0xFF4A | 65354 | 0x4A | 倾角仪输出 | 倾角仪产品 |
| 0xFF43 | 65347 | 0x43 | 温度 | 全部 |
各 PGN 数据域(未列字节为保留,固定 0):
0xFF2F 时间信息
| 字节 | 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|---|
| 0–5 | 年/月/日/时/分/秒 | uint8×6 | — | 年如 24=2024 |
| 6–7 | 毫秒 | uint16 | ms | 小端 |
示例:CAN ID 0x0CFF2F08,数据 18 06 12 0E 1E 2D 58 02 → 2024-06-18 14:30:45.600 UTC。
完成 UTC 对时后,0xFF2F 输出有效 UTC 年月日时分秒;未完成 UTC 对时时,年/月/日字段为 0,时/分/秒/毫秒来自本地 24 h 回绕时间,不可作为绝对 UTC。同步状态以 MAIN_STATUS.UTC_UNSYNC 判断。
0xFF34 加速度 / 0xFF37 角速度 / 0xFF3A 磁场(结构相同,比例因子不同;满量程:加速度 ±16 G、角速度 ±2000°/s、磁场 ±1000 μT)
| 字节 | 字段 | 类型 | 比例因子 | 单位 |
|---|---|---|---|---|
| 0–1 | X | int16 | 加速度 0.00048828 / 角速度 0.061035 / 磁场 0.030517 | G / deg/s / μT |
| 2–3 | Y | int16 | 同上 | 同上 |
| 4–5 | Z | int16 | 同上 | 同上 |
0xFF3D 俯仰/横滚
| 字节 | 字段 | 类型 | 比例因子 | 单位 |
|---|---|---|---|---|
| 0–3 | 横滚 Roll | int32 | 0.001 | deg |
| 4–7 | 俯仰 Pitch | int32 | 0.001 | deg |
0xFF41 航向(一帧两种表示,见「航向(yaw)约定」)
| 字节 | 字段 | 类型 | 比例因子 | 单位 |
|---|---|---|---|---|
| 0–3 | 航向(0–360°,顺时针为正) | uint32 | 0.001 | deg |
| 4–7 | 航向(±180°,逆时针为正) | int32 | 0.001 | deg |
0xFF46 四元数
| 字节 | 字段 | 类型 | 比例因子 |
|---|---|---|---|
| 0–1 / 2–3 / 4–5 / 6–7 | qw / qx / qy / qz | int16 | 0.0001 |
0xFF4A 倾角仪(倾角仪产品)
| 字节 | 字段 | 类型 | 比例因子 | 单位 |
|---|---|---|---|---|
| 0–3 | X 轴倾角(可配 0–360° 或 ±180°) | int32 | 0.001 | deg |
| 4–7 | Y 轴倾角(±90°) | int32 | 0.001 | deg |
0xFF43 温度
| 字节 | 字段 | 类型 | 比例因子 | 单位 |
|---|---|---|---|---|
| 0–1 | 温度 | int16 | 0.01 | °C |
| 2–3 | 保留 | — | — | 固定 0 |
| 4–7 | 保留 | uint32 | — | 固定占位值 999;不是气压,请勿解析为 pressure |
0xFF5A CANFD 帧 0
CANFD 帧 0 仅存在于支持 CANFD 的产品上,用于在单帧 64 字节数据域中打包常用 IMU/AHRS 状态与姿态数据。经典 CAN 产品不输出该帧;若产品未明确支持 CANFD,请忽略本小节。
| 偏移 | 字段 | 类型 | 比例因子 | 单位 |
|---|---|---|---|---|
| 0–1 | main_status | uint16 | — | 见「MAIN_STATUS 状态字」 |
| 2–3 | 保留 | uint16 | — | 固定 0 |
| 4–7 | system_time | uint32 | 1 | ms |
| 8 / 10 / 12 | acc x/y/z | int16 | 0.00048828 | G |
| 14 / 16 / 18 | gyr x/y/z | int16 | 0.061035 | deg/s |
| 20 / 22 / 24 | mag x/y/z | int16 | 0.030517 | μT |
| 26 / 30 / 34 | roll / pitch / yaw | int32 | 0.001 | deg |
| 38 / 40 / 42 / 44 | qw/qx/qy/qz | int16 | 0.0001 | — |
| 46–47 | temperature | int16 | 0.01 | °C |
| 48–63 | 保留 | — | — | — |
注意:CANFD 帧 0 的 CAN ID、DBC 名称及是否默认输出以支持 CANFD 的产品资料为准。
配置协议
主机通过专用配置 PGN 对设备参数进行读写。
配置帧格式:CAN ID = 0x0CEF[DA][SA](DA=产品节点 ID 或广播 255,SA=主机地址)。数据载荷:
| 字节 | 字段 | 类型 | 说明 |
|---|---|---|---|
| 0–1 | ADDR | uint16 | 参数地址(小端),取值见下方配置示例 |
| 2 | CMD | uint8 | 0x06=写,0x03=读 |
| 3 | 保留 | uint8 | 设备原样回显(不承载状态码);主机写 0 |
| 4–7 | VAL | uint32 | 数据值(小端) |
配置应答规则:
| 请求类型 | 是否应答 | 应答 CAN ID | 主机处理方式 |
|---|---|---|---|
| 点对点写(DA = 具体节点 ID) | 是 | 0x0CEF55[节点ID] | 写成功时返回请求回显 |
| 点对点读(DA = 具体节点 ID) | 是 | 0x0CEF55[节点ID] | 读成功时返回 ADDR + CMD + VAL |
| 广播写(DA = 255) | 否 | — | 不等待应答,必要时读回确认 |
| 地址非法、数值越界或访问不支持 | 否 | — | 按超时判失败 |
应答的目标地址为 0x55、源地址为设备节点 ID,如节点 8 的应答 CAN ID 为 0x0CEF5508。为简化接收过滤,建议主机发送配置请求时使用 SA=0x55。
PGN 发送周期通过配置帧写入周期参数。仅下表列出的周期参数为公开配置项,未列参数不作为通用用户接口。
常用配置示例(默认节点 ID=8):
[VAL] 均为 4 字节 uint32 小端。100 ms 周期写作 64 00 00 00;SYNC_IN 触发模式写作 00 80 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(航向)发送周期 |
46 01 06 00 [VAL] | PGN 0xFF46(四元数)发送周期 |
4A 01 06 00 [VAL] | PGN 0xFF4A(倾角仪)发送周期 |
43 01 06 00 [VAL] | PGN 0xFF43(温度)发送周期 |
5A 01 06 00 [VAL] | CANFD 帧 0 发送周期;仅支持 CANFD 的产品有效 |
A5 00 06 00 [VAL] | 姿态控制:VAL=1 航向复位 / 2 设置相对零点 / 3 自动校平 / 5 取消校平 |
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;写入即保存,复位或重新上电后生效 |
9C 00 06 00 [VAL] | J1939 节点 ID:推荐 1–126;127 在部分型号中保留;写入即保存,复位或重新上电后生效 |
9E 00 06 00 [VAL] | 倾角仪 X 轴方向:0=默认,1=反向 |
9F 00 06 00 [VAL] | 倾角仪 Y 轴方向:0=默认,1=反向 |
00 00 06 00 00 00 00 00 | 保存所有参数到 Flash |
00 00 06 00 01 00 00 00 | 恢复出厂设置(自动保存并复位) |
00 00 06 00 FF 00 00 00 | 复位 |
周期 VAL 说明:0 关闭;5/10/20/50/100/200/500/1000 ms 为推荐周期;0x8000 为 SYNC_IN 触发模式。
警告:周期特殊值
0x8000(SYNC_IN 触发模式):将某 PGN 的发送周期写为0x8000后,该 PGN 不再定时发送,改为在外部 SYNC_IN 上升沿 输出一帧。例如把34 01 06 00的 VAL 设为00 80 00 00即令加速度 PGN 进入 SYNC_IN 触发模式。标准固件已接入该触发路径;客户定制固件是否支持以交付说明为准。
注意:示例:ID=
0x0CEF0855,数据37 01 06 00 64 00 00 00→ 将 PGN 0xFF37(角速度)设为 100 ms 周期(10 Hz)。该例 DA=0x08,SA=0x55;SA 可为任意主机地址。若主机按应答目标地址过滤接收,请固定 SA=0x55。
时间同步
J1939 的 PGN 0xFF2F 仅用于 输出 模块当前时间信息,不作为对时输入。若需对模块内部时钟进行 UTC 同步,请使用「同步功能」中的 PPS + 串口时间消息方案。
CANopen(CAN)
部分产品或交付配置支持 CANopen 从站通信(是否启用以实际型号为准)。CANopen 使用标准数据帧,常用数据通过 TPDO1/2/3/4/6/7 传输,不使用远程帧与扩展帧。TPDO 为异步定时触发;如需同步模式见「TPDO 速率与同步配置」。
默认设置
| 项 | 值 |
|---|---|
| CAN 标称波特率 | 500 kbit/s |
| 节点 ID | 8 |
| 初始化状态 | Operational |
| TPDO 输出周期 | 默认 0 = 不主动输出;需经 SDO 写入各 TPDO 周期后才开始发送(见「TPDO 速率与同步配置」) |
警告:出厂默认所有 TPDO 周期为 0(不输出)。CANopen 上电后不会主动发数据,必须先按「TPDO 速率与同步配置」配置所需 TPDO 的输出周期。
TPDO 映射
| 通道 | 帧 ID | DLC | 数据 | 类型 / 比例 / 单位 |
|---|---|---|---|---|
| TPDO1 | 0x180+ID | 6 | 加速度 X/Y/Z | int16,mG(0.001 G) |
| TPDO2 | 0x280+ID | 6 | 角速度 X/Y/Z | int16,0.1 deg/s |
| TPDO3 | 0x380+ID | 6 | 欧拉角 Roll/Pitch/Yaw | int16,0.01 deg |
| TPDO4 | 0x480+ID | 8 | 四元数 W/X/Y/Z | int16,raw × 0.0001;raw=10000 → 1.0000 |
| TPDO6 | 0x680+ID | 4 | 气压 | int32,Pa |
| TPDO7 | 0x780+ID | 8 | 倾角仪 X/Y | int32,0.01 deg |
所有多字节字段低字节在前。
警告:比例因子与其他协议不同:CANopen 的加速度为 mG、角速度 0.1 deg/s、欧拉角 0.01 deg,请勿套用 Modbus/J1939 的比例因子(见「统一数据字典」)。
数据解析示例
以下示例假定已按「TPDO 速率与同步配置」打开对应 TPDO 周期。
加速度帧:ID=0x188(节点 8),数据 4A 00 1F 00 C8 03
- X = 0x004A = 74 → 74 mG;Y = 0x001F = 31 → 31 mG;Z = 0x03C8 = 968 → 968 mG
角速度帧:ID=0x288,数据 15 00 14 01 34 00
- X = 0x0015 = 21 → 2.1 deg/s;Y = 0x0114 = 276 → 27.6 deg/s;Z = 0x0034 = 52 → 5.2 deg/s
上位机可用 PCAN-View 配合 PCAN 适配器在接收窗口查看:

配置指令(SDO)
采用 CANopen expedited SDO。主机发送 CAN_ID=0x600+ID,从机响应 CAN_ID=0x580+ID。SDO 数据区固定 8 字节:
CS | Index_L | Index_H | SubIndex | Data0 | Data1 | Data2 | Data3其中 Index 与 Data 均为小端。常用 CS 如下:
| CS | 方向 | 含义 | 数据字节 |
|---|---|---|---|
| 0x23 | 主机→从机 | 写 4 字节 | 4 |
| 0x2B | 主机→从机 | 写 2 字节 | 2 |
| 0x2F | 主机→从机 | 写 1 字节 | 1 |
| 0x40 | 主机→从机 | 读请求 | 0 |
| 0x60 | 从机→主机 | 写成功响应 | 0 |
| 0x43 | 从机→主机 | 读 4 字节响应 | 4 |
| 0x4B | 从机→主机 | 读 2 字节响应 | 2 |
| 0x4F | 从机→主机 | 读 1 字节响应 | 1 |
| 0x80 | 从机→主机 | SDO abort | 4 字节 abort code |
本产品通过厂商对象索引配置常用公开参数。下表仅列出本手册定义的公开对象;未列对象不作为通用用户接口,不要按未列出的厂商对象索引自行推导或访问。写入或读取多字节值时均按小端排列。若设备拒绝访问,返回 0x80 abort 响应;常见 abort code 为 0x06090030(数值超范围)和 0x06010000(不支持访问)。
常用指令(以节点 ID=8,CAN_ID=0x608 为例):
| 操作 | 数据 |
|---|---|
| 修改节点 ID(0x209C,推荐 1–126;127 在部分型号中保留) | 23 9C 20 00 [ID] 00 00 00 |
| 保存所有参数到 Flash(0x2000) | 23 00 20 00 00 00 00 00 |
| 复位(0x2000) | 23 00 20 00 FF 00 00 00 |
| 恢复出厂设置(0x2000) | 23 00 20 00 01 00 00 00 |
| CAN 波特率 1000K(0x209A) | 23 9A 20 00 00 00 00 00 |
| CAN 波特率 800K | 23 9A 20 00 01 00 00 00 |
| CAN 波特率 500K | 23 9A 20 00 02 00 00 00 |
| CAN 波特率 250K | 23 9A 20 00 03 00 00 00 |
| CAN 波特率 125K | 23 9A 20 00 04 00 00 00 |
| 姿态相对零点(0x20A5) | 23 A5 20 00 02 00 00 00 |
| 自动校平 | 23 A5 20 00 03 00 00 00 |
| 取消校平 / 恢复绝对角度 | 23 A5 20 00 05 00 00 00 |
| 读取节点 ID(0x209C) | 40 9C 20 00 00 00 00 00 |
注意:CANopen 参数持久化:TPDO 周期(0x180x.5)与心跳(0x1017)写入后立即生效;CAN 波特率(0x209A)与节点 ID(0x209C)写入后需复位(向 0x2000 写
0xFF)后生效,复位后主机也需切到新波特率 / 新节点 ID。为兼容不同固件版本,配置完成后建议向 0x2000 写0x00保存所有参数到 Flash。
警告:恢复出厂设置后模块自动保存并复位,请谨慎使用。
TPDO 速率与同步配置
TPDO 通道与参数索引对应:
| 通道 | 参数索引 | 数据 |
|---|---|---|
| TPDO1 | 0x1800 | 加速度 |
| TPDO2 | 0x1801 | 角速度 |
| TPDO3 | 0x1802 | 欧拉角 |
| TPDO4 | 0x1803 | 四元数 |
| TPDO6 | 0x1804 | 气压 |
| TPDO7 | 0x1805 | 倾角仪 |
TPDO5 未使用;为兼容既有产品定义,气压使用 TPDO6,倾角仪使用 TPDO7。
修改输出速率(写子索引 5,单位 ms;0=关闭),以加速度(0x1800)为例:
2B 00 18 05 00 00 00 00— 关闭(周期=0)2B 00 18 05 05 00 00 00— 200 Hz(周期=5 ms)2B 00 18 05 0A 00 00 00— 100 Hz(周期=10 ms)2B 00 18 05 14 00 00 00— 50 Hz(周期=20 ms)2B 00 18 05 32 00 00 00— 20 Hz(周期=50 ms)2B 00 18 05 64 00 00 00— 10 Hz(周期=100 ms)
其余通道把索引低字节(帧第 2 字节)改为 01(角速度)/02(欧拉角)/03(四元数)/04(气压)/05(倾角仪) 即可,例如角速度 100 Hz:2B 01 18 05 0A 00 00 00。此项(速率,子索引 5)写入后立即生效并自动持久化(掉电保持),无需额外保存。
同步模式:把某 TPDO 的传输类型 [0x180x.2] 写为 0x01 即转为同步模式(停止异步定时,等待同步帧)。以 TPDO1 为例:
2F 00 18 02 01 00 00 00— TPDO1 设为同步模式2F 00 18 02 FF 00 00 00— TPDO1 恢复异步模式(默认)
发送 CANopen 同步帧:CAN_ID=0x80,数据为空。所有同步模式的 TPDO 各发送一帧,实现同步。
注意:传输类型(同步 / 异步)仅为运行时设置,复位或重新上电后恢复异步默认(
0xFF),不掉电保持;TPDO 速率(子索引 5)与心跳周期则掉电保持。
心跳包:写 [0x1017.0] 设置周期(ms,0 禁用)。示例 2B 17 10 00 64 00 00 00 → 100 ms。
附录 A — 四元数 / 欧拉角 / 旋转矩阵互转
本附录给出 HiPNUC 产品采用的姿态表示与互转公式。四元数顺序为 WXYZ(
注意:坐标系说明:模块世界坐标系默认 东北天 ENU,可配置为 北西天 NWU(
CONFIG IMU COORD,见「坐标系与方向约定」)。下文「东北天(ENU)— 312 旋转顺序」给出 ENU 互转公式(与模块默认输出一致);「北东地(NED)— 321 旋转顺序」给出工程上常用的 NED 外部换算参考,NED 不是本手册定义的设备输出配置。NWU 输出的欧拉角采用与 NED 相同的 321 轴约定(roll 绕 X、pitch 绕 Y、yaw 绕 Z),仅坐标轴指向不同(NWU:X 北 / Y 西 / Z 天);它与 ENU 的欧拉约定不同(ENU 为 312),二者 roll/pitch 所绕轴相反、偏航差并非恒定 90°,不能在 ENU 欧拉角上简单加 90° 偏航得到 NWU。如需换算,应先在四元数层绕天向轴旋转 90°,再按 321 提取欧拉角。
四元数转旋转矩阵
给定四元数
东北天(ENU)— 312 旋转顺序(先 Z,再 X,最后 Y)

ENU 约定下欧拉角定义:
- pitch(θ):绕 X 轴的旋转角度,范围
- roll(φ):绕 Y 轴的旋转角度,范围
- yaw(ψ):绕 Z 轴的旋转角度,范围
四元数转欧拉角:
欧拉角转四元数(记
北东地(NED)— 321 旋转顺序(先 Z,再 Y,最后 X)

NED 约定下欧拉角定义:
- pitch(θ):绕 Y 轴的旋转角度,范围
- roll(φ):绕 X 轴的旋转角度,范围
- yaw(ψ):绕 Z 轴的旋转角度,范围
四元数转欧拉角:
欧拉角转四元数(记
附录 B — 固件升级
本产品支持固件升级。请使用 CHCenter 上位机软件按下图步骤操作;固件升级文件(.hex)请联系技术支持获取。

注意:升级前请确认固件版本与产品型号匹配(参见「关于本手册」的版本对照表)。升级过程中请勿断电。
附录 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 为变长帧:其单帧字节数随
data_bitmap配置变化,请按所选字段累加帧长后代入上式估算。例如默认0x000000FF(bit0–7)单帧约 98 字节(数据域 92 + 6 字节帧头/长度/CRC),100 Hz 约需 98 kbit/s,115200余量偏紧、建议230400及以上。当高帧率与默认115200带宽冲突时,请提高波特率(如921600)。
附录 D — 出厂默认配置
下表为出厂/恢复出厂(FRESET)后的默认配置(以固件 1.7.2 为准;具体以实际交付为准)。「生效时机」列说明修改后何时生效。
| 配置项 | 默认值 | 可选范围 | 生效时机 |
|---|---|---|---|
| 串口波特率(COM1–4) | 115200 | 4800…921600(9 档,见「系统命令」) | 立即(SERIALCONFIG) |
| 默认输出帧 | HI91 @ 100 Hz(COM1、COM2) | — | 立即(LOG) |
| 其他帧(HI83 等) | 关闭 | — | 立即 |
| 工作模式 | 见产品交付(6 轴 / 9 轴) | CONFIG ATT MODE | 写入即保存;复位/重新上电后加载 |
| 世界坐标系 COORD | ENU | ENU / NWU | 写入即保存;复位/重新上电后加载 |
| 安装方向 URFR | 24(水平 Z 朝上) | 见「安装方向」 | 立即(CONFIG IMU URFR) |
| HI83 data_bitmap | 0x000000FF | 见「可变类型数据帧(HI83)」 | 写入即保存;复位/重新上电后加载 |
| Modbus 节点 ID | 80 | 1–247 | 立即 |
| CAN 节点 ID | 8 | 推荐 1–126;127 部分型号保留 | 写入即保存;复位/重新上电 |
| CAN 标称波特率 | 标准固件 500 kbit/s | 125K…1000K | 写入即保存;复位/重新上电 |
| J1939 周期输出总开关 | 开 | 0 / 1 | 立即 |
| J1939 默认输出 PGN | 加速度/角速度/俯仰横滚/航向 @ 100 Hz | 见「J1939 配置协议」 | 立即 |
| CANopen TPDO 周期 | 全部 0(不输出) | 见「TPDO 速率与同步配置」 | 立即 |
| CANopen 心跳 | 关闭(0) | 0–65535 ms | 立即 |
警告:FRESET 副作用:恢复出厂会重置上述用户配置;请勿依赖 FRESET 保留任何用户写入的参数。详见「系统命令」
FRESET。
附录 E — 缩略词与术语表
本手册中出现的缩写与专有术语集中说明如下(命令关键字如 LOG、CONFIG、SAVECONFIG、FRESET 见「ASCII 命令参考」)。
| 缩写 / 术语 | 全称 / 含义 |
|---|---|
| IMU | Inertial Measurement Unit,惯性测量单元(加速度计 + 陀螺仪,可含磁力计) |
| AHRS | Attitude and Heading Reference System,姿态航向参考系统(9 轴,绝对航向) |
| VRU | Vertical Reference Unit,垂直参考单元(6 轴,相对航向) |
| ENU / NWU / NED | 东北天 / 北西天 / 北东地;ENU/NWU 为设备配置,NED 为外部换算参考(见「坐标系与方向约定」、附录 A) |
| URFR | 安装方向编码,用户坐标系相对传感器系的轴向映射(见「安装方向」) |
| COORD | 世界坐标系配置(ENU / NWU,见「坐标系与方向约定」、「CONFIG 配置命令」) |
| MAIN_STATUS | 主状态字,16 位(见「MAIN_STATUS 状态字」) |
| MCAL | Magnetometer Calibration,地磁校准(见「地磁校准与磁环境」) |
| USRCAL | 用户级陀螺校准,标定陀螺 Z 轴比例因子(见「姿态校准」) |
| PMUX | Pin Multiplexing,多功能 IO 复用(见「多功能 IO 复用」) |
| SOUT | Sync Output,帧前同步输出脉冲(见「SOUT 同步输出」) |
| SYNC_IN / PPS | 同步脉冲输入 / 标准秒脉冲,用于触发与对时(见「同步功能」) |
| HI91 / HI83 | 超核二进制数据帧类型:定长浮点 / 变长位图 |
| SOF | Start of Frame,帧头同步标志(5A A5) |
| CRC | Cyclic Redundancy Check,循环冗余校验 |
| PGN | Parameter Group Number,参数组编号(J1939) |
| SA / DA | Source / Destination Address,源 / 目的地址(J1939) |
| TPDO | Transmit PDO,发送过程数据对象(CANopen 周期输出) |
| SDO | Service Data Object,服务数据对象(CANopen 配置读写) |
| DBC | CAN 数据库文件,描述 CAN 信号定义,供 CANoe / BusMaster 等导入(见附录「开发资源与技术支持」) |
| EDS | Electronic Data Sheet,CANopen 电子数据表(对象字典描述文件,见附录「开发资源与技术支持」) |
| Heave / Surge / Sway | 垂荡 / 纵荡 / 横荡,船舶三轴周期运动(见「海浪补偿 / MRU 输出」) |
附录 F — 开发资源与技术支持
二次开发可用的工具与资料入口如下:
| 资源 | 用途 | 获取 |
|---|---|---|
| CHCenter 上位机 | 设备连接、参数配置、数据曲线/姿态可视化、数据记录与回放、固件升级 | www.hipnuc.com |
| 二进制解析示例 | C 语言帧解析:收帧、CRC 校验、按字段表解算 | 见「C 语言解析示例(HI91)」 |
| 固件升级 | 通过 CHCenter 升级,.hex 文件联系技术支持获取 | 见附录 B |
| DBC / EDS(CAN) | J1939 DBC、CANopen EDS 机器可读文件,便于 CANoe/BusMaster/PLC 导入 | 联系技术支持 |
新产品与资料信息可通过官方网站及公众号获取。
微信公众号:

Telegram:

