SDO 命令字与 Abort 速查
本表只覆盖课程使用的 expedited SDO,也就是数据最多 4 字节、可在一次请求和一次响应中完成的访问。
读取请求
| 命令字 | 用途 |
|---|---|
0x40 | expedited upload 请求,也就是 Client 读取 Server 对象 |
请求 DATA:
40 Index低字节 Index高字节 Sub-index 00 00 00 00
例如读取 0x6064:00:
40 64 60 00 00 00 00 00
读取成功响应
| 命令字 | 有效数据长度 | 数据位置 |
|---|---|---|
0x4F | 1 字节 | DATA[4] |
0x4B | 2 字节 | DATA[4..5] |
0x47 | 3 字节 | DATA[4..6] |
0x43 | 4 字节 | DATA[4..7] |
0x42 | expedited,但响应未明确给出长度 | 结合对象数据类型判断 |
响应中的 DATA[1..3] 仍要与请求的 Index、Sub-index 一致。
写入请求
| 命令字 | 有效数据长度 | 示例 |
|---|---|---|
0x2F | 1 字节 | 写 INTEGER8 模式 |
0x2B | 2 字节 | 写 UNSIGNED16 Controlword |
0x23 | 4 字节 | 写 INTEGER32 Target position |
2 字节写入格式:
2B Index低 Index高 Sub-index 值低字节 值高字节 00 00
写 0x6040:00 = 0x000F:
2B 40 60 00 0F 00 00 00
写入成功响应
| 命令字 | 含义 |
|---|---|
0x60 | download 成功;仍需核对 Index 和 Sub-index |
写入成功表示对象访问被接受。运动是否执行、状态是否转换,还要读取相应反馈对象。
Abort 响应
| 命令字 | DATA[4..7] |
|---|---|
0x80 | 32 位小端序 Abort Code |
常见 Abort:
| Code | 含义 |
|---|---|
0x05040000 | 协议超时 |
0x06010001 | 尝试读取只写对象 |
0x06010002 | 尝试写只读对象 |
0x06020000 | 对象不存在 |
0x06070010 | 数据类型或长度不匹配 |
0x06090011 | Sub-index 不存在 |
0x06090030 | 参数值范围错误 |
0x08000022 | 当前设备状态不能执行访问 |
详细排查见SDO Abort 与超时。