SDO 与 PDO 通信

SDO 与 PDO 通信

SDO = 配置/诊断通道(准可靠、请求-响应、非实时)
PDO = 过程数据通道(实时、可映射、可同步)

这是 CANopen 最核心的一对概念,也是 CoE(EtherCAT)里同名机制的来源。

字节级报文 / 抓包解码请直接读:


1. 为什么要分 SDO 和 PDO

SDO PDO
目的 读/写任意 OD 项 周期交换少量关键过程量
时延 较高(确认握手)
带宽效率 差(协议开销大) 好(净荷直接是映射数据)
典型时机 启动配置、调试、参数整定 Operational 运行时
类比 HTTP GET/PUT 共享内存/周期帧字段

原则:

  • 能放 PDO 的周期量,不要每周期用 SDO 扫
  • 非周期配置用 SDO

2. SDO(Service Data Object)

2.1 角色

  • SDO Server:拥有对象字典的设备(通常是从站)
  • SDO Client:发起读写的一方(通常是主站/配置工具)

默认通道(预定义连接集):

  • Client → Server:0x600 + Node-ID
  • Server → Client:0x580 + Node-ID

2.2 传输类型(概念)

类型 适用
Expedited 很小的数据(常见 ≤4 字节)一次完成
Segmented 较长数据分段传输
Block(若支持) 大块数据更高吞吐(固件/大批参数)

2.3 工程用法

1
2
主站 SDO Upload   = 读从站 OD
主站 SDO Download = 写从站 OD

典型配置序列:

  1. 1018h 确认设备身份
  2. 1400h/1600h/1800h/1A00h 配置 PDO
  3. 写应用参数(如 6060h 模式、6081h 速度)
  4. (可选)1010h 存盘
  5. NMT Start

2.4 超时与重试

SDO 必须设超时。现场常见问题:

  • 从站忙/未上线 → Client 超时
  • 写只读对象 → Abort
  • 长度/类型不匹配 → Abort

Abort 码需对照厂商手册与 CiA 301。


3. PDO(Process Data Object)

3.1 RPDO / TPDO

名称 方向(相对节点) 含义
RPDO 节点接收 主站→从站命令(控制字、目标位置…)
TPDO 节点发送 从站→主站反馈(状态字、实际位置…)

一个节点通常支持多路 PDO(常 4 路默认,可扩展)。

3.2 通信参数 vs 映射参数

以 TPDO1 为例:

对象 作用
1800h 通信参数:COB-ID、传输类型、禁止时间、事件定时器等
1A00h 映射参数:本 PDO 净荷由哪些 OD 项按什么长度拼接

RPDO1 对应:

  • 通信:1400h
  • 映射:1600h

3.3 映射本质

PDO 净荷 = 若干 OD 条目的位串拼接(按映射表顺序)。

1
2
3
4
示例 TPDO1 映射:
6041h:00 Statusword 16 bit
6064h:00 Position actual 32 bit
→ 净荷 6 字节

约束:

  • 经典 CAN 单帧数据场最多 8 字节 → 单 PDO 映射总长通常 ≤ 8 字节
  • CANopen FD 可更大(见 CiA 402-6 等)

3.4 传输类型(Transmission Type)

常见分类:

类型 行为
同步(1~240) 每收到 n 次 SYNC 触发一次
异步/事件 数据变化或事件定时器触发
厂商特定 依实现

运动控制常用:同步 PDO + 周期 SYNC,让多轴在同一节拍采样/更新。


4. 同步 PDO 时序(概念)

1
2
3
4
5
主站: 发 SYNC

从站: 锁存实际值 → 发 TPDO(实际位置/状态)
主站: 计算下一拍命令 → 发 RPDO(控制字/目标)
从站: 在约定窗口应用命令

细节因驱动实现而异;402 周期模式(CSP/CSV)对此更敏感。
CAN 抖动较大时,同步质量不如 EtherCAT DC。


5. 配置 PDO 的安全步骤(实操)

很多设备要求:

  1. 先让节点处于 Pre-Operational
  2. 禁用 PDO(清 COB-ID 有效位)再改映射
  3. 写映射条目数与各映射项
  4. 重新使能 COB-ID
  5. 再 NMT Start

直接在 Operational 热改映射,容易导致协议栈拒绝或行为未定义。


6. SDO 与 PDO 协作的完整图景

1
2
3
4
5
6
7
[配置阶段 Pre-Op]
SDO ──配置──▶ OD(通信参数 + 映射 + 应用参数)

[运行阶段 Op]
RPDO ──写入──▶ OD 映射项(如 6040/607A)──▶ 应用
应用 ──更新──▶ OD 映射项(如 6041/6064)──▶ TPDO
SDO 仍可用于在线诊断(勿滥用占用总线)

7. 抓包时如何辨认

假设 Node-ID = 3:

CAN-ID 可能含义
0x000 NMT
0x080 SYNC
0x083 EMCY(3)
0x183 TPDO1(3)
0x203 RPDO1(3)
0x583 SDO TX(3)
0x603 SDO RX(3)
0x703 Heartbeat(3)

candump / Wireshark(SocketCAN)对照 EDS 映射表,即可解码净荷。

下一篇:04-CiA402伺服控制.md

文章互动

阅读 --

留言

0 条留言

正在加载留言…