6

在阅读了几个 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 个设备是什么?

4

2 回答 2

8

PDO 是用于更高效和异步消息的消息类型。PDO 可以在计时器上发送,以响应 SYNC 消息或响应事件(如数字输入更改)。CAN 总线消息有效负载的所有 8 个字节都可用于您的数据。这与只有 4 个字节可用的 SDO 形成对比(有像块传输这样的多消息 SDO)。

PDO 一次只能传输 8 个字节,因为这是 CAN 总线消息的最大传输大小。这与必须发送命令字节和 3 字节地址的 SDO 相比,最多留下 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 是分配给设备配置文件变量的索引范围。设备配置文件为更专业的设备类别提供标准化接口。

PDO 映射是就 PDO 中包含的信息达成一致的方式。PDO 映射是设备对象字典中的条目,就像其他任何条目一样。3 字节索引、子索引和以位为单位的参数大小在 UNSIGNED32 中编码。

于 2013-06-26T01:00:22.267 回答
1

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

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

一旦它们被定义并保存到节点中,我可以发送一个带有位置的 PDO 命令并返回当前和位置。

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

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

于 2015-01-15T22:28:40.130 回答