0

我正在使用通过 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%

然而,我看到的是:

  1. 控制计算机测量约 86% 的负载(最小值为 68%,峰值为 100%)。
  2. 我连接到网络的 USB CAN 总线分析器记录的消息流量(按计数)约为我名义预期的一半(即,每个周期发送 4 条,接收 4 条,持续 50 秒应产生 50k 条消息,而我只看到18-25k)。此外,我每个周期都会从从属设备收到 1-2 条网络过载的错误消息。在指出之前,即使将这些消息的大小计算为流量的一部分,也无法解释负载异常。

我想知道的是我计算 CANOpen 网络负载的方法是否正确。例如,是否有任何特定于协议的握手、CRC 或任何类型的额外字节发送以使网络简单地工作?我在CANOpen 的 wiki 页面上看不到任何内容,但我知道原始CAN 总线标准中的消息有这样的附录。

4

1 回答 1

1

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

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

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

希望有帮助。

于 2019-10-21T15:15:53.493 回答