PDO 报文与映射编码

PDO 报文与映射编码

官方概念:PDO protocol (CiA)
PDO = 单帧 CAN,最多 8 字节纯应用数据(无 SDO 式命令字节)


1. 帧结构

1
2
3
4
┌─────────────┬─────┬──────────────────────────┐
│ COB-ID │ DLC │ Data[0..DLC-1] │
│ (可配置) │≤8 │ = 映射对象按序拼接的位串 │
└─────────────┴─────┴──────────────────────────┘
类型 相对节点 预定义 COB-ID(1~4)
TPDO 节点发送 0x180/280/380/480 + Node-ID
RPDO 节点接收 0x200/300/400/500 + Node-ID

无应用层 ACK:可靠性靠 CAN ACK、Heartbeat、应用层状态机(如 402 Fault)。


2. 通信参数 vs 映射参数(OD)

TPDO1 为例(RPDO1 对称:1400h/1600h):

对象 名称 作用
1800h TPDO1 communication parameter COB-ID、传输类型、Inhibit、Event timer…
1A00h TPDO1 mapping parameter 映射表

2.1 通信参数记录(典型子索引)

Sub 含义(常见)
00h 最高子索引
01h COB-ID(含有效位等)
02h Transmission type
03h Inhibit time(×100 µs 量级,以实现为准)
05h Event timer(ms)

COB-ID Bit31:常表示 PDO 无效/有效(1=invalid)。改映射前须先置无效——见 CiA 映射步骤。

2.2 Transmission Type(传输类型)

行为
0 同步,无环计数:由 SYNC 触发,但需配合事件(acyclic sync)
1~240 同步循环:每收到 n 次 SYNC 发一次
254 异步:厂商特定事件
255 异步:设备行规定义的事件;常配合 Event timer

(具体枚举以 CiA 301 / EDS 为准。)


3. 映射参数编码

3.1 子索引布局

Sub 含义
00h 已映射对象个数 N
01h…Nh 第 i 个映射项(32-bit)

3.2 单个映射项(32-bit,小端存于 OD)

1
2
3
4
5
 31────────────16 15─────8 7──────0
┌────────────────┬────────┬────────┐
│ Index │ SubIdx │ Length │
│ (被映射对象) │ │ (bits) │
└────────────────┴────────┴────────┘
字段 说明
Index 应用对象索引(如 6041h
SubIndex 子索引
Length 位长度(如 16、32;不是字节)

例:映射 Statusword 6041h:00 共 16 bit → 映射字 0x60410010

3.3 净荷拼接规则

  • 按映射表 01h → Nh 顺序,把各对象的位串紧密排列进 PDO Data
  • 多字节对象内部一般为 小端
  • 总位数 ≤ 64(8 字节)

4. 完整示例(402 常见教学映射)

RPDO1(主站→节点 5)映射:

  1. 6040h:00 Controlword 16 bit
  2. 607Ah:00 Target position 32 bit

总长 48 bit = 6 字节 → DLC=6

1
2
COB-ID 0x205:
Data: cw_lo cw_hi pos0 pos1 pos2 pos3

TPDO1(节点 5→主站):

  1. 6041h:00 Statusword 16
  2. 6064h:00 Position actual 32
1
2
COB-ID 0x185:
Data: sw_lo sw_hi p0 p1 p2 p3

5. 触发方式(与 SYNC 的关系)

CiA 定义的触发包括:

类型 说明
Event / timer-driven 内部事件或事件定时器
Remotely-requested RTR 请求(遗留)
Synchronous cyclic 每 n 次 SYNC
Synchronous acyclic 事件置位,遇下一 SYNC 再发

运动控制常用:同步 TPDO/RPDO + 周期 SYNC


6. 修改映射的官方步骤(Variable/Dynamic)

CiA 公开步骤(PDO protocol):

  1. 将对应 COB-ID 的 Bit31 置 1,使 PDO 无效
  2. 写映射参数 Sub00 = 00h,使映射无效
  3. 写入各映射项 Sub01…
  4. 写 Sub00 = 映射对象个数
  5. 清 COB-ID Bit31,使 PDO 重新有效
映射类型 何时可改
Static 出厂固定,不可经 CANopen 改
Variable Pre-Operational 可改
Dynamic Operational 亦可改(设备需声明支持)

7. 抓包对照清单

  • COB-ID 是否仍为预定义,或已被 SDO 改写
  • DLC 是否等于映射总字节数
  • 字节序/多对象边界是否与 EDS 一致
  • 节点是否已 NMT Start(否则不应有 PDO)
  • Transmission type 与 SYNC 是否匹配

下一篇:13-LSS报文格式.md

文章互动

阅读 --

留言

0 条留言

正在加载留言…