【问题标题】:What is PDO mapping?什么是 PDO 映射?
【发布时间】:2013-05-11 08:25:24
【问题描述】:

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

【问题讨论】:

    标签: network-protocols bus can-bus canopen


    【解决方案1】:

    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 中。

    【讨论】:

    • 我目前正在使用 Xenus XTL 来控制一些电机,但似乎无法正确设置 PDO(总线上没有发送 pdo)。我的主要问题,以及我读过的所有其他描述都缺乏的东西,是 COBID 映射具体是如何工作的?例如,如果我在一个节点上定义了一个 TPDO,其 COBID 为 0x181,那么主节点上的所有 RPDO 是否也必须具有 0x181 的 COBID 或 0x201 的 COBID,或者每个节点都解析我看到到处都在使用的 0x180+$NODEID 语法中的节点 ID?谢谢!
    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • "请注意,只有在总线上发送 SYNC 命令时才会执行 PDO"。我认为您的意思仅适用于您的特定情况。 PDO 当然可以在没有 SYNC 的情况下使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多