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