摘要:本文提出一种基于CAN域地址的网关路由算法设计。采用此方法设计网关,可以提高网关的通用化率。
随着整车电子电气化的发展,车辆电气装备越来越丰富,越来越多的电子控制单元装备在汽车中。为了方便电子控制单元间的信息共享,并且降低成本和减少线束质量,电控单元大多支持CAN总线通信。网关是连接多个子网的节点,是分隔网络降低网络负载的工具。不论集成式网关还是独立式网关,信息路由都是网关的最主要功能。通常网关路由设计基于现有的路由表进行定制化开发,而后续整车装备升级常常变更路由表信息,使得网关频繁升级。本文提出了一种基于总线域地址的网关路由算法设计,采用此方法可以使路由表自动生成,避免网关频繁升级,达到通用化设计的目的。文章首先对域和子网结构等相关信息进行定义,接下来介绍网关端口和设计路由表,最后给出路由算法和实例分析。
1 域定义和子网结构
CAN网络中的节点可以通信,需要定义节点通信地址。各个节点都具有一个唯一的通信地址,不同的节点有不同的通信地址。多个节点连接在同一条CAN网络上组成域。域指向一个子网,域地址指向一个子网地址。子网中的所有节点有相同的域地址。不同的域间,地址不相同。
在CAN报文标识符的表现上,域地址代表标识符的前面若干连续位,而子网中的各个节点地址通过标识符的后续比特位体现。将域地址所占用的连续位均置为1,后续位置均置为0形成的地址称作子网掩码:子网中的所有节点有相同的子网掩码。子网掩码用于判断一个子网所包含的全部节点地址的范围。
图1展示了一种4路子网的网络结构。其中3个子网通过网关1连接,网关2连接第4个子网。子网结构中标注了所有节点和域的地址信息。将域地址所占用的连续位长度通过“/”放在节点地址或域地址后面,体现子网掩码信息。
如表1所示的0x500/5子网表明:使用报文标识符前5个位表示域地址,子网掩码为0x7C0。当前子网中有3个节点分别为0x51 A/5 、0x51 B/5 、0x51 C/5。