如果具有两个 CAN 端口的设备具有相同的 CAN-id,这会造成麻烦吗?
由于某种原因,网络是分开的,但两个网络的“主”应该是相同的。
编辑:在网络拓扑下方。
("master") CAN-BUS 0 +----------+
+----------+ |------->| CAN-ID 2 |
| |<------| +----------+
| CAN-ID 1 |
| |<------| +----------+
+----------+ |------->| CAN-ID 3 |
CAN-BUS 1 +----------+
据我所知,CAN-id 是在软件中设置的。如果我和你一起玩,ifconfig
就不能设置 CAN-id。相反,这是在我想通过以下方式生成 CAN 流量时设置的cangen
:
CANID=1
ip link set can0 type can bitrate 125000
ip link set up can0
cangen can0 -I $CANID -L 8 -v
是的,它会的。
CAN 具有与以太网几乎相同的架构。CAN ID 的作用与以太网中的 MAC 地址几乎相同。因此,只要两个网段保持独立,您就可以在两个不同的设备上拥有相同的 ID。如果这些段重新加入一个网络 - 您将发生冲突,并且两个设备都无法正常通信。
我不确定“两个网络中的相同主机”是什么意思,因为 CAN 被设计为更接近 p2p 协议,并且主机之间并没有真正的主从关系。
如果您的意思是在加入网段后保持“masters”的消息优先级 - 您可以在 ID 中留出一个间隙并为两个“masters”分配一些小的东西,而“slaves”的 ID 将高于两个 masters。
编辑:我从来没有工作过(或见过)这样的多端口 CAN 设备。但从纯理论的角度来看——只要设备本身允许在其端口上使用相同的 ID——它可能会起作用。只要 ID 在总线内是唯一的 - 主机就可以通信。
有一些“特殊情况”设备是“CAN 网关”。它们将两条 CAN 总线合二为一。但是网关通常不被称为“主”,所以我不确定这就是你的想法。
一旦您通过网关连接到总线 - 您只有一条总线,并且来自两个网段的所有设备都可以相互通信。网关只是一个信号中继器。顺便说一句,如果您的总线在物理上足够长 - 您可以有意在中间放置一个网关以确保信号强度。
CAN-CAN网关由专用软件配置,与网关设备一起分发(或从生产公司下载)。因此,当您运行该工具时,会自动回答其端口上的 ID 问题 :)
我使用的另一个多端口设备是 CAN-Ethernet 网关。但在这种情况下,该设备只有一个 CAN 端口,它充当具有正常 ID(以及以太网侧的正常 MAC 地址)的普通 CAN 设备。