CanOpen--SDO 数据帧分析
CanOpen--SDO 数据帧分析
- 1 介绍
- 1.1 概述
- 1.2 主站与从站
- 2 数据帧详细分析
- 2.1 主站发送的请求帧 (Client → Server)
- 2.2 从站响应的确认帧 (Server → Client)
- 成功数据帧内容
- 示例错误帧
- 2.3 命令字
- 2.4 小端格式:低字节在前
- 3 其他示例
- 60FF index 发送 数值 1000 数据帧分析
- 数据帧结构
- 完整报文
- 参考
1 介绍
1.1 概述
在 CANopen 中,SDO (Service Data Object) 用于主站与从站之间的参数配置和数据传输。当需要向对象字典索引 0x6083 写入值 100 时,需要使用 SDO 写操作。
1.2 主站与从站
在上位机与伺服电机的通信系统中,上位机通常是主站(Master),而伺服电机作为执行机构,通常作为从站(Slave)运行。
主站(Master):发起通信请求、发送控制指令、协调数据交换的设备。
从站(Slave):响应主站请求、执行指令、反馈状态信息的设备。
2 数据帧详细分析
假设条件:
从站节点ID:1
对象字典索引:0x6083
子索引:0x00 (通常默认)
写入值:100 (0x64)
2.1 主站发送的请求帧 (Client → Server)
COB-ID:0x600 + NodeID = 0x601
数据帧内容:
Byte | 值 | 说明 |
---|---|---|
0 | 0x23 | 写入4字节数据的命令字 |
1-2 | 0x83 0x60 | 索引 0x6083 (小端格式) |
3 | 0x00 | 子索引 0x00 |
4-7 | 0x64 0x00 0x00 0x00 | 值 100 (小端格式,4字节) |
完整数据帧
601 23 83 60 00 64 00 00 00
2.2 从站响应的确认帧 (Server → Client)
COB-ID:0x580 + NodeID = 0x581
成功数据帧内容
Byte | 值 | 说明 |
---|---|---|
0 | 0x60 | 写操作成功的响应 |
1-2 | 0x83 0x60 | 索引 0x6083 (小端格式) |
3 | 0x00 | 子索引 0x00 |
4-7 | 0x64 0x00 0x00 0x00 | 值 100 (小端格式,4字节) |
完整数据帧
581 23 83 60 00 64 00 00 00
示例错误帧
完整数据帧
581 80 83 60 00 06 00 00 05
0x80:表示错误响应
2.3 命令字
-
请求帧命令字 0x23:
0x2:表示写请求
0x3:表示数据大小指定为4字节 -
响应帧命令字 0x60:
表示写操作成功完成
2.4 小端格式:低字节在前
索引 0x6083 → 传输为 0x83 0x60
值 100 (0x00000064) → 传输为 0x64 0x00 0x00 0x00
3 其他示例
60FF index 发送 数值 1000 数据帧分析
从站节点ID: 1 (示例)
COB-ID: 0x600 + NodeID = 0x601
对象字典索引: 0x60FF
子索引: 0x00 (默认)
写入值: 1000 (0x000003E8)
数据帧结构
Byte | 值 | 说明 |
---|---|---|
0 | 0x23 | 写入4字节数据的命令字 |
1 | 0xFF | 索引低字节 (0xFF) |
2 | 0x60 | 索引高字节 (0x60) |
3 | 0x00 | 子索引 |
4 | 0xE8 | 数据字节0 (1000的低字节) |
5 | 0x03 | 数据字节1 |
6 | 0x00 | 数据字节2 |
7 | 0x00 | 数据字节3 |
完整报文
ID: 0x601
Data: 23 FF 60 00 E8 03 00 00
参考
1、机器人开发–CanOpen