大纲
1 背景
随着车载通信技术的发展,车载网络涉及CAN、LIN、Flexray、以太网,网关控制器扮演着举足轻重的角色,路由功能更是不可忽视的一部分。
1.1 问题
- 汽车网关的功能是什么?
- 汽车网关会被取代吗?衍生了哪些控制器?
- 网关的路由功能是什么?
大家看完下文后,可以再回过头思考思考以上3个问题。
2 常见网络拓扑
当前市面上主要分为如下三类网关控制器:
汽车CAN网关
CAN网关,基于CAN和/或CAN FD总线的车内网络结构中,大多数的ECU、域控制器之间都会通过CAN和/或CAN-FD总线进行通信。这类结构中的汽车网关主要有CAN和/或CAN-FD总线接口,可称为CAN网关。
汽车以太网网关
以太网网关,基于以太网的车内网络结构中,大多数的ECU、域控制器之间会通过以太网进行通信。这类结构中的汽车网关主要有以太网接口,可称为以太网网关。
汽车混合网关
混合网关,部分新一代车内网络结构中,一部分ECU,域控制器之间通过以太网通信,而另一部分ECU、域控制器通过例如:CAN,CAN-FD、LIN,MOST等)通信。这类结构中的汽车网关既有以太网接口,还有传统通信协议接口,可称为混合网关。
3 汽车网关的常见功能
在传统分布式EE架构中,网关必不可少。为什么说必不可少呢?那一定是汽车功能实现的需要。
协议转换
1.某款车型存在CAN网络、LIN网络、以太网网络,并且这些网络都会挂载多个ECU。
大家试想一下,不同网络的ECU如何进行交互?
问题1: CAN网络的ECU-A发送的数据,以太网网络的ECU-B能收到后正确解读吗?
可以类比,某美国佬噼里啪啦骂了一个多小时xxxxxx,某小日子听了半天,一脸懵逼,还面带微笑以示礼貌。所以,两个互相听不懂的人交流,谁也听不懂彼此想要干嘛(因为一人说英语,一人说日语,不是同一个语言)。
所以,问题1的答案很明显了,因为ECU-A发送数据时,使用的CAN协议进行数据封装,然而ECU-B接收到数据时,使用的以太网协议进行解析;好吧,谁也不知道彼此发的啥,何谈交互呢,哈哈。
这时候网关的作用就凸显出来了,扮演了**协议转换(翻译官)**的角色。如上,网关把ECU-A发送的CAN报文转换成以太网报文,网关再把转换后的以太网报文发给ECU-B,他俩就能进行正常交互了(交流沟通了)。
波特率转换
2.某款车型EE架构有四路CAN网络,BCAN波特率500kbps、CCAN波特率250kbps、TCAN波特率500kbps。
问题1:BCAN网络的ECU1与CCAN网络的ECU2能直接通信吗?
肯定是不能的,类比上文,如果某四川人甲说话一秒50字(ECU1),某四川人乙说话一秒25字(ECU2),他俩对话不在一个频道(频率)上,谁也习惯不了彼此的语速,谁也听不懂谁在表达啥。
所以,又得需要一个翻译官(网关),它来处理(调整彼此的语速)和传递双方的对话,使双方能彼此进行沟通交流。
问题2:ECU1与TCAN的ECU3能直接通信吗?
答案当然是肯定了,因为它俩同频共振能互相get,哈哈。
路由功能
路由的概念就不赘述了,生活中随处可见。
直奔主题,某款车型的ACAN网络和BCAN网络上的ECU需要通信:
场景1:ECU1发送到ACAN网络的报文1周期为50ms(信号A在该报文上),BCAN网络的ECU2需要处理信号A且对实时性无要求,也就是理论上携带信号A的报文2可以在BCAN网络上发得更慢(比如100ms);如何实现呢?
ACAN网络的ECU1以50ms周期发送携带信号A的报文1,网关收到后,将携带信号A的报文2以100ms周期路由到BCAN网络。这样,BCAN的ECU2就能接收到信号A,并且BCAN网络的负载率也降低了。
因此,网关可以通过改变目标报文发送周期,从而达到降低目标网络负载率的目的。
场景2:信号1、信号2、信号3分别来自报文1(ACAN网络)、报文2(BCAN网络)、报文3(CCAN网络),如果网关接收到这3条报文的信号1、信号2、信号3后,将这3个信号重组在一条报文里(报文4),再路由到目标网络(TCAN)会怎么样?目标网段(TCAN)的报文数量减少了,从而降低了TCAN网络的负载率。
因此,网关可以通过重组来自不同报文的信号到某一报文,从而达到降低目标网络负载率的目的。
自诊断功能
诊断功能也是必不可少,通过诊断功能的实现,能实时监测、记录、上报自身故障状态。从而保证汽车在使用过程中能够及时发现故障,保证行车安全;并且也能帮助维修人员快速定位故障,高效完成维修。
BootLoader
如果某车型软件需要升级怎么办?如果需要修复发现的bug那怎么办?
汽车返厂或者4S店换件?费钱、费时间、谁都不愿意,那就需要支持BootLoader功能,通过OTA或者诊断仪完成软件升级。这样是不是就省时、省力了。
网络管理
NM的目的是协调汽车网络各ECU的休眠与唤醒;可以做到根据需求实现特定的休眠与唤醒功能,并且引用PN(Partial Networking)局部网络管理,可以实现更为精细化的网络管理来达到节能的目的。
信息安全
汽车网关作为车辆内部网络的核心枢纽,其信息安全至关重要。
比如:
1.各功能域物理隔离:网关通过划分不同网络,将不同功能域进行隔离;
2.访问控制与身份认证:基于角色的访问控制(RBAC)和最小权限原则,限制ECU间的通信权限。
本文着重介绍网关的路由功能,其他功能会单独开专题进行详细介绍,敬请关注!
4 汽车CAN网关路由功能
报文路由
将完整报文从源网段传输到目标网段网段。
- 直接报文路由
网关收到源网段报文之后立即转发到目标网段,不能改变报文中的信号的数值和位置,也不能改变报文ID。 - 周期报文路由
网关在源网段接收到周期型报文后,将其以周期型转发到目标网段,报文在目标网段的发送周期可以和源网段的发送周期相同,也可以更慢。网关可以更改源网段报文ID,但不能改变报文中信号的数值和位置。
信号路由
将源网段报文中的信号重新组合之后传输到目标网段。源网段的信号可以来自于同一报文,也可以来自于不同报文。
对于信号路由,网关可以进行的处理包含:
- 信号位置的改变,如下图:
- 信号长度的改变(如:源网段的开关信号Sig1占1位:0-关,1-开;经过网关处理后变为占2位:0-关,1-开,2-初始值,3-无效值;
使用信号路由的目的是降低负载率,分为两种情况: - 将来自不同报文的信号重新打包成一条报文,以减少目标网段的报文数量;
- 将来自于小周期报文的信号重新打包成大周期报文,以降低目标网段中该报文占用的负载率。
- 直接信号路由
如果需要路由的信号来自于同一条报文,则使用直接信号路由方式,此方式可对源报文中的信号位置信号长度进行改变。
直接信号路由最大延时时间一般为10ms;(不同项目可能存在差异)
如下图:
图中数字表示信号的值,源网段的报文Msg1中有3个信号,为满足目标网段的需求,网关将其中2个信号路由到目标网段,并且对信号位置进行改变。
- 周期信号路由
如果需要路由的信号来自于不同报文,则使用周期信号路由方式。网关将源网段中的来自于不同报文的信号重组打包成新的报文,将其以周期型转发到目标网段。
周期信号路由示例
示例1:如下图,Msg1和Msg2位源网段中的两个周期型报文,网关将Msg1中的Sig1和Msg2中的Sig2打包成新的报文Msg3,Msg3在目标网段的发送周期为200ms。网关上电后发送Sig1和Sig2的初始值,分别为11和12,网关收到源网段信号之后发送信号的“上一次”值(历史值)
示例2:如下图,源网段报文Msg1周期发送,当Msg1发生超市故障后,Msg3中的Sig1发送超时值,超时时间溢出之前,发送Msg1中Sig1信号的上次值;Msg2未发生超时,网关按照正常的路由方式进行转发。
TP路由
TP路由(诊断路由),带有传输协议(如:CAN传输协议ISO 15765)报文的路由称为TP路由。TP路由又可分为两种:
- 不带协议转换的TP路由(一般称为报文透传)
在部分OEM的定义中和直接报文路由未作区分,但实际两种路由的应用场景是不同的,直接报文路由针对应用报文,强调转发速率且最新的信号值最具重要性(latest value is the most important);报文透传对速率的要求不高但要求先入先出(first in first out)和不丢帧。 - 带有协议转换的TP路由
带有协议转换的TP路由主要特点是:可以实现协议转换(源网段和目标网段的协议可以不一致,比如:源网段诊断报文采用CAN的15765的传输协议,目标网段诊断报文采用以太网的13400传输协议),且网关作为传输连接的一部分,在源网段的接收和转发均须符合传输层协议,不符合传输协议的不转发。
5 路由功能测试
需求解读
路由功能的需求来源为:客户路由表、客户路由规范、客户通信矩阵/DBC、客户通信规范、ICD。
注:本文主要介绍CAN网络,因此暂不考虑LIN网络的LDF文件、调度表以及以太网的ARXML文件。
- 客户路由表
定义路由关系,部分路由关系如下图:
源网段:源网段名、报文名、信号名、信号位置、报文ID、DLC、发送周期;
目标网段:目标网段名、报文名、信号名、信号位置、报文ID、DLC、发送周期、路由方式(直接/周期报文路由、直接/周期信号路由、初始值、超时值;
这样就能明确某报文/信号应该如何进行传输;比如源端网段是啥?目标端网段是啥?发送周期是多少?等等。 - 客户路由规范
定义路由方式的详细需求:
比如,该项目直接/周期报文路由以及直接/信号路由的详细定义描述、DLC转发策略、超时策略等。 - 客户通信矩阵/DBC
定义该车型整车层面的所有信号属性,某CAN网络DBC如下图:
DBC与通信矩阵内容上无任何差别,前者目的是给开发或者测试工具使用的,而后者是给工程师查阅使用的。在测试过程中需要经常跟它们打交道,以完成测试用例的编写、测试环境的搭建以及测试问题的分析等。因此,需要咱们熟悉里面所描述的内容和含义。后续会单独开展专题进行介绍。 - 客户通信规范
也即是针对ISO11898标准的企业化需求。定义了CAN总线物理层、链路层、网络层等所提出的通信需求、安全通信(E2E)机制以及故障机制(Busoff故障以及快慢恢复策略)。 - ICD
某车型网关控制器ICD示意图如下:
定义了该项目硬线接口(KL15、KL30、IGN、DOIP激活线等)、IO接口(各路CAN、LIN、以太网等)等在接插件上对应的PIN脚,指导测试工程师完成控制器与测试工具的线束连接,从而完成测试环境的搭建。
以上需求都是测试用例开发的需求来源。
测试用例
- 测试方法
常见测试方法有:基于需求的测试、故障注入测试、性能测试、压力测试等。 - 测试用例导出方法
常见的测试用例导出方法有:需求分析、边界值分析、等价类的生成和分析、基于知识或经验的错误猜测法、功能相关性分析等。
以上测试方法以及测试用例导出方法在测试用例开发过程中使用非常广泛,本文的路由功能用例开发所采用的方法也是基于这些方法的。 - 测试点示例
- 报文路由测试
- 转发值测试
目的:测试数据转发一致性; - 报文周期测试
目的:测试报文周期稳定性,一般根据报文周期大小有不同的误差要求,具体以项目需求出为准; - 转发策略测试
目的:直接报文路由源报文停发后立即停止转发到目标网段;周期报文路由源报文停发后网关依然按照目标报文周期发送到目标网段;有些需求是源报文停发后,网关向目标网段发送5/10倍周期后停发等; - DLC策略测试
目的:网关收到非预期DLC长度后的处理方式是否符合需求。 - 路由延时
目的:网关收到源网段的报文后到网关将该报文路由到目标网段的时间,报文路由一般要求1ms,实际项目以需求为准。 - 高负载测试
目的:当负载率70-80%时,是否存在丢帧。
目的:当负载率长时间处于100%时,通信功能是否失效。 - 非预期帧测试
目的:网关收到来自源网段的非预期报文(如路由表未定义的报文ID),不应该路由到目标网段。 - 休眠唤醒后转发值测试
目的:网关休眠,本地/远程唤醒后,转发值是否正常。
- 转发值测试
- 信号路由测试
- 转发值测试
- 信号周期测试
- 转发策略测试
- DLC策略测试
以上测试目的可参考报文路由测试点描述。 - 初始值测试
目的:网关上电后,初始值是否符合需求。 - 超时值测试
目的:源信号超时后,网关转发至目标网段的信号超时值是否符合需求。 - 超时时间测试
目的:源信号报文停发多久后,网关发送超时值到目标网段。
常见超时策略为:5源信号周期或者10源信号周期,具体以实际项目需求为准。
报文转发值-最小值测试用例设计示例如下:
初始条件:
1.控制器供电电压:12V,KL15=ON;
2.CANoe上位机按照通信矩阵定义模拟发送所有周期报文(模拟实车环境-对应打开CANoe节点同步);
测试步骤:
1.CANoe上位机按照路由表定义的路由关系遍历模拟发送测试报文且数据场为0x00;(某一测试报文如:源网段:ACAN、报文ID:0x123、DLC:8、源报文周期:100ms;目标网段:BCAN、报文ID:0x123、DLC:8、目标报文周期:100ms);
2.持续监控10S,观察目标网段报文转发情况;
预期结果:
监控到目标网段的网段、报文ID、DLC符合路由表定义且数据场为0x00(如:目标网段BCAN是否正常监控到0x123报文且DLC为8以及周期为100ms);
其他用例就不一一展示了,如果有需要可联系我交流,如果后续大家有此类需求,我会继续新增专题进行介绍。
测试环境
- 测试设备:稳压直流电源、VH6501、VN1640;
- 稳压直流电源为DUT提供稳定电压,如:12V;
- VH6501控制继电器闭合/断开,从而控制KL15、KL30电等;
- VN1640是CANoe上位机的硬件设备,支持4路CAN/CANFD,与控制器接插件连接;
- 测试工程如下图:
后续会专门开专题介绍测试环境调试过程中常见问题的解决方法,本文暂不展开介绍。
6 思考
域控制器的发展
随着车载电子控制器的快速发展以及EE架构的演变,域控制器逐渐在市场占有不少的份额。典型中央/区域域控制器都会集成路由功能,即便网关控制器可能被逐渐被取代,但是路由功能不会就此消失,因此路由功能的测试依然不可忽视。
后续文章会对本文的路由功能测试做补充,当然也会开设其他功能模块的测试专题,欢迎各位看官提出宝贵建议,一起交流!