处理数据对象重映射过程

过程数据对象(PDO)映射是CANopen的一个基本特性,它描述了PDO数据字段中哪些单独的过程变量被传输。特别是CiA 301,需要一个专门的重新映射程序。

通过Holger Zeltwanger 2016年6月10日

流程数据对象(PDO)服务允许在一个CAN消息中交换一个或多个流程变量。PDO映射参数描述发送方传输CANopen对象字典中的哪些对象。PDO接收器还使用PDO映射参数,该参数指定在CANopen对象字典中存储接收到的进程数据的位置。根据CANopen配置文件,发送端和发送端的PDO映射参数可以使用不同的指针(16位索引和8位子索引)。

在一些简单的设备中,用户不能配置PDO映射参数,这称为静态PDO映射。更复杂的设备允许可变PDO映射,这意味着系统设计人员可以重新配置默认PDO映射或生成新的PDO。通常,当pdo被禁用时,这是在网络管理(NMT)前操作状态下完成的。当然,用户也可以在NMT操作状态下重新配置PDO映射,但是必须避免生产者和消费者端PDO映射中的不一致。为了避免这种情况,在整个重新配置完成之前必须不生成PDO。

CiA 301应用层规范需要一个专门的重映射过程,包括五个步骤:

  1. 通过将TPDO通信参数的分类索引01h的有效位设置为1b来“销毁”传输进程数据对象(TPDO)。
  2. 通过将PDO映射参数的子索引00h设置为00h来禁用PDO映射。
  3. 通过更改PDO映射参数的相应子索引的值来修改PDO映射。
  4. 通过设置子索引00启用PDO映射h映射到进程数据的编号。
  5. 通过将有效位设置为0来“创建”TPDOb分类指数01h的TPDO通信参数。

如果CANopen设备在步骤3中检测到映射对象的索引和子索引不存在或对象不能映射,则CANopen设备响应服务数据对象(SDO)中止传输服务(中止代码:0602 0000)h或0604 0041h).

如果CANopen设备在步骤4中检测到RPDO映射无效或不可能,则CANopen设备响应SDO中止传输服务(中止代码:0602 0000)h或0604 0042h).这是在CANopen一致性测试中测试的。

通常,需要重新配置接收流程数据对象(RPDO)映射。这应该在TPDO再次启用之前完成。在步骤4和步骤5之间,如果需要,所有相关的RPDO映射都应该重新配置。当然,用户还可以首先重新映射所有RPDO映射,这应该在步骤1和步骤2之间或步骤2和步骤3之间完成)。

NMT运行状态下的重映射称为动态PDO映射。如果CANopen设备被正确实现,那么RPDO重新映射遵循与TPDO重新映射相同的过程:“销毁”RPDO,禁用RPDO映射,修改RPDO映射,启用RPDO映射,最后“创建”RPDO。当然,如果TPDO是以多路或广播形式发送的,那么对于所有TPDO对应的rpdo都应该这样做。

如果CANopen设备接收到的PDO的数据字节数大于映射的数据字节数(长度),则CANopen设备使用最大长度的第一个数据字节并发送紧急对象(EMCY)消息。如果CANopen设备接收到的PDO数据字节数小于映射的数据字节数(长度),则发送错误码为8210的EMCY消息h

如果没有遵循TPDO或RPDO重新映射过程,CANopen设备不应该更改映射项并中止SDO写服务。设备应该这样做,例如,如果PDO没有被“销毁”,或者映射没有被禁用。注意:系统设计者负责TPDO和RPDO映射参数的一致性。

Holger Zeltwanger他是自动化(CiA) CAN董事总经理。CAN in Automation是CFE Media的内容合作伙伴。由制作编辑克里斯·瓦夫拉编辑,控制工程, CFE传媒,cvavra@cfemedia.com

在线额外

参见CAN在自动化中的其他故事,链接如下。