LZ-01 masterCtrlV2.0 Modbus RTU 对外通信协议说明
版本:V2.2 | 更新日期:2026-03-01
1. 通信参数
| 项目 | 参数 |
|---|---|
| 物理接口 | RS-485 半双工 |
| 波特率 | 115200 bps |
| 数据位 | 8 位 |
| 校验位 | 无 |
| 停止位 | 1 位 |
| 协议类型 | Modbus RTU |
| 默认从机地址 | 1(右手)/ 2(左手) |
| 应答超时 | 20ms |
| 串口缓冲区 | 256 字节 |
2. 支持的功能码
| 功能码 | 名称 | 说明 |
|---|---|---|
| 0x03 | Read Holding Registers | 读保持寄存器,支持批量读取 |
| 0x06 | Write Single Register | 写单个寄存器 |
| 0x10 | Write Multiple Registers | 写多个寄存器,支持批量写入 |
3. 寄存器地址总览
| 地址范围 | 区域 | 读写 | 说明 |
|---|---|---|---|
| 0~5 | 电机位置控制 | RW | 写入目标位置,读取返回实际位置(0~1000 ‰) |
| 6~11 | 电机速度控制 | RW | 写入目标速度,读取返回实际速度(0~1000 ‰) |
| 12~17 | 电机力矩控制 | RW | 写入目标力矩限制,读取返回实际力矩(‰) |
| 18~30 | 压力传感器 | RO | 压力传感器测量值(单位:mN) |
| 31~40 | 关节角度 | RO | 关节实际角度(单位:0.1°) |
| 41~46 | 电机位置反馈 | RO | 实际位置反馈(0~1000 ‰) |
| 47~56 | 角度校准 | RW | 编码器校准参数 |
| 57 | 系统控制 | RW | Flash 保存命令 |
| 58~63 | 错误日志 | RO | 错误标志/计数/状态 |
| 66 | 最近错误码 | RO | 最近一次产生的错误码 |
| 67 | 错误清除 | WO | 写 1 清除所有错误计数和标志 |
| 70~75 | 电机速度反馈 | RO | 实际速度反馈(0~1000 ‰) |
| 76~81 | 电机力矩反馈 | RO | 实际力矩反馈(‰) |
4. 寄存器详细定义
4.1 电机控制寄存器(地址 0~17,可读写)
值域 0~1000,对应千分比(‰)。
读写反射机制:为了方便在同一地址进行控制与观察,读取这 18 个寄存器时将返回实时测量值而非目标值:
- 读取 0~5:返回电机实际位置
- 读取 6~11:返回电机实际速度
- 读取 12~17:返回电机实际力矩
位置指令(地址 0~5)
| 地址 | 名称 | 说明 |
|---|---|---|
| 0 | pos_cmd[0] | 拇指旋转电机目标位置 |
| 1 | pos_cmd[1] | 拇指捏合电机目标位置 |
| 2~5 | pos_cmd[2~5] | 食指/中指/无名指/小指目标位置 |
速度指令(地址 6~11)
默认值 1000 (全速)。
力矩限制指令(地址 12~17)
默认值 1000 (最大力矩)。
4.2 压力传感器寄存器(地址 18~30,只读)
单位为 mN(毫牛)。
| 地址 | 名称 | 对应部位 |
|---|---|---|
| 18~19 | pressure[0~1] | 拇指 |
| 20~21 | pressure[2~3] | 食指 |
| 22~23 | pressure[4~5] | 中指 |
| 24~25 | pressure[6~7] | 无名指 |
| 26~27 | pressure[8~9] | 小拇指 |
| 28~30 | pressure[10~12] | 手心 |
4.3 关节角度寄存器(地址 31~40,只读)
单位为 0.1°。
| 地址 | 名称 | 对应手指 |
|---|---|---|
| 31~32 | angle[0~1] | 拇指 (J1/J2) |
| 33~34 | angle[2~3] | 食指 (J1/J2) |
| 35~36 | angle[4~5] | 中指 (J1/J2) |
| 37~38 | angle[6~7] | 无名指 (J1/J2) |
| 39~40 | angle[8~9] | 小拇指 (J1/J2) |
5. 错误码定义
last_err_code(地址 66)格式为 0xTTII(高字节=类型,低字节=设备编号):
| 类型码 | 含义 |
|---|---|
| 0x01 | 通信超时 |
| 0x02 | 设备连接失败 |
| 0x03 | 数据读取失败 |
| 0x04 | 初始化状态异常 |
| 0x05 | 机械找零超时 |
6. 通信示例
6.1 读取所有电机实际位置(地址 41~46)
请求: 01 03 00 29 00 06 [CRC16]
应答: 01 03 0C [12字节数据] [CRC16]6.2 设置拇指旋转位置为 50% (500‰)
请求: 01 06 00 00 01 F4 [CRC16]
应答: 01 06 00 00 01 F4 [CRC16]7. 数据流示意
8. 注意事项
- 初始化检测:上电后请先查询
hand_status(地址 62),当值为 1 时表示系统已完成找零,可正式控制。 - 频率建议:建议 Modbus 通信采集频率为 10ms - 50ms。
- 参数存储:修改校准参数后,需向
save_cmd(地址 57)写入 1 触发永久保存。
