CANOpen网络负载高于预期

时间:2019-10-21 14:50:50

标签: embedded can-bus traffic canopen

我正在一个项目中,该项目的主计算机通过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%

不过,我看到的是:

  1. 控制计算机测得的负载约为86%(最小值为68%,峰值为100%)。
  2. 我连接到网络的USB CAN总线分析仪记录了流量 (按计数)的消息数量大约是我名义上的一半 预期(即,发送4个,每个周期接收4个,持续50秒应该会产生5万条消息,而我只会看到18-25k)。而且,我收到 从站设备每个周期收到1-2条错误消息 网络超载。在指出之前,即使算上 这些消息作为流量的一部分的大小不会接近 解释负载异常。

我想知道的是我计算CANOpen网络负载的方式是否正确。例如,是否发送了特定于协议的握手,CRC或任何种类的额外字节来使网络正常工作?在wiki page of CANOpen中看不到任何内容,但我确实知道原始CAN bus标准中的邮件都有这些附录。

1 个答案:

答案 0 :(得分:1)

在CAN消息中,要传输的数据不止一个。 还有一个仲裁ID(11位或29位,具体取决于您使用的是CAN 2.0A还是2.0B),15位CRC,7位EOF标记,控制字段以及一些其他保留位。 根据数据,可能还会有填充位。

使用CAN2.0B并假设有48位(6字节)的数据,您将获得大约132位的消息大小和64位消息的大约151位消息。

总结一下,您每个周期将获得大约1132位,对于1Mbit / s的总线和1000 Hz而言,这实在太多了。

希望有帮助。