【问题标题】:CANOpen same object mapped to multiple TPDOsCANOpen 同一个对象映射到多个 TPDO
【发布时间】:2020-08-18 22:31:22
【问题描述】:

我有一个带有多个 TPDO (4) 的从设备,用于发送某些传感器数据。每个 TPDO 有大约 4 个字节的数据,我想在帧中插入一个“计数”以指示数据不是陈旧的。我的计划是为此创建一个对象条目,并将其作为第 5 个字节映射到每个 PDO。 CANOpen 标准是否允许这样做,这是一个好主意吗?

PS:我没有在 1 个 TPDO 中发送所有 8 个字节,因为 1 个 TPDO 中的 4 个字节彼此有关联。

【问题讨论】:

    标签: canopen


    【解决方案1】:

    是的,允许将一个(子)对象映射到多个 PDO,甚至多次映射到同一个 PDO。在 RPDO 中使用虚拟映射时,这实际上很常见。

    插入计数是否是一个好主意取决于您要实现的目标。您要检测的问题是什么?您希望如何处理?

    如果要检查从站是否还活着且健康,请使用心跳。如果你想检查你没有错过一个 PDO,还有其他方法。对于 SYNC 驱动的 PDO,您可以在收到 PDO 时为每个 PDO 设置一个标志,并在 SYNC 处检查是否全部收到,然后再清除标志。对于事件驱动的 PDO,如果 PDO 在特定时间内没有到达,您可以使用 RPDO 中的事件计时器生成错误。

    插入计数器会起作用,并帮助您检测您错过了多少 PDO。但问题是,你能用这些信息做什么?最后一个 PDO,即使“陈旧”,通常仍然是接收端对值的最佳猜测。

    【讨论】:

    • 感谢您的回答,并感谢您对标志技术的建议。该应用程序用于安全关键系统,其中我发送的数据用于驱动某个设备(由于机密性等原因无法详细说明),并且 CANOpen 主站必须能够检测到“陈旧”数据,以防我的设备有.锁存寄存器等问题。我们刚刚开始集思广益,欢迎提出任何想法。
    猜你喜欢
    • 2023-02-15
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多