【发布时间】:2019-10-21 14:50:50
【问题描述】:
我正在使用通过 CANOpen 网络连接到 4 个从机的主计算机进行一个项目。
在每个时间步,计算机从每个从机接收测量消息,并向它们发送控制消息。每次采样总共收到 4 条消息,发送 4 条消息。
发送的消息是一个带有 6 个数据字节(包括 COB-ID 在内的 8 个字节)的 PDO 收到的消息是一个带有 8 个数据字节(包括 COB-ID 在内的 10 个字节)的 PDO
我的 CAN 网络配置为 1Mbit/s,我以 1000 Hz(1 ms 采样时间)运行我的程序。由于所描述的消息产生的总负载为 576 位/周期,因此网络中预期的总负载为 576kbit/s,即 57%。
然而,我看到的是:
- 控制计算机测量负载约为 86%(最小值为 68%,峰值为 100%)。
- 我连接到网络的 USB CAN 总线分析仪记录了一个流量 消息(计数)大约是我名义上的 一半 期望(即每个周期发送 4 条,接收 4 条,持续 50 秒应该会产生 50k 条消息,而我只看到 18-25k 条)。此外,我收到 每个周期来自从设备的 1-2 条错误消息 网络过载。在指出之前,即使计算 作为流量一部分的这些消息的大小不会接近 解释负载异常。
我想知道的是我计算 CANOpen 网络负载的方法是否正确。例如,是否有任何特定于协议的握手、CRC 或任何类型的额外字节发送以使网络简单地工作?我在wiki page of CANOpen 中看不到任何内容,但我知道原始CAN bus 标准中的消息有这样的附录。
【问题讨论】:
-
准确计算CAN总线负载并非易事。 Here 就是一个例子。
-
另外这不是一个真正的编程问题,所以它会更适合electronics.stackexchange.com
-
@Lundin 实际上我正要在那里问,但发现 CAN 和网络问题在这里更常见且回答更清楚(参见两个网站上比较的相关标签)
标签: embedded can-bus traffic canopen