Skip to content

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 写入后回应

wW 分别对应 xX,则会在写入参数后,接着响应对应地址的参数。

例如送出下列指令:

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 组标识符 wW,第 8 组接收后自动写入。
  • 此时标识符 xX 等同标识符 wW,不支持回传。
  • 连续写入接收期间,若有标识符 rR,不影响行为。
  • 使用 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