我正在使用通过 CANOpen 网络连接到 4 个从机的主计算机进行项目。
在每个时间步,计算机从每个从机接收测量信息,并向它们发送控制信息。每次采样总共收到 4 条消息,发送 4 条消息。
发送的消息是一个带有 6 个数据字节的 PDO(8 个字节包括 COB-ID) 接收的消息是一个带有 8 个数据字节的 PDO(10 个字节包括 COB-ID)
我的 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 或任何类型的额外字节发送以使网络简单地工作?我在CANOpen 的 wiki 页面上看不到任何内容,但我知道原始CAN 总线标准中的消息有这样的附录。