汪思泉
(东风汽车公司技术中心,湖北 武汉 430058)
随着汽车电子技术的发展,人们对乘用车的动力性、经济性、安全性、舒适性等方面提出了越来越高的要求,乘用车上电控单元的数量不断增加,而且功能也越来越复杂,实现这些功能需要各个控制单元之间信息共享,高效可靠地协同工作。乘用车上各个控制单元通过总线相互连接,构成了汽车的总线网络。
在乘用车的总线网络中,控制器局域网(Controller Area Network,以下简称CAN)因其技术成熟、安全可靠、成本适中,适合汽车上控制器之间网络通信,而得到了广泛的应用和普及[1]。ISO 11898 CAN总线技术规范对总线的物理层和数据链路层做了规定,形成了国际标准,但由于乘用车CAN总线应用层协议没有统一的标准,各个乘用车制造厂都需要自行制定各自的应用层协议。因此如何设计和验证乘用车CAN总线网络,成为各个乘用车制造厂需要解决的课题。
本文所述的目标车型为全新开发的乘用车车型,电子电器配置较为丰富,除基本的发动机控制器、自动变速器控制器、车身电子稳定系统、安全气囊控制器、电子转向系统、车身控制模块、仪表盘、信息娱乐系统、空调控制器外,还配置了一些安全、舒适、智能的装备,如胎压监测系统、电子驻车系统、车窗自动升降系统、智能进入系统等。其中,安全气囊控制器采用K线诊断,不参与CAN总线通信;车窗自动升降系统采用LIN线与车身控制模块通信;其余控制器或系统都采用CAN总线通信。
CAN总线网络设计前,需要调查CAN总线上有哪些控制器节点,这些控制器节点需要发送或接收哪些总线报文。
通过调查,目标车型存在以下CAN总线节点:发动机控制器、自动变速器控制器、车身电子稳定系统、电子转向系统、电子驻车系统、车身控制模块、仪表盘、信息娱乐系统、空调控制器、智能进入系统、胎压监测系统。在目标车型的基础上,还可能开发混合动力车型,需要增加高压蓄电池管理系统、驱动电机控制器、混合动力控制器等节点。以上控制器节点的主要功能见表1。
网络信号需求通常由网络节点设计人员提出,由网络架构设计人员负责收集和整理。但有时会出现信号有节点需要接收,但没有节点发送的情况,这时需要网络架构设计人员通盘考虑,协调各方,指定这些信号由哪个节点负责采集和发送。经过整理,目标车型的网络信号需求见表2。
CAN总线协议具有高速CAN和低速CAN两个国际标准,分别是ISO11898-2和ISO11898-3。其中11898-2是高速CAN通信标准,通信速率为125kb/s~1Mb/s,总线最大长度为40m/1Mb/s[2],适用于汽车实时控制系统,尤其是发动机、变速器、制动等系统的控制。11898-3为低速CAN通信标准,通信速率为40~125kb/s,总线最大长度为1 km/40 kb/s[3],适用于实时性要求不高的系统,如仪表显示信息、车门控制、空调控制、传感器信息、故障诊断等系统,用于车辆状态信息和控制命令的传输和共享。11898-2和11898-3协议数据链路层没什么不同,但在物理层有些区别,因此高速和低速CAN节点不能在同一个网络中使用。
在CAN总线最初引用到车辆时,多用于传输开关和传感器状态信息、仪表显示信息、灯光和防盗控制等信息,由于传输信息量不多,对网络速率要求不高,故选择低速网络,以降低成本。随着CAN总线在汽车上的广泛应用,尤其是在动力控制系统的应用,对网络速率有一定的要求,因此选择高速网络进行动力控制系统的通信[4]。由于低速网络不能与高速网络相兼容,故在网络设计时需要优先确定网络的通信速率。500 kb/s的通信速率不仅能满足动力控制系统的需要,还可以兼顾车身信息通信的需要,故为多数乘用车制造厂家采用,而且可以方便灵活地设计CAN总线结构,即在总线节点少、总线负载率低时,采用单网段的结构,在总线节点多、总线负载率高时,采用多网段的结构。
根据以上分析,目标车型所有CAN节点的通信速率采用500kb/s。
确定了网络节点和信号需求后,就可以对这些信号进行汇总和分析,评估和预测总线的负载率,规划网络拓扑结构 (即是采用单网段的总线结构,还是采用多网段的总线结构)。从成本、技术上分析,单网段的总线结构是最简单、最经济、最容易实现的方案,但是,一旦网络负载率超过了临界值(经验值为30%左右),总线的通信就会受到影响,可能出现总线拥堵、报文不能及时发送而丢失的后果。出现这种情况,需要考虑采用多网段的总线结构,从而降低网络负载率。
对于目标车型,如果将以上所有节点接入同一个网段,初步估算网络负载率将达到38.5%左右,大幅超出了负载临界值,不利于网络可靠运行,也不利于网络的扩展,因此需要采用多网段结构。由于EMS、TCU、ESC、EPB、EPS节点信号交互频繁、集中,故将这些节点划为一个网段,负责动力、制动、安全、转向、车身稳定等系统的通信,称为动力网段;将BCM、IC、VIS、ACU、TPMS、PEPS划为另一个网段,负责车身、娱乐、信息、舒适、防盗等系统的通信,称为车身网段。初步估算,上述动力网段和车身网段的网络负载率分别为27.5%和13.2%,低于负载率的临界值,具备网络扩展的空间。对于混合动力车型需要新增加的BMS、MCU、VCU节点,三者的网络负载率估算为18.75%,规划一个新网段,称为混合动力网段,负责混合动力系统的通信。
在确定了总线网络的网段后,对于多网段的网络,还需要确定网关的设计,即网关通过什么方式实现。目前,有两种实现方式,一种是独立式网关,另一种是集成式网关。独立式网关由单独的控制器实现,只负责网络信号或报文的路由,不负责车辆控制功能。独立式网关由单独的控制器负责路由,故通信功能可以做得很强大,方便扩展和升级,但会增加网络设计的成本,较少采用。集成式网关集成在某个CAN节点内,除实现该控制器自身的功能外,还负责网络路由,常见的集成式网关集成在BCM、IC、VCU等控制器中。集成式网关由某个控制器节点实现,可以节省网络成本,但会占用该节点的资源,对节点的性能要求较高,不方便网关的扩展和升级。
目标车型是量产车型,对成本有严苛的控制,因此本着成本最优、功能够用的原则,目标车型采用集成式网关方案。由于BCM是通用化较高的产品,而仪表盘IC在不同车型平台有不同的配置规格,通用化程度相对低,目标车型的仪表盘本身就需要全新设计,综上考虑,选择仪表盘IC作为网关。经过上述方案设计后,目标车型的网络结构就基本形成,见图1。
目标车型基础上的混合动力车型,有车身、动力、混合动力3个网段,对网关的路由能力要求较高,需要网关有足够的资源及时地处理信号或者报文的路由,应对方案是在仪表的基础上升级网关,或者开发独立式网关,其中独立式网关的网络结构见图2。
前文已经提到,在设计车辆CAN总线方案前,需要调查网络上传输的信号,调查的内容包括信号名称、信号由哪个节点采集并发送、信号传输周期、信号长度、信号精度、信号偏移量、信号定义、信号接收节点等信息。以车门状态、发动机状态、发动机转速信号为例,调查结果见表3。
可以看出,一个总线信号需要用一个或多个bit来表示,因此需要对总线上传输的信号进行组合,以此提高数据场的利用率。信号组合遵循的原则有:同一个节点采集的信号可以进行组合,不同节点上的信号不能直接组合;相同发送周期的信号可以组合,不同发送周期的信号不可以组合;尽可能提高数据场的利用率,减少报文的数量,同时预留必要的空余位,以便扩展其他信号。
表3 部分网络信号实例表
完成信号的组合后,需要给各个报文分配ID。CAN协议支持两种报文格式,一种是11位标识符的标准帧,另一种是29位标识符扩展帧[4],目前各大乘用车制造厂采用11位标识符的标准帧。11位标识符ID不仅表示了报文的代码,用于报文的识别,还规定了报文的优先级。根据CAN总线的通信机制,多个节点同时发送数据、竞争总线的访问权时,标识符ID数值较小的报文获得总线控制权,其他竞争的节点自动转入监听状态,其余节点也进入监听状态[4]。基于此,与车辆动力系统、制动及安全系统相关的报文优先分配较小的ID。此外,发送周期短、实时性要求高的报文,也应该优先分配较小的ID。发动机、变速器、BCM部分报文发送周期、ID见表4。
目标车型的网络信号经组合封装、分配ID后就形成了报文,所有报文经列表汇总就形成了信号矩阵,见表5。信号矩阵能够直观、清楚地定义信号和报文的信息,是网络应用层开发的依据。
表4 部分网络报文发送周期、ID表
表5 目标车型信号矩阵汇总表
前面提到,多网段的CAN总线网络必须配置网关,实现报文或信号的路由和转发,目前网关采用报文路由和信号路由两种方式。报文路由指网关从源网段接收到需要路由的报文后,直接将其转发到目标网段,报文的ID、发送周期可根据需要做些更改。报文路由一般在网关的底层程序就能实现,无需上层应用程序的支持,因此可以节省网关的资源。信号路由指网关将接收到的多个报文进行解析,提取需要的信号,并将提取的信号重新封装,分配ID,转发到目标网段。信号路由可以提高报文数据场的利用率,降低目标网段的网络负载,但会占用网关的资源,对网关处理器的要求较高。
举例说明:在目标车型中,车速报文由ESC节点发送,位于动力网段,同网段内的EMS、TCU、EPS、EPB等节点可直接接收车速报文,而车身网段的IC、VIS、PEPS节点也需要车速报文。仪表盘IC作为网关,将车速报文从动力网段路由到车身网段后,车身网段的IC、VIS、PEPS节点就可获得车速报文了。再如发动机的冷却水温度、变速器的档位信号、发动机的状态信号,位于动力网段,由不同的节点通过不同的报文发送,车身网段上的IC、PEPS节点需要这些信号。仪表IC作为网关,如果直接转发这些报文,虽然达到了信号共享的目的,但增加了车身网段的网络负载率。合适的做法是IC解析这些信号,重新封装后发送到车身网段上,这样可以减少车身网段报文的数量,降低网络负载率。
在完成了网络方案设计后,可以利用网络仿真验证方案的合理性、可靠性、扩展性。网络仿真可在计算机平台上进行,利用CAN卡、CANoe、Davinci等总线工具完成仿真,仿真内容包括总线负载率、报文发送最大等待时间、错误帧的影响、总线扩展性能评估等项目。
总线的负载率是评价报文实时发送的重要参数。在创建了整车网络仿真环境后,可以利用Bus-Statistics查看总线负载率。根据经验,总线的负载率在30%以下,可以保证网络的正常通信。
报文发送最大等待时间与报文的优先级、总线负载率等因素有直接关系,如果报文发送等待时间超过了报文周期,会导致报文丢失,因此要求各个报文的发送最大等待时间小于报文的发送周期。通过仿真,分析各个报文的等待时间,便可直观地判断报文发送等待时间是否满足要求。通过向仿真网络中增加错误帧,分析总线的负载率变化可以评估错误帧对网络的影响。通过向仿真网络加入周期为10、20、50、100ms不同周期的多个报文,分析总线的负载率变化可评估网络的扩展性。
通过仿真可以得出,目标车型动力网段负载率为28.2%,车身网段负载率为13.95%,网络负载率满足要求;各个发送报文的发送最大等待时间小于报文周期,且相对值在25%以内,满足要求;增加10、20、50、100ms不同周期的错误帧,总线负载率分别上升2.58%、1.29%、0.52%、0.26%,但仍在或接近30%以内,可以接受。在动力网段、车身网段同时模拟加入2个节点,每个节点发送2个周期为10ms、2个周期为20ms、2个周期为50ms、2个周期为100 ms的报文,网络负载率增加18.6%左右,对于动力网段,增加节点后负载率远超过30%,达到46.8%,扩展性能非常有限;车身网段达到了32.55%,具备一定的扩展空间。
在CAN总线各节点完成试制,具备样件的测试条件后,就可以开展CAN总线的测试和验证工作。CAN总线测试分为节点测试和总线系统集成测试两部分。节点测试针对每个网络节点单独完成,用以验证单个节点是否满足总线的设计要求。总线系统集成测试是在电器台架或者试验样车上将各个节点连接形成完整的CAN总线系统,对总线系统进行测试,以验证系统运行的正确性、完整性和稳定性。
表6 CAN总线测试用例
CAN总线测试,首先需要制定测试规范,然后根据测试规范编写测试用例,构建测试环境,进行实际测试,记录测试结果,最终形成测试报告。由于目前乘用车行业没有统一的CAN总线测试规范,各个乘用车制造厂家需要自行制定CAN总线测试规范。CAN总线的测试规范的制定,可以依据设计需求和相关的规范,确定试验需求和测试用例。每个测试用例包括测试目的、测试环境、测试方法和步骤、判定依据、测试结果等内容。
CAN总线测试可以按照通信协议层划分为物理层测试、数据链路层测试、应用层测试等测试项目,各层的测试用例见表6。物理层测试是验证CAN接口电路设计、信号电平特性、总线物理故障等方面的性能,是保证节点能够正确连接入总线的基础;数据链路层测试位时间、采样点项目,用以保证各个节点的通信参数能够保持一致,所组成的网络能够正常有效工作;应用层测试包括报文接收超时、报文发送超时、报文一致性、报文发送周期误差、网关路由功能项目,是为了验证节点或网络可以正常通信、满足设计的要求。
为了验证CAN总线的可靠性,可以借助试验样车高寒、湿热、综合路况、8万公里耐久试验项目,搭载CAN总线的可靠性测试。试验方法是将总线记录仪搭载在试验样车上,记录网络上出现的错误帧,定期导出记录仪内存卡上的数据,并对数据进行综合分析。
本文所述的CAN总线网络的开发按照需求分析、方案设计、仿真分析、节点测试和验证、网络集成测试和验证5个阶段进行,每个阶段互相衔接,层层递进,是网络设计和开发常用的方法,该方法在目标车型上得到了充分的应用和实践。截止2015年8月份,目标车型已经进入量产阶段有12个月时间,市场保有量接近5万台,所有售出车辆的CAN总线网络运行正常,没有故障和问题报告,较充分地验证了CAN总线的正确性、稳定性和可靠性。
本文所述的CAN总线网络设计和验证方法在目标车型和其他车型上的成功实践,证明了该方法是一种操作性强、行之有效的工程方法。
[1] 邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.
[2]INTERNATIONAL STANDARD.ISO 11898-2,Road Vehicle-Controller area network,Part 2:High-speed medium access unit,2003.
[3]INTERNATIONAL STANDARD.ISO 11898-3,Road Vehicle-Controller area network,Part 3:Low-speed,fault-tolerant,medium-dependent interface,2003.
[4] BOSCH.CAN Specification Version 2.0,1991.