微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CANOpen映射到多个TPDO的同一对象

如何解决CANOpen映射到多个TPDO的同一对象

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

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

解决方法

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

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

如果要检查从属是否还健康,请使用心跳。如果要检查您是否没有错过PDO,还有其他方法。对于SYNC驱动的PDO,您可以在收到每个PDO时为其设置一个标志,并在SYNC处,在清除标志之前检查是否已全部收到它们。对于事件驱动的PDO,如果PDO在一定时间内没有到达,则可以使用RPDO中的事件计时器来生成错误。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。