在系统上,两个 CAN 端口可以具有相同的 CAN-id 吗?

在系统上,两个 CAN 端口可以具有相同的 CAN-id 吗?

如果有两个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

答案1

是的,它会。

CAN 的架构与以太网几乎相同。 CAN ID 的作用与以太网中的 MAC 地址几乎相同。因此,只要两个网段保持独立,您就可以在两个不同的设备上拥有相同的 ID。如果这些网段重新连接到一个网络中,则会发生冲突,并且两台设备都无法进行正常通信。

我不确定“两个网络中的同一主设备”是什么意思,因为 CAN 的设计更接近于 p2p 协议,并且主机之间实际上没有主从关系。

如果您想在加入网段后保留“主设备”的消息优先级 - 您可以在 ID 中留出一个间隙,并为两个“主设备”分配较小的值,而“从设备”的 ID 则高于两个主设备。

编辑:我从未使用过(或见过)此类多端口 CAN 设备。但从纯粹的理论角度来看——只要设备本身允许在其端口上使用相同的 ID——它可能会起作用。只要 ID 在总线内是唯一的 - 主机就能够通信。

有一些“特殊情况”设备,即“CAN 网关”。它们将两根 CAN 总线合二为一。但网关通常不被称为“master”,所以我不确定这是否是您的想法。

一旦您通过网关连接到总线,您就只有一根总线,并且两个网段的所有设备都可以相互通信。网关只是一个信号中继器。顺便说一句,如果您的总线物理上足够长 - 您可以有意在中间放置一个网关以确保信号强度。
CAN-CAN网关由专用软件配置,该软件与网关设备一起分发(或从生产公司下载)。因此,当您运行该工具时,会自动回答其端口上的 ID 问题:)

我使用的另一个多端口设备是 CAN 以太网网关。但在这种情况下,该设备只有一个 CAN 端口,并且它充当具有正常 ID(以及以太网侧的正常 MAC 地址)的正常 CAN 设备。

相关内容