PDO 报文与映射编码
官方概念:PDO protocol (CiA)
PDO = 单帧 CAN,最多 8 字节纯应用数据(无 SDO 式命令字节)
1. 帧结构
1 | ┌─────────────┬─────┬──────────────────────────┐ |
| 类型 | 相对节点 | 预定义 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 | 31────────────16 15─────8 7──────0 |
| 字段 | 说明 |
|---|---|
| Index | 应用对象索引(如 6041h) |
| SubIndex | 子索引 |
| Length | 位长度(如 16、32;不是字节) |
例:映射 Statusword 6041h:00 共 16 bit → 映射字 0x60410010。
3.3 净荷拼接规则
- 按映射表 01h → Nh 顺序,把各对象的位串紧密排列进 PDO Data
- 多字节对象内部一般为 小端
- 总位数 ≤ 64(8 字节)
4. 完整示例(402 常见教学映射)
RPDO1(主站→节点 5)映射:
6040h:00Controlword 16 bit607Ah:00Target position 32 bit
总长 48 bit = 6 字节 → DLC=6
1 | COB-ID 0x205: |
TPDO1(节点 5→主站):
6041h:00Statusword 166064h:00Position actual 32
1 | COB-ID 0x185: |
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):
- 将对应 COB-ID 的 Bit31 置 1,使 PDO 无效
- 写映射参数 Sub00 =
00h,使映射无效 - 写入各映射项 Sub01…
- 写 Sub00 = 映射对象个数
- 清 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
正在加载留言…