如何阻止来自 socketCAN 虚拟网络的特定 id?

How to block a particular id from a socketCAN virtual network?

我有一个虚拟的socketCAN网络。如何阻止特定 ID 在网络上发送?

如果节点连接到 CAN 总线,在最低级别上无法阻止它向外部发送 any 消息。

但是,可以做 3 件事:

  1. 添加一个网关——一种将总线分成多个小总线并将消息从每个子总线传递给其他子总线的设备,它不会阻止任何节点发送消息,但它会不传给别人。该解决方案有一些明显的缺点 - 它需要一个具有多个 CAN 接口的单独设备(最多达到总线上的节点数),它为每条消息增加了延迟,并且使 ACK 位不可用。

  2. 对每个节点中接收到的消息应用过滤器。同样,这不会阻止发送消息,但会降低节点上的负载。大多数 CAN 控制器都有硬件支持通过 ID 或 ID 的位掩码进行过滤。

  3. 有一些CAN控制器可以阻止消息的发送,同样,这将需要添加这样的控制器并为CAN总线中的每个节点设置它。