4. EtherCAT过程数据对象映射配置
PDO 映射的本质:把对象字典条目“搬进”过程数据帧
EtherCAT 从站的过程数据对象(PDO)映射,本质是告诉从站:每个通信周期交换的过程数据帧里,哪几个字节对应对象字典中的哪个条目。对于数字量输出从站,典型映射对象包括控制字(Control Word,0x6040)和输出数据(如 0x7000:01 的数字量输出)。映射关系通过 0x1C12(SyncManager 2 输出 PDO 分配)和 0x1600(输出 PDO 映射参数)配置。
配置流程遵循“先写映射内容,再写分配,最后切状态生效”的顺序:在 PREOP 状态下写入 0x1600 子索引,声明映射的条目与位长;再写 0x1C12 把该 PDO 分配给 SyncManager 2;随后请求 SAFEOP/OP,从站才会按新映射组装过程数据帧。
关键配置步骤与写入验证
以下以 IgH EtherCAT Master 为例,展示通过命令行工具配置 PDO 映射并验证的完整过程。假设从站位置为 0,输出 PDO 映射对象为 0x1600,SyncManager 2 分配对象为 0x1C12。
- 确认从站处于 PREOP 状态:
ethercat states查看从站状态,确保为 PREOP。若在 OP 状态,需先切回 PREOP。 - 写入映射条目数量:
ethercat download -p 0 0x1600 0x00 -t uint8 2,声明有 2 个映射条目。 - 写入第 1 个映射条目(控制字):
ethercat download -p 0 0x1600 0x01 -t uint32 0x60400010。其中0x6040为索引,00为子索引,0x10表示 16 位长度。 - 写入第 2 个映射条目(数字量输出):
ethercat download -p 0 0x1600 0x02 -t uint32 0x70000108。0x7000索引,01子索引,0x08表示 8 位长度。 - 将 PDO 分配给 SyncManager 2:
ethercat download -p 0 0x1C12 0x01 -t uint16 0x1600,然后ethercat download -p 0 0x1C12 0x00 -t uint8 1设置分配数量为 1。 - 切换到 OP 状态:
ethercat states -p 0 OP,从站按新映射组装过程数据帧。
写入验证方法:在 OP 状态下,使用 ethercat upload -p 0 0x1600 0x01 -t uint32 回读映射条目,确认返回值为 0x60400010。再通过 ethercat upload -p 0 0x1C12 0x01 -t uint16 确认返回 0x1600。若回读值与写入值一致,说明映射已生效。
映射条目编码规则
| 位段 | 含义 | 示例值 | 说明 |
|---|---|---|---|
| 31~16 | 对象索引 | 0x6040 | 控制字对象索引 |
| 15~8 | 子索引 | 0x00 | 控制字子索引 |
| 7~0 | 位长度 | 0x10 | 16 位,即 2 字节 |
映射条目中的位长度必须与对象字典中该条目的实际数据类型一致。若控制字为 16 位无符号整数,位长度写 0x10;若数字量输出为 8 位,写 0x08。位长度错误会导致从站拒绝进入 OP 状态或过程数据错位。
修改 PDO 映射后,必须重新触发从站状态转换(PREOP → SAFEOP → OP)才能生效。仅在 PREOP 写入而不切换状态,过程数据帧仍按旧映射组装。此外,部分从站要求先清除 0x1C12:00 再重新写入,否则可能返回 0x06010002(对象不可写)错误。