汽车电子CAN网络设计关键问题全析
扫描二维码
随时随地手机看文章
如何解决当前CAN网络应用层协议设计面临的关键问题?
就如同集成电路、微处理器的诞生一样,数据总线技术的问世成为了汽车电子技术发展的一个重要里程碑。如今,随着CAN总线技术在汽车电子领域日益广泛的应用,其协议一致规范表述的重要性也逐渐凸现。根据ISO(国际标准化组织)定义的OSI模型,CAN协议定义了物理层及数据链路层规范,为不同的汽车厂商制定符合自身需要的应用层协议提供了便利。如果需要建立更加完善的系统,还需要在CAN的基础上选择合适的应用层协议。
为了帮助业内工程师进一步了解汽车CAN网络应用层协议制定的重要性,以及掌握汽车CAN网络应用层协议设计技术,并解决其关键问题,在电子工程专辑旗下的汽车电子设计网站举行的《如何解决当前CAN网络应用层协议设计面临的关键问题? 》专题讨论中,Mentor Graphics资深产品专员董因平博士应邀与工程师进行互动,与大家进一步探讨了汽车CAN网络应用层协议制定方面的话题。基于此次专题讨论,我们总结了汽车CAN网络应用层协议设计中经常出现的一些问题供读者参考。
解析CAN协议应用层与应用程序
董因平博士表示,应用层和应用程序是不一样的。应用层是指通讯功能的应用层。它并不定义和描述应用程序参数,它提供的只是通讯功能与应用程序的通讯接口。包括:定义通讯服务、传送过程数据、诊断信息及标定信息。设备监控和网络管理也一般定义为应用层的一部分,有的也将传输层的部分内容纳入应用层实现,比如超过8个字节的数据传输。
应用程序就完全是指控制算法等应用代码。它定义控制算法相关的数据和参数。
在目前ECU开发中,应用程序代码包含了应用层代码。其缺点在于以下三个方面:
1. 应用程序发生变化,必须考查应用层是否还能满足要求。
2. 通讯协议发生变化,整个应用程序及应用层代码都必须重新编译测试。这个问题是造成整车厂在协议开发中不能起主导作用的主要原因之一。所以有很多国内的整车厂有了新的协议,希望某些国外大型供应商实施新协议时会遇到极大的阻碍。一是不愿意做,二是重新开发的费用高昂。
3. 严重阻碍了节点和设计的重用。由于应用程序和应用层融合在一起,难以实现即插即用的效果。
解决方案就是接口标准化,即将应用层从应用程序中分割出路并标准化接口。 AUTOSAR的一个特性就是标准化接口,实现即插即用。Mentor Graphics的VTP也是一个典型的例子。
CAN测试重要还是协议制定重要?
董因平博士表示,测试和设计的重要性在不同设计思路中有不同的体现。目前应用层协议制定的方法可以分为两大类,一类是测试为重心的方法,一类是设计为重心的方法。
第一种方法也称为投票法或试验法。这是一种工程设计方法,各个供应商对协议提出要求,整车厂集成要求,通过测试验证协议可行性,随后发布协议。测试的功能除了验证协议的实现外,还有一个重要的任务就是对协议设计进行测试,试图解决ID分配不合理、消息冲突问题等等。这种方法的重心就是测试,因此测试比较重要。
第二种方法是系统级设计法。这是一种理论设计方法,它提出了完全不同的需求,供应商只需要提供相应的参数,根据一定的理论模型对网络通讯特性进行计算,如信号延迟、总线负载等。以此为基础,考虑设计需求,通过一定的调度算法,对每条消息的ID进行分配。方法的核心就是优化这些特性参数,保证整车网络通讯的实时性能。因此在这种设计方法中,设计是重点。
董因平博士还指出,测试并不等同于验证。他说:验证表示的是我们有一个标准,测试被测对象是否符合。但是目前汽车电子的测试不能一概的称为验证,因为它还要测试协议设计是否正确,协议设计中是否有瑕疵。验证的输入是被测对象的特性,参照的是标准,输出的是两者是否符合。
而现在的测试,输入的既有被测对象的特性,又有所谓的标准,输出的是协议是否需要修改、系统是否可行、设计是否符合需要。注意这里引出了一个难以让人理解的地方,我们要测试ECU是否符合标准,但是我们却又在根据测试结果在怀疑这个标准。因此除非有非常雄厚的技术和经验积累,否则你始终在这两者之间徘徊,浪费时间和金钱。中国目前就处于这种状态,但是我们却要依靠测试来推动技术的发展,难以想像。我们需要的是一条新的发展思路。
没有设计就根本谈不上测试,相反设计才决定了测试的体系。例如,整车网络的电气特性参数,比如ECU的终端电阻、电容,这些参数都是与特定的网络环境有关系的。可能因为线束走线不同就有所不同。设计人员知道影响这些参数的原因和可能出现的问题,而这些都可以成为建立测试方法的输入。
董因平博士补充道,测试是比较重要,但是一定要比较的话,则更倾向于选择设计更重要。其实电子行业的发展可以成为参考,为什么EDA工具在电子设计中处于如此重要的地位?而且现在国际上的趋势是基于系统级的设计、建模等等。重点是系统级!董因平博士还强调,如果一味只重视测试的话,那么就是在走国外发展的老路,是背离系统级的设计思路,根本就没有考虑国际发展的趋势。
应该从哪几个方面来构造协议?
CAN协议的基本要素是ID、周期和信号与消息的映射关系。因此构造协议的主要任务是ID分配、定义消息周期、确定信号与消息的映射关系。这三个方面的设计都同等重要,设计要考虑的主要因素有数据传输的实时性要求(即所谓的时序)、数据的相对重要程度、与数据相关的应用控制算法对数据的时间要求。
董因平博士指出,协议设计实质上是非常复杂的工作,对于国内来说,由于我们缺乏相应的经验,国外又对我们进行技术??,因此到目前为止这还是阻碍中国技术发展的主要障碍。
国际上也存在一些现有的标准,如CANopen、SAE J1939.SAE J1939这是一个有汽车工程师协议牵头制定的应用与卡车电控网络的协议。不过它主要是应用与卡车的电控系统,不能直接照搬到轿车控制系统中。但是随着汽车电子的发展,汽车电子设计分工也越来越细,这部分工作也有厂商提供工具实现协议的计算机辅助设计。比如Mentor Graphics公司的VNA就是一款自动化的协议设计软件。
实现通信协议的程序代码结构是什么样的?
董因平博士说:首先CAN通信功能包括物理层、数据链路层和应用层。物理层、数据链路层已经由硬件实现,目前都已经标准化,有现成的部件(CAN控制器和收发器)选择。因此在单片机上加上CAN控制器、收发器,软件实现相应的驱动程序就基本实现了CAN的通讯功能。但是这对于汽车电子上的应用还是远远不够的,因为数据链路层有很多功能没有定义如具有逻辑关系的消息之间的功能实现、网络管理等等。
因此通信协议的程序代码的结构应该是底层驱动+应用代码(通信功能的应用代码)。如果考虑目前汽车电子嵌入式软件的技术发展,未来的结构应该是底层驱动+应用代码+抽象层。汽车电子软件开放式体系标准AUTOSAR也基本是这样的思路。目前也有很多软件厂商提供现成的解决方案,ECU软件开发只需要在该解决方案提供的基于数据读写的接口之上实现控制算法。这样做的好处在于软件设计人员可以把专长用于集中设计控制算法、保证其可靠性。这样的产品如Mentor Graphics的嵌入式软件(VTP + 网络管理 + 诊断……)就是这样的应用例子。