基于OSEK_VDX的乘用车车身CAN网络管理与实现
随着汽车电子技术的不断发展,车辆上电控单元的数量不断增加,而且功能也越来越复杂,多个处理器之间相互连接、协调工作并共享信息构成了汽车车载计算机通信网络。车载网络运用多路传输技术,采用多条不同速率的总线分别连接不同类型的节点,并使用网关服务器来实现整车的信息共享和网络管理。其中, 在汽车车载网络中,CAN(Controller Area Network 控制型局域网) 总线技术得到了最广泛的应用。CAN 总线的物理层协议和数据链路层协议作为国际标准,已经被大家广泛熟知,并且得到国际大芯片厂商的支持,各种的CAN 网络协议芯片和物理层芯片已经相当的普及。由于应用场合的不同,应用层的协议则是百家争鸣, 其中应用于工业现场的主要有DeviceNet ,CANopen 等,应用于卡车和客车的协议主要有SAE J1939[1] 。但是, 应用于轿车的应用层协议则没有统一的标准,这是因为各个厂家的轿车的应用层协议是多年积累的结果,作为保密协议不对外公开。这也是最近几年我国轿车产业在CAN 总线应用方面比较滞后的原因。本文主要研究了轿车CAN 车身网络应用层协议中的基础核心,基于OSEKΠVDX 的网络管理,并给出了关键的设计方法。
本文引用地址:http://www.amcfsurvey.com/article/197012.htm2 网络管理基础
2. 1 OSEKΠVDX 介绍
CAN 协议的错误处理能力以及物理层的抗EMC 等特性保证了CAN 节点的相对可靠性。但是对于CAN
网络来说,单个节点的可靠性不能代表整个网络的可靠性。为了保证整个CAN 网络的可靠性,必须存在网络管理功能,通过网络管理保证各个节点的协调工作,并监督网络其他节点的运行状态或错误区别情况。汽车CAN 网络管理的主要参考标准是OSEKΠVDX 。
OSEKΠVDX 是用于分布式实时结构的一组标准,由欧洲汽车制造商和供应商的一个社团与德国Karlsruhe 大学共同开发。它包含4 个标准:操作系统(OS) 、通信(COM) 、网络管理(NM) 和OSEK 实现语言(OIL) 。OSEKΠ的许多电子控制单元(ECU) 。在不同的设计中,可以重用编码和专业技术,而且使用通用接口标准,可以在工业生产方面实现明显的节约。其中符合OSKEΠVDX 的操作系统在国内已有研究,但是对网络管理还没有相关的文章报道。本文主要研究以CAN 网络为基础的车身网络间接管理方法,并提出具体的实现方式。
2 2. 2 CAN 总线网络帧的传输模式根据触发条件的不同,在车身CAN 网络中可以分为事件型、周期型、混合型3 种传输模式[3] 。
2 2. 2. 1 事件型传输模式
随着类型或数据的转变而及时发送的消息。此类型消息的好处是极少占用总线资源,但是可能会存在漏发等情况。这种消息类似于网络的中断,用于故障诊断的帧可以是事件型的。
2. 2. 2 周期型传输模式
以某个时间为周期,循环发送的消息类型。此类型的消息要求的时间精度一般小于10 %, 可以尽可能的保证消息的可靠性,如果周期过短,可能会使总线的负载过大,影响网络的质量。在设计网络中,可以遵守如下的基本规则:如果帧的ID 号越小,它的优先级高,那么它的周期可以越小。用于监督网络状态的帧可以是周期型的。
2. 2. 3 混合型传输模式
即事件型与周期型混合类型的帧。事件型消息发送实时变化的帧,周期性的发送保证了消息的完备性。如用于监控外部设备的帧,如果帧中的参数没有变化,将周期性的发送,如果帧中的参数发生了变化,将会以事件发送此帧,然后重新计时,以周期型发送。
三种传输模式的分类,使CAN 网络中的帧的类型更加清晰,有利于制定应用层协议和网络管理规则。
3 网络管理方式
3. 1 OSEKΠVDX NM 研究
由于汽车的运行环境比较恶劣,安全性要求又非常的高,所以对于通讯网络要求非常严格。OSEKΠVDX 网络管理的主要任务就是保证ECU 之间互相通信网络的安全性和可靠性[2] 。由于每个网络的结构和特性要求不同,所以网络管理的实现方式也不同。
OSEKΠVDX 提供了两种网络管理机制直接监控与间接监控。直接监控是利用标记的通讯机制进行直接监控,网络中的每一个节点被其他节点所监控,所以每一个被控节点会发出一个特定的统一的网络关系消息。直接监控通过一个逻辑环来实现网络监控信息的同步。在这个环上每个节点有一个地址,通过独立于网络协议的专用单向网络管理通讯,可以检测到网络上每个节点的状态。直接网络管理方式可靠性高,但是需要更多的时间,并且增加了网络负载和CPU 的负载。
间接网络管理是以监督ECU 节点的周期型信息帧为基础。也就是说,一个节点发出的一个周期性的帧被一个或多个节点接收,接收节点通过监督这个周期性的帧完成间接网络管理。间接网络管理节点状态类型分类描述常用于中央控制型网络,有一个功能强大的网关发送状态非无声的(not mute) 可以传送特定的消息帧作为网络管理的主ECU ,其他节点ECU 被网关无声的(mute) 传送某特定的信息帧超时监控。每个节点ECU 必须要发送特定的周期性接受状态存在的(present) 特定消息帧可以被接受的帧来实现被监督。一个网络节点存在两种状消失的(absent) 态:接受状态或者发送状态,如表1 所示。
3. 2 CAN 车身网络状态管理
为了实现车身网络的低功耗,网关系统会协调控制,在这个状态只能接受外部唤醒帧,或内部唤醒帧等,不能接收功能信息帧[4] 。
图1 所示为4 种网络状态的转换图。箭头方向为ECU 状态转换的方向,ECU 初始状态进入休眠状态,如果有网关的唤醒命令,那么ECU 进入唤醒状态,如果在唤醒状态收到网关的正常状态的命令,那么ECU 进入正常的状态。其他状态转换类似[5] 。
4 网络管理的设计方法
图1 网络状态转换
网络节点ECU 通过C MUTE 和C ABSENT 计数器来确定节点是不是达到了MUTE 或ABSENT。当计数器达到255 时,节点就出现了故障。故障的出现或消失, ECU 通过事件类型帧的方式发送故障帧到网关。故障帧设计实例如表2 所示。
帧的ID 为0x499 ,DLC 为8 。其中第1 个字节表明故障是出现还是消失,第2 ,3 两个字节表明了故障代码,第4 个字节表明了故障后是否需要功能降级。第5 到8 个字节表明故障的其他情况。C MUTE 和C ABSENT 的计数加减规则是通过监督不同周期型的帧来完成的。对于C MUTE ,如果ECU 没有成功发送一帧数据,那么C MUTE 加数直到255 ,故障确认。如果ECU 成功的发送一帧数据,那么C MUTE 减数直到0,故障消失。同理,对于C ABSENT ,如果ECU 没有成功接收一帧数据,那么C ABSENT 加数直到255 ,故障确认。如果ECU 成功接收一帧数据,那么C ABSENT 减数直到0,故障消失。在实际例子中,对于周期为200ms 的帧,如果3 帧数据没有发送成功或接收成功,增量为77 , 减量为26 。对于周期为100ms 的帧,如果3 帧数据没有发送成功或接收成功,增量为39 , 减量为13 。所以,如果使用这样网络管理方式,每个ECU 必须有一个100ms 或200ms 周期发送的帧。C MUTE 和C ABSENT 的故障类型可以根据具体情况自己定义。图2 所示为节点K的C-ABSENT 计数规则,分别表示了节点K的技术规则,节点K的缺失或存在状态与计数器之间的关系以及节点K的扩展状态。
图2 节点K的C ABSENT 计数规则
实现网络管理的另一个帧是监督帧。监督帧是一个周期性的帧,ECU 按照周期发送监督帧到网关。主要内容包括ECU 的CAN 总线的物理错误(如果是低速容错CAN) , ECU 单元是否ABSENT,ECU 单元是否MUTE ,ECU 单元的BUSOFF 次数以及ECU 单元的发送超时错误的次数[6] 。通过这些参数,网关会了解到当前ECU 的运行情况。如果出现错误情况,网关会将这些错误记录到EEPROM 中,这样有利于维修人员通过诊断工具进行后期诊断,并且能够判断出在行车时不易跟踪的随机出现的故障。
5 小结
随着中国技术实力的不断提高和国家政策的调整,中国的汽车企业将不再只重视市场,正在逐渐将重点放在了核心技术的突破上。本文的支撑项目就是在这个大背景下实施的。基于CAN 网络的网络管理方法和网络状态管理已经在某车型得到了应用,运行良好,证明了方法的可行性与可靠性。
评论