通信协议

Alius 机器人关节模组通过 CAN / CAN-FD 总线与控制器进行通信。本文档详细描述通信协议的数据帧格式、指令集和状态反馈机制,帮助开发者实现与关节模组的可靠通信。

协议概述

关节模组采用基于 CAN 总线的自定义应用层协议。协议设计遵循以下原则:

  • 简洁高效:指令帧和数据帧格式紧凑,最小化总线负载。
  • 灵活扩展:支持标准 CAN 2.0A 和 CAN-FD 帧格式,可根据带宽需求选择。
  • 可靠传输:关键指令和状态数据均包含 CRC 校验,确保数据传输完整性。

每个关节模组在总线上拥有唯一的节点 ID(1–127),控制器通过节点 ID 区分不同模组。节点 ID 可通过软件配置,并保存在模组的非易失性存储器中。

CAN 标识符分配

CAN 标识符(CAN ID)采用 11 位标准帧格式,结构如下:

Bits [10:7]  – 功能码(Function Code)
Bits [6:0]   – 节点 ID(Node ID)

功能码定义:

功能码名称方向描述
0x0心跳帧模组 → 控制器模组周期性发送的状态心跳
0x1控制指令控制器 → 模组位置/速度/力矩控制指令
0x2状态反馈模组 → 控制器实时位置、速度、力矩反馈
0x3参数读写双向读取/写入模组参数
0x4故障上报模组 → 控制器故障代码和详细信息
0x5固件升级双向固件升级数据流

控制指令帧

位置控制模式

数据帧格式(8 字节):

字节字段描述
0指令类型0x01 = 位置控制
1–3目标位置32 位有符号整数,单位:编码器计数
4–5目标速度16 位有符号整数,单位:0.1 °/s
6–7控制参数高 8 位:加速度曲线;低 8 位:保留

速度控制模式

数据帧格式(8 字节):

字节字段描述
0指令类型0x02 = 速度控制
1–2目标速度16 位有符号整数,单位:0.1 °/s
3–4加速度16 位无符号整数,单位:°/s²
5–7保留

力矩控制模式

数据帧格式(8 字节):

字节字段描述
0指令类型0x03 = 力矩控制
1–2目标力矩16 位有符号整数,单位:0.1 N·m
3–7保留

状态反馈帧

模组以可配置的周期(默认 10 ms)发送状态反馈帧。帧格式(8 字节):

字节字段描述
0状态标志Bit 0: 使能状态;Bit 1: 故障标志;Bit 2: 到位标志
1–3当前位置32 位有符号整数,单位:编码器计数
4–5当前速度16 位有符号整数,单位:0.1 °/s
6–7当前力矩16 位有符号整数,单位:0.1 N·m

参数读写

读取参数

发送帧格式:

字节字段描述
0操作码0x01 = 读取
1–2参数 ID16 位无符号整数
3–7保留

响应帧格式:

字节字段描述
0操作码0x81 = 读取响应
1–2参数 ID与请求帧一致
3–6参数值32 位数据,格式依参数类型而定
7状态码0x00 = 成功;非 0 = 错误代码

常用参数 ID

参数 ID名称读写描述
0x0001节点 IDR/W模组 CAN 节点 ID
0x0002通信波特率R/W0 = 1Mbps;1 = 2Mbps;2 = 5Mbps(CAN-FD)
0x0003控制模式R/W0 = 位置;1 = 速度;2 = 力矩
0x0004零点偏移R/W编码器零点偏移量
0x0005温度限制R/W过温保护阈值,单位:°C
0x0006电流限制R/W峰值电流限制,单位:0.1 A

错误处理

模组在检测到故障时,会立即发送故障上报帧,并进入保护状态(停止输出扭矩)。

故障代码定义:

代码名称描述恢复方式
0x01过流故障相电流超过安全阈值断电重启
0x02过温故障模组内部温度超过保护阈值温度降低后自动恢复
0x03编码器故障编码器信号异常或超时检查连接,断电重启
0x04通信超时连续 500 ms 未收到控制指令恢复通信后自动清除
0x05欠压故障供电电压低于 22 VDC电压恢复后自动清除
0x06过压故障供电电压高于 52 VDC电压恢复后自动清除

CAN-FD 扩展

当使用 CAN-FD 通信时,数据帧长度可扩展至 64 字节,支持更高带宽的状态反馈和固件升级数据传输。CAN-FD 帧的格式与标准 CAN 帧兼容,控制器可自动识别帧类型。

建议在多关节协同控制场景中优先使用 CAN-FD 通信,以获得更低的通信延迟和更高的数据吞吐量。