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

使用超过8个字节的数据在CANopen中发送事件异步数据

如何解决使用超过8个字节的数据在CANopen中发送事件异步数据

我们正在开发一种典型的CANbus网络系统,您可以称其为组织许多设备的控制器。

设备需要配置,控制器使用常规对象字典项(当前在制造商特定范围内)写入(也可能回读)。

设备还使用超过8个字节的数据来执行动作(命令),我们可以通过仅在设备对象字典中写入项并依靠SDO的常规分段/反分段来解决此问题。 (我不知道这是否是 CAnopen的处理方式,但这似乎是合理的。)

但是,该设备还会产生事件(例如某些传感器数据超过某个阈值),从而导致从该设备发出8字节以上的异步数据。 PDO旨在用于发送异步事件数据,但只能包含8个字节。设备可以将数据写入控制器上的对象字典项中,但这似乎不像CAnopen方式。我说的对吗?

我们能想到的最好的方法是将PDO发送给控制器,通知控制器设备上的对象字典中还有更多数据可用。

任何具有CAnopen背景的人都可以采用最佳( CAnopen 解决方案?

由于我经常重复8个字节,因此我们可以放心地假设此网络未运行CAN-FD。

解决方法

任何明智的CAN网络设计的关键是尽早考虑实时性,数据优先级,总线负载和数据量。如果您发现自己的数据块大于8个字节,则强烈表明该设计存在问题-应该将其拆分为几个包。

通常,您根本不应该对数据使用SDO,因为它们会带来开销。这包括对对象字典的写操作,这也意味着SDO访问。使用SDO进行的块传输等用于引导加载程序或一次性配置,而不用于操作模式下的实时数据通信。可以做到的,但是很腥。

从理论上讲,您可以使用PDO映射在多个PDO之间映射数据,但这听起来确实像是“ XY问题”-您确信需要传输更大的数据块并寻找一种处理方法。但是第一步是查看基本的网络数据/设计,看看您是否真的需要那些大块,或者将它们分成几部分是否有意义。理想的CANopen设计是在可能的情况下,每种数据类型具有一个PDO。

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