J1939和CANBus

问题描述

我知道J1939和CANBus之间的一般区别。如ID位计数。我也知道J1939允许您发送CANBus无法执行的8个以上的字节。 J1939还提供2个节点之间的点对点通信。此功能使我感到困惑。在什么情况下,我们需要2个节点之间的点对点通信?当其他节点继续广播时,这两个节点(进行点对点通信)会不会错过广播的数据?同样在哪种情况下,我们应该更喜欢使用J1939而不是CANBus?而不是我们想要在一帧中使用8个字节的时间。

解决方法

CAN 和 J1939 之间没有区别。 J1939 建立在 CAN 2.0b 之上。 当某些设备使用 J1939 传输协议 (J1939.TP) 使用 BAM 发送大消息时,其他设备可以接受或忽略此消息。但是有一个重要的限制——设备一次只能发送一条 BAM 消息。该设备也可以在 50ms 内只发送一个消息部分。因此,如果设备发送 400 个字节,这将需要 (400/7*50) ~ 2.9 秒。在此期间,设备无法发送任何其他 BAM 消息。如果设备发送 CM 消息,它可以向 ECU 1 发送一条消息,向 ECU 2 发送另一条长消息。 J1939 主要用于卡车和公共汽车。如果您为卡车创建设备,则必须使用 j1939。