通过CAN总线进行通信的设备必须在开始发送其他任何内容之前发送其标识符。该协议定义具有较低标识符的设备具有优先级。该协议具有“显性0”,这意味着如果一个设备在总线上放置0而另一个设备在总线上放置1,则0在总线上。设备会一直监听,包括何时发送。这意味着一个设备将其标识符放在总线上,该标识符在某个位置具有1,但是读取0它知道更高优先级的设备也想要使用总线并且它必须停止。
谁定义了汽车内设备的ID?它只是随机的吗?制造商是否强制执行标识符? (如果设备不是由他们自己构建的,例如汽车收音机,他们如何做到这一点?)
答案 0 :(得分:4)
根据我的理解,CAN帧中的标识符字段实际上不是发送它的设备的ID,而是该特定消息类型的标识符。然后,接收设备使用该字段来确定它们是否需要响应消息(我相信这种过滤通常使用位掩码实现)。
例如,制造商可能会将标识符00000001100用于与门锁相关的所有消息。然后控制锁定机制的CAN设备只需要监听具有此特定标识符的消息,并且可以忽略所有其他消息,因为它们唯一的功能是锁定/解锁门。
至于谁在涉及第三方设备时确定标识符时,我确信大型汽车制造商可以摇摆无线电制造商使用自定义标识符以满足其用途(如果需要)。但是,标识符的11位应该为汽车制造商提供足够的空间来优先考虑无线电制造商使用的系统(假设无线电制造商没有将所有消息标识符设置为11111111111或类似的东西)。 / p>