曾 根,吕建国,胡建军,冯 亮,李 芍
(中国北方车辆研究所,北京100072)
随着车辆电子信息系统电子化程度日益提高,对车内总线网络通信技术也提出了更高要求.FlexRay总线在实时性、传输速率、可靠性等方面有一定优势,使其能够满足目前车辆对安全性和可靠性等方面的需求,故对FlexRay总线技术的研究是车辆电子通信技术发展的新趋势[1].
形式不同的车辆电子信息系统对于FlexRay总线应用的方式有所不同,它与车辆电子信息系统的架构形式紧密相关.从信息系统架构发展来看,车辆综合电子信息系统架构由分立式、混合式、联合式向综合化以及高度综合化的阶段发展[2].
在混合式以及分立式车辆电子信息系统中,FlexRay总线通信的实现一般是通过节点自带的FlexRay协议以单片机为核心,实现通信功能的[3].
总线与以太网等通信技术联合应用,使得车辆电子信息系统架构向高度综合化趋势发展[4].采用中央核心处理机作为整车信息集成处理、综合显示的中心,总线连接各信息采集单元、执行机构与中央处理机.这种架构对于部署在中央处理机中的软件的可维护性和可靠性要求较高,而软件构件化技术可较好地解决这个问题.对于各软件构件,最重要的是实现通信信息的采集处理以及其易配置、易维护的功能.
为了能更好地满足现代信息系统架构对FlexRay总线使用的需求,提出一种基于配置解析的FlexRay通信方法,目的是解决在软件构件化开发的平台下,中央处理嵌入式系统与各采集和执行系统之间的数据通信问题.
目前车辆电子信息系统采用综合化架构形式,如图1所示.中央核心处理机是信息集成的中心,所有车辆信息由各个采集单元通过FlexRay总线上传至中央核心机.中央核心机与显控终端之间采用以太网方式通讯,这种架构实现了信息统一管理、统一部署、集成显示等功能.
在综合化的电子信息系统架构下,对软件的可靠性和可维护性要求更加严格,采用软件构件化的开发方法,中央核心处理机中的各软件为独立的软件构件,这样可以提高开发效率,降低软件间的耦合性,进而提高软件的可靠性和可维护性.中央核心处理机的软件架构如图2所示.在嵌入式操作系统下,通过中央核心处理机支撑中间件平台,每个功能软件构件只需关注自身功能的实现.这种架构下,每个软件构件关注的是通信信息,为了满足嵌入式系统中众多软件构件对FlexRay总线信息获取的需求,就需要将一些通信策略和方法在支撑中间件平台中实现.
图2 中央核心处理机系统架构
为了更好地实现信息的可传输、可维护、可配置,将各系统上传的总线信息配置为易解析易存储交换的XML格式文件.根据总线上发送的参数将具体帧、位所对应的信息解析成核心机中各功能软件构件所能处理的全局信息变量,总线上发送数据也采用同样的方式,这样就可以保证软件构件功能的独立性,提高开发效率,系统的可维护性也大大增强.
XML(Extensible Markup Language,可扩展标记语言),是一种数据存储语言,是为了对信息进行自我描述而设计的一种语言(由W3C制定)[5].该语言使用简单的标记来描述数据,这些标记可以很方便地建立.随着XML及其相关技术应用的发展,XML逐渐成为了数据交换的一种标准,是一种信息交换的格式,此格式是灵活配置、可编辑、易解析的,并且可表示为任何类型的结构或半结构化信息[6].本研究决定用XML格式文件来配置总线的参数信息,从而实现与中央核心处理机中各采集、执行系统软件构件之间的信息交互.
根据第1章的分析,总线解析机制需要XML文件和总线解析软件.XML文件中需要对总线参数对应的信息进行数据存储和声明,中央处理机向各个系统中发送的信息也必须在格式文件中有所定义.
FlexRay总线是一种具有高带宽、确定性强和可靠性好的通信协议,由静态段、动态段、符号窗和网络空闲时间构成,静态段的节点一旦确定就固定不变[7].在实际运用中,为了能够提高总线信息的可配置程度,采用静态段进行数据传输.
对总线信息传输周期的需求进行统计,可归类为5 ms、10 ms、20 ms、80 ms及大于80 ms的数据,信息量最大周期为320 ms,取最小发送周期5 ms为总线周期,如图3所示.FlexRay总线通信以5 ms为一个通信周期,其中静态段由64个时间片构成,占3.2 ms;动态段的最小时间占1.6 ms,留有空闲时间余量.网络中各节点以时间片为单位分时利用总线网络传递数据,在每一个时间片内,根据时隙ID对每一帧的数据进行传输,每一帧可传输32 字节数据[8].
图3 FlexRay总线参数拆分
由上述分析可知,FlexRay总线传输的信息参数是可配置的,只需要知道车辆各个系统对信息传输周期即可.在实际运用中,信息最小发送周期5 ms为总线周期,这样周期为80 ms的节点对应的循环间隔可以量化为具体数值0、16、32、48,依此类推,可以配置每一个节点的帧值.周期确定之后,根据ID号就能知道该周期内每一帧数据代表的名称,里面包括的32字节数据也能够得到对应,这样总线节点上的每一个数据信息就能够确定下来.
配置总线参数XML文件时,使用帧名(slot name)对节点对应的帧进行命名,比如,传动节点可以定义为FR_CD_1.除最小周期5 ms的数据节点外,其他节点周期都有一定的循环间隔.根据配置好的节点调度表,可以引入3个变量filter(过滤码)、fmask(间隔值)、fval(起点值)对循环间隔cycle进行标识.filter为0表示周期为5 ms,为1表示周期不为5 ms;fmask的值乘以5 ms即为该节点的周期,所以若filter的值为0,则famsk的值肯定为0;fval表示节点周期的起始点.随后再分配slotid号,这样就实现了FlexRay参数的配置.具体配置文件如下:
总线解析软件根据XML配置文件完成总线数据的解析,得到各信息编码对应的数值,各个构件订阅所需要的信息编码可获取相应的数据.
总线解析软件设计流程如图4所示.
图4 总线解析软件流程图
首先检测接收到的slotid是否有效.如果无效,等待下一个周期接收到的数据;如果有效则进行解析.通过XML文件接口在DPDrv目录下判断是Sx还是Rx,因为同一个slotid可能为不同的收发帧.根据总线数据的各个参数值(filter、fmask、fval)确定具体收发帧的slot name.程序在DPApp中进行索引,找到相应的slot name,最后,按照起始位<S>和数据长度<L>确定具体的信息,将信息值与<I>中显示的信息编码对应起来.试例中对应的信息就是:“坐标位置”对应的信息编码为0x03000000,它属于发送帧;“风扇转速”对应的信息编码为0x04000000,它属于接收帧.
总线信息解析完毕后,中央核心处理机中的软件构件就可以通过订阅接收这些信息编码,来完成数据的获取.
在VxWorks操作系统环境下,利用FlexRay总线仿真工具对总线数据进行仿真,处理机中的总线解析软件通过接收到的数据进行数据解析,各个软件构件对于想要获取的总线信息直接通过信息编码获取,在此我们以综合信息显示软件构件为例进行验证,其他软件构件实现方法和显示软件构件方法一样,就不再赘述.
总线发送的风扇转速的十六进制编码为14H,通过总线解析软件解析后,信息编码0x04000000的值为14H,综合信息显示构件对该值进行标定,具体过程如下:定义变量SPEED,将0x04000000的值赋给SPEED,利用公式SPEED=SPEED×100,完成标定,并将这个值显示出来 (如图5所示),风扇转速值为2 000 r/min,系统得到了很好的实现.
图5 实验室仿真仪表盘
为了解决车辆总线与中央核心处理机中各个软件构件进行数据通信交流的问题,提出了基于XML文件配置的总线解析技术.通过实验室仿真案例的应用,表明该方法正确,能够很好地解决这个问题.该方法使得每个软件构件只关注自身逻辑的实现,忽略总线协议层,大大提高了软件的开发效率,软件的可维护性也得到了极大的增强,具有较高的工程应用价值.
[1]Jackman S R.An Introduction to FlexRay as an Industrial Network[C].//Proc.of IEEE International Symposium on Industrial Electronics.2008:1849-1854.
[2]彭真明,朱宗平,绕劲松,等.新型车辆综合电子系统发展设想[J].车辆与动力技术,2010,(1):1-5.
[3]谢轶群,李仁发,王 蓉.基于车用FlexRay网络的应用原型系统 [J].计算机工程,2011,(23):229-231.
[4]陈正捷,陈志昊,张浅秋,等.装甲车辆电子综合化[M].北京:兵器工业出版社,2006.
[5]于莉莉,曹耀钦,幕晓冬,等.CORBA与XML的集成在指挥自动化系统中的应用 [J].计算机应用,2004,(24):194-195.
[6]Christophides V,Cluet S,Simeon J.ON Wrapping Query Languages and Efficient XML Integration[C].//Proceedings of ACM Conference on Management of Data,2000:141-152.
[7]李 佳,田光宇,钮 翔,等.FLEXRAY网络通信延迟时间分析[J].清华大学学报,2007,(8):1343-1346.
[8]陈 涛,秦贵和.FlexRay时钟同步分析 [J].计算机工程,2010,36(14):235-237.