2013-05-16 817 views
5

在阅读了几个CiA规范后,我仍然很难理解CANopen中的PDO映射,过程映像和过程数据交换。什么是PDO映射?

我知道SDO用于操作前状态下的配置设置,并具有协议开销(因为它可以传输超过8个字节的数据)。

在操作状态,PDO的非常适合于输入和处理数据的输出。 PDO只能传输最多8个字节的数据。

还有就是具有功能码和结点号11个比特的COB-ID。 由于节点号使用7位,所以最多可以有127个节点(对于CANopen 2.0A网络)。

但有四个TPDOs`四个RPDO这是混淆了我。为什么你需要多个TPDO和RPDO?另外,我读设备配置文件的地方可能会使用从6000h到6FFFh的条目来描述设备参数和设备功能,并且在此范围内最多可以描述8个不同的设备。但网络中可能有127个节点,那么这个8设备是什么?

回答

5

PDO是用于更有效和异步消息的消息类型。可以通过计时器发送PDO,以响应SYNC消息或响应事件(如数字输入更改)。 CAN总线消息有效载荷的所有8个字节都可用于您的数据。这与只有4个字节可用的SDO(有块传输的多消息SDO)相反。

的PDO只能一次传输8个字节,因为这是一个CAN总线消息的最大传输大小。将此与SDO进行对比,其中必须发送命令字节和3字节地址,并保留最多4字节的信息。

默认情况下,设备有4个RPDO和4个TPDO分配。 4只是默认的PDO数量。更多可以安排,但你有责任为他们创造“渠道”。这是选择一个仲裁ID,并确保总线上没有其他设备将使用该ID进行通话。您需要多个PDO,因为:

  1. 消息具有不同的总线优先级。 0x180+$NODEID赢得总线仲裁过0x280+$NODEID
  2. 的PDO,同意对哪些数据将提前发送节点获得他们的效率。这意味着他们没有等待发送请求,也没有说他们发送的数据像SDO一样。
  3. PDO中的数据选择不是非常动态的。通常必须将设备带出操作状态以更改PDO映射。在一些设备中,PDO映射是完全静态的,根本不能改变。

TPDO是从设备传输的消息,而RPDO是接收到的消息并写入设备对象字典。

对象字典定义了CANopen设备的接口。字典使用16位索引和8位子索引进行寻址。字典分成几个范围。 0x6000到0x6FFF是分配给Device Profile变量的索引范围。设备配置文件为更专门的设备类别提供标准化接口。

PDO映射是如何被包含在PDO的信息商定。 PDO映射是设备对象字典中的条目,与其他任何其他条目一样。3字节的索引,子索引和参数大小以位为单位编码在UNSIGNED32中。

+0

我目前使用Xenus XTL来控制一些电机,并且似乎无法正确获得PDO设置(总线上没有发送pdos)。我的主要问题,以及我读过的所有其他描述都缺乏,COBID映射是如何专门工作的?例如,如果我在一个节点上定义TPDO,COBID为0x181,则主节点和其他节点上的所有RPDO也必须具有0x181的COBID或0x201的COBID,还是每个节点都解析节点ID超出了我看到在任何地方使用的0x180 + $ NODEID语法?谢谢! – daaxix

1

我喜欢考虑PDO(过程数据对象)类似于可以编程到CANopen节点中的功能。

最近,我想做一个指令,移动电机,并报告当前和编码器的位置。我定义了一个包含三个SDO对象的PDO映射 - 移动(一个接收PDO)和两个发送PDO(当前报告和编码器报告)。

一旦它们被定义并保存到节点中,我就可以通过一个位置发送一个PDO命令并获取当前位置。

注意只有在总线上发送SYNC命令时才会执行PDO。然后,所有未执行PDO的节点都会对它们进行处理并同时进行响应。

我们使用它来使7台电机同时移动(当设置SYNC时)。

+2

“请注意,只有在总线上发送SYNC命令时才会执行PDO。我认为你的意思只是针对你的特定情况。无需SYNC即可使用PDO。 –