如果在j1939中有两个名称相同的节点声称有相同的地址,在这种情况下会发生什么?节点中的任何一个会声明地址还是会发生错误?
我的规范副本已注明日期,但我确信自2003年(SAE J1939-81)以来,该规则没有改变:
"ECU制造商和网络集成商必须确保所有CA的NAME在特定网络上的传输是唯一的。"
当然,也就是说,当然可以将具有相同名称的设备放在同一组电线,要么是出于无知,要么是恶意。
我个人还没有玩过,但理论上,如果你的设备与另一个设备的名称完全相同,你的地址声明将与另一个完全重叠,两者都不知道对方的存在,消息会成功通过,每个设备都会认为是它发送的。
我可能错了,但我认为CA可能看到的唯一奇怪的事情是来自某个地址的消息它认为自己已经声称了这一问题,甚至可能没有检查过。
从网络的角度来看,无法区分节点是否不同,因为它们将自己标识为同一实体。将会发生的情况是,第一个请求将被处理,而第二个请求将忽略。换句话说,这是竞争条件,因为在数据链路中一次只处理一条消息。当第二个节点尝试声明相同的地址时,地址表已经被占用,延迟请求节点将无法获得地址已分配给它的通知。请记住,每个节点都有自己的内部状态/配置。
J1939-81表示
"发生重复冲突,设备总线断开CA应使用重试尝试回收然后恢复到之前的伪随机延迟图2和图3;