什么是PDO映射?

时间:2013-05-16 12:31:22

标签: network-protocols bus can-bus canopen

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

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

在运行状态下,PDO非常适合过程数据的输入和输出。 PDO只能传输最多8个字节的数据。

存在11位的COB-ID,其具有功能代码和节点编号。 由于节点号使用7位,我们最多可以有127个节点(对于CANopen 2.0A网络)。

但有四个TPDO和四个RPDO让我感到困惑。为什么需要多个TPDO和RPDO?在我读取设备配置文件的某个地方可以使用6000h到6FFFh的条目来描述设备参数和设备功能,并且在此范围内可以描述多达8个不同的设备。但是网络中可能有127个节点,那么这8个设备是什么?

2 个答案:

答案 0 :(得分:6)

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映射是完全静态的,根本无法更改。
  4. TPDO是从设备传输的消息,而RPDO是接收到的消息并写入设备对象字典。

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

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

答案 1 :(得分:1)

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

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

一旦定义并保存到节点中,我就可以发送一个带位置的PDO命令并获取当前和位置。

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

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