SDO 报文格式详解

SDO 报文格式详解

官方概念:SDO protocol (CiA)
细节对齐 CiA 301(PAS 正式文本)与公开协议描述
SDO = 确认的 点对点对象字典访问:Client 发起,Server 拥有 OD


1. 通道与 COB-ID

一个 SDO 通道 = 两帧不同 CAN-ID 的配对:

方向 预定义 COB-ID 含义
Client → Server 0x600 + Node-ID 请求(常称 SDO RX,相对从站)
Server → Client 0x580 + Node-ID 响应(SDO TX)
  • 第一路 SDO Server 通道强制预定义,所有 CANopen CC 设备必须支持
  • 参数对象:1200h…(Server)、1280h…(Client)
  • DLC 恒为 8(不足补 0)

术语(从 Client 视角):

术语 含义
Upload Client Server 的 OD
Download Client Server 的 OD

2. 通用 8 字节布局

1
2
3
4
5
6
 Byte0     Byte1 Byte2   Byte3      Byte4 Byte5 Byte6 Byte7
┌────────┬────────────────┬────────┬────────────────────────┐
│ Command│ Index (LE) │ SubIdx │ Data / Size / Abort │
│ Spec │ low high │ │ │
└────────┴────────────────┴────────┴────────────────────────┘
└──── Multiplexer ─────┘
字段 说明
Command Specifier 命令字节:高 3 bit 为 ccs/scs,其余为标志
Index 16-bit OD 索引,小端
Subindex 8-bit
Data Expedited 数据,或 Size,或 Abort 码等

3. 命令字节:Client(ccs)与 Server(scs)

3.1 高 3 位命令说明符

Bits 7–5 Client 发送 (ccs) Server 发送 (scs)
0 Download segment Upload segment
1 Initiate download Download segment 应答
2 Initiate upload Initiate upload 响应
3 Upload segment Initiate download 应答
4 Abort transfer Abort transfer
5 Initiate block upload Block download 响应
6 Initiate block download Block upload 响应

3.2 Initiate 阶段其余标志(常见)

Initiate download/upload 请求:

Bit 含义
4 保留,写 0
3–2 n Data 域中非数据字节数(仅当 e=1 且 s=1 时有效)
1 e 1=Expedited(数据在本帧);0=Normal(分段)
0 s 1=给出大小;0=未指示大小

数据有效长度(expedited 且 s=1):4 - n 字节,落在 Byte4… 中。


4. Expedited Download(写 ≤4 字节)

4.1 Client 请求(ccs=1, e=1, s=1)

例:向节点 5 写 0x6040:00 = 0x000F(2 字节)

计算:n = 4−2 = 2;命令字节 = (1<<5) | (2<<2) | (1<<1) | 1 = 0x2B

1
2
3
4
5
6
COB-ID: 0x605
Data: 2B 40 60 00 0F 00 00 00
│ │ │ │ └─ 数据(小端)
│ │ │ └─ SubIndex
│ └── Index 0x6040
└─ Command

4.2 Server 应答(scs=3,Initiate download response)

典型成功应答(无数据):

1
2
3
4
COB-ID: 0x585
Data: 60 40 60 00 00 00 00 00
│ └── 回显 Multiplexer
└─ scs=3 → 0x60

5. Expedited Upload(读 ≤4 字节)

5.1 Client 请求(ccs=2, e/s 依实现,常 e=0 s=0 发起)

0x6041:00

1
2
3
4
COB-ID: 0x605
Data: 40 41 60 00 00 00 00 00

└─ ccs=2 → 0x40

5.2 Server 响应(含数据)

若返回 2 字节状态字 0x0237

1
2
3
4
COB-ID: 0x585
Data: 4B 41 60 00 37 02 00 00
│ └─ 数据
└─ scs=2, e=1,s=1,n=2 → 常见 0x4B

6. Segmented(Normal)传输(>4 字节)

流程概要(CiA / 公开描述一致):

  1. Initiate:协商 Index/SubIndex,e=0;Data 域可带总长度(若 s=1)
  2. 随后多帧 Segment:每段最多 7 字节应用数据(1 字节协议头)
  3. Segment 命令字节含 togglec(最后一段) 等标志

分段适合长字符串、大参数块;实现时必须正确交替 toggle,否则 Abort 05030000h


7. Block Transfer(可选加速)

  • (最多约 127 segment)确认,减少每段握手
  • 适合固件/大批量;设备双方都需支持
  • 细节见 CiA 301;公开概述见 CiA SDO

8. Abort Transfer

任一方可中止:

1
2
3
Command = 0x80
Multiplexer = 被访问的 Index/SubIndex(回显)
Byte4..7 = Abort Code(32-bit,小端)

8.1 常用 Abort Code(节选)

Abort Code 含义
05030000h Toggle 未交替
05040000h SDO 协议超时
05040001h 命令说明符无效/未知
06010000h 不支持的对象访问
06010001h 读只写对象
06010002h 写只读对象
06020000h 对象不存在
06090011h 子索引不存在
08000000h 一般错误

线上字节例:02 00 01 06 → 码 06010002h


9. 完整读写时序(报文级)

1
2
3
4
5
Client 605: 40 41 60 00 00 00 00 00     # initiate upload 6041h
Server 585: 4B 41 60 00 37 02 00 00 # expedited data

Client 605: 2B 40 60 00 0F 00 00 00 # expedited download 6040h
Server 585: 60 40 60 00 00 00 00 00 # ack

10. 与概念篇关系

工程用法、超时、配置顺序见:03-SDO与PDO通信.md
对象字典寻址见:01-对象字典与预定义连接集.md

下一篇:12-PDO报文与映射编码.md

文章互动

阅读 --

留言

0 条留言

正在加载留言…