CAN 总线舵机通信协议
v0.2.0.04172025
1. 简介
本文档定义 CAN 协议舵机的通讯封包格式与内存表,用于舵机参数的读取、写入与批量控制。
2. 控制指令
| 功能 | 标识符 | 说明 | 响应封包类型 |
|---|---|---|---|
| 读取单个参数 | r |
读取指定地址参数 | 固定 |
| 读取两个参数 | R |
读取两个地址参数 | 固定 |
| 写入单个参数 | w |
写入指定地址参数 | 无 |
| 写入两个参数 | W |
写入两个地址参数 | 无 |
| 写入后回应 | x / X |
写入后返回对应地址参数 | 固定 |
| 连续写入开始 | Q |
进入连续写入缓存模式 | 无 |
| 连续写入结束 | q |
退出缓存并一次写入 | 无 |
Note
标识符区分大小写。
3. 封包格式
3.1 读取参数
3.1.1 读取单个参数
3.1.1.1 指令
向指定编号舵机请求一个指定地址的参数。
| Byte1 | Byte2 | Byte3 |
|---|---|---|
| 标识符 | ID | 地址 |
r |
0xXX |
0xXX |
3.1.1.2 响应
舵机响应一个参数。
| Byte1 | Byte2 | Byte3 | Byte4 | Byte5 |
|---|---|---|---|---|
| 标识符 | ID | 地址 | 参数(低位元) | 参数(高位元) |
v |
0xXX |
0xXX |
0xXX |
0xXX |
(图示待补:读取单个参数 指令/响应)
3.1.2 读取两个参数
3.1.2.1 指令
向指定编号舵机请求两个指定地址的参数。
| Byte1 | Byte2 | Byte3 | Byte4 |
|---|---|---|---|
| 标识符 | ID | 地址 A | 地址 B |
R |
0xXX |
0xXX |
0xXX |
3.1.2.2 响应
舵机响应两个参数。
| Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | Byte8 |
|---|---|---|---|---|---|---|---|
| 标识符 | ID | 地址 A | 参数 A(低位元) | 参数 A(高位元) | 地址 B | 参数 B(高位元) | 参数 B(高位元) |
V |
0xXX |
0xXX |
0xXX |
0xXX |
0xXX |
0xXX |
0xXX |
Note
上表“参数 B(高位元)”在原文中出现两次,保持与原 PDF 一致。
(图示待补:读取两个参数 指令/响应)
3.2 写入参数
3.2.1 写入单个参数
向指定编号舵机写入一个指定地址的参数。
| Byte1 | Byte2 | Byte3 | Byte4 | Byte5 |
|---|---|---|---|---|
| 标识符 | ID | 地址 | 参数(低位元) | 参数(高位元) |
w |
0xXX |
0xXX |
0xXX |
0xXX |
(图示待补:写入单个参数 指令)
3.2.2 写入两个参数
向指定编号舵机写入两个指定地址的参数。
| Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | Byte8 |
|---|---|---|---|---|---|---|---|
| 标识符 | ID | 地址 A | 参数 A(低位元) | 参数 A(高位元) | 地址 B | 参数 B(低位元) | 参数 B(高位元) |
W |
0xXX |
0xXX |
0xXX |
0xXX |
0xXX |
0xXX |
0xXX |
(图示待补:写入两个参数 指令)
3.2.3 写入后回应
将 w 与 W 分别对应 x 与 X,则会在写入参数后,接着响应对应地址的参数。
例如送出下列指令:
| Byte1 | Byte2 | Byte3 | Byte4 | Byte5 |
|---|---|---|---|---|
| 标识符 | ID | 地址 | 参数(低位元) | 参数(高位元) |
x |
0xXX |
0xXX |
0xXX |
0xXX |
将会收到舵机回传内容如下:
| Byte1 | Byte2 | Byte3 | Byte4 | Byte5 |
|---|---|---|---|---|
| 标识符 | ID | 地址 | 参数(低位元) | 参数(高位元) |
v |
0xXX |
0xXX |
0xXX |
0xXX |
(图示待补:写入后回应 指令/响应)
3.3 连续写入
3.3.1 连续写入开始
对舵机发送指令,开始接收连续写入的参数进缓存区。
| Byte1 | Byte2 |
|---|---|
| 标识符 | ID |
Q |
0xXX |
3.3.2 连续写入结束
对舵机发送指示,停止接收连续写入的参数,并且将缓存区参数一次写入。
| Byte1 | Byte2 |
|---|---|
| 标识符 | ID |
q |
0xXX |
3.3.3 注意事项
- 自发送标识符
Q开始,最多接收 8 组标识符w或W,第 8 组接收后自动写入。 - 此时标识符
x或X等同标识符w或W,不支持回传。 - 连续写入接收期间,若有标识符
r、R,不影响行为。 - 使用
W/w/X/x指令对内存表编号0x50~0x58写入运动模式参数,在离开缓存模式前可对内存表编号0x59下达运动指令参数 1 开始动作(可使用ServoID=0xFF广播已缓存舵机或指定 ID)。
4. 内存表
| 位置 | 功能 | 长度 | 可读 | 可写 | 默认值 | 最大值 | 最小值 | 单位 | 说明 |
|---|---|---|---|---|---|---|---|---|---|
| 0x01 | 舵机型号 | 2 | 是 | 不公开 | |||||
| 0x02 | 固件版本 | 2 | 是 | 不公开 | |||||
| 0x03 | 舵机序号(L) | 2 | 是 | 不公开 | |||||
| 0x04 | 舵机序号(H) | 2 | 是 | 不公开 | |||||
| 0x10 | 舵机电压 | 2 | 是 | 否 | |||||
| 0x11 | 舵机电流 | 2 | 是 | 否 | |||||
| 0x12 | 舵机功率 | 2 | 是 | 否 | |||||
| 0x13 | 舵机温度 | 2 | 是 | 否 | |||||
| 0x14 | 舵机状态 | 2 | 是 | 否 | |||||
| 0x15 | 多圈模式目前角度(L) | 2 | 是 | 否 | |||||
| 0x16 | 多圈模式目前角度(H) | 2 | 是 | 否 | |||||
| 0x17 | 圈数 | 2 | 是 | 否 | |||||
| 0x18 | 目前角度(单圈模式) | 2 | 是 | 否 | |||||
| 0x28 | 阻尼模式功率 | 2 | 是 | 是 | 设置后进入阻尼模式。 | ||||
| 0x50 | 到目标角度时间(L) | 2 | 是 | 是 | |||||
| 0x51 | 到目标角度时间(H) | 2 | 是 | 是 | |||||
| 0x52 | 角度模式选择 | 2 | 是 | 是 | 0:预设;1:基于加减速;2:基于速率 | ||||
| 0x53 | 指定角度(L) | 2 | 是 | 是 | |||||
| 0x54 | 指定角度(H) | 2 | 是 | 是 | |||||
| 0x55 | 角度模式执行功率 | 2 | 是 | 是 | |||||
| 0x56 | 启动时加速段的时间 | 2 | 是 | 是 | |||||
| 0x57 | 运动到接近目标的减速段时间 | 2 | 是 | 是 | |||||
| 0x58 | 到目标角度的最大速度 | 2 | 是 | 是 | |||||
| 0x59 | 执行角度运动 | 2 | 是 | 是 | 0:预设(不动作);1:执行;80~88 运动命令 | ||||
| 0x78 | 使用者资料重设 | 2 | 否 | 是 | 0 | 0 | 65535 | 重设使用者资料区为出厂预设值。 | |
| 0x79 | 清除当前圈数 | 2 | 否 | 是 | 0:预设;1:清除圈数 | ||||
| 0x7A | 原点设置 | 2 | 否 | 是 | 0:设置当前舵机角度为角度 0°;非零值表示回复原厂设定。 | ||||
| 0x7B | 控制模式停止 | 3 | 否 | 是 | 0x10-停止后卸力(失锁);0x11-停止后保持锁力;0x12-停止后进入阻尼状态 | ||||
| 0x80 | 控制回应 | 2 | 是 | 是 | |||||
| 0x81 | 舵机编号 | 2 | 是 | 是 | |||||
| 0x82 | 波特率 | 2 | 是 | 是 | 50KBPS=0;100KBPS=1;125KBPS=2;200KBPS=3;250KBPS=4;400KBPS=5;500KBPS=6(默认);750KBPS=7;800KBPS=8;1MBPS=9 | ||||
| 0x83 | 堵转失锁保护 | 2 | 是 | 是 | |||||
| 0x84 | 堵转功率上限 | 2 | 是 | 是 | |||||
| 0x85 | 低压保护电压 | 2 | 是 | 是 | |||||
| 0x86 | 高压保护电压 | 2 | 是 | 是 | |||||
| 0x87 | 温度保护值 | 2 | 是 | 是 | |||||
| 0x88 | 功率保护值 | 2 | 是 | 是 | |||||
| 0x89 | 电流保护值 | 2 | 是 | 是 | |||||
| 0x8A | 加速度 | 2 | 是 | 是 | |||||
| 0x8B | 功率保护迟滞参数 | 2 | 是 | 是 | |||||
| 0x8C | 上电锁力开关 | 2 | 是 | 是 | |||||
| 0x8D | 轮式模式刹车开关 | 2 | 是 | 是 | |||||
| 0x8E | 角度限制开关 | 2 | 是 | 是 | |||||
| 0x8F | 上电缓启动开关 | 2 | 是 | 是 | |||||
| 0x90 | 上电缓启动时间 | 2 | 是 | 是 | |||||
| 0x91 | 角度上限 | 2 | 是 | 是 | |||||
| 0x92 | 角度下限 | 2 | 是 | 是 | |||||
| 0x93 | 中点偏移 | 2 | 是 | 是 |