FlexRay车载网络管理数据调度的研究
2011-07-26姚江云吴方圆
姚江云 孔 峰 吴方圆
(广西工学院电子信息与控制工程系,广西 柳州 545006)
0 引言
随着汽车电子技术的发展,车用电子设备在整车中所占的比重越来越大,电子设备的增加势必使得车内通信网络的复杂程度也相应增加,并且对信息传输的实时性和可靠性提出了更高的要求。车载网络是一个复杂的通信系统,网络管理的目的就是保障整个网络的稳定可靠运行,其管理性能的好坏关系到整车的总体性能。
CAN网络的网络管理协议大部分是基于德国的汽车电子类开放系统和对应接口标准OSEK NM所设计的[1-2]。而 FlexRay作为新一代总线,在网络管理这一方面还没有标准规范[3],文献[3]将OSEK NM的管理规范引入到FlexRay网络管理中,并作了相关方面的初步研究。自动开放系统架构(automotive open system architecture,AUTOSAR)目前受到国外汽车行业的热烈关注,国内在这方面的研究刚刚起步。本文研究基于此架构的FlexRay车载网络管理,对网络管理协议的制定具有一定的意义。
1 FlexRay简介
1.1 通信机制
FlexRay总线是依靠通信周期传输信息的,每个通信周期包括静态段、动态段、符号标志窗口和空闲时间[4]。静态段采用时分多址(time division multiple access,TDMA)的通信方式。TDMA将通信时间分为若干个相等的时槽,即静态时槽,各个时槽在规定的时刻发送与自己ID对应的帧,实现了数据传输的确定性。动态段采用灵活的时分多址(flexible time division multiple access,FTDMA)通信方式。FTDMA将通信时间分为若干个小时槽,即微时槽,不同数据帧在与自己ID对应的微时槽内开始发送,但整个动态时槽的时长是不确定的,它由所发送帧的长度确定。
1.2 FlexRay数据帧
FlexRay数据帧包括帧头、负载段和帧尾[5]。帧头占5 B,其中R为保留位,P(payment preamble indicator)为负载段指示位,N为空帧指示位,第一个S为同步帧指示位,第二个S为起始帧指示位。负载段指示位P在网络管理中起着重要的作用。当P=1时,对于负载静态段,表示开始部分有可选的网络管理向量,而对于动态段,表示开始部分有信息ID;当P=0时,负载静态段开始部分没有网络管理向量,动态段开始部分没有信息ID。帧ID用于识别该数据帧的优先级,负载段长度表示一帧中能传输的字数,帧头CRC用于校验传输中的错误,周期计数器用来对通信周期进行计数。负载段占0~254 B,包括静态段和动态段,主要用来传输数据。当该帧以静态段传输时,可将负载部分的0~12 B设为网络管理向量;当该帧以动态段传输时,可将0~1 B设为信息ID。帧尾为3 B的CRC,用来对帧头、负载段的信息进行校验。P=1时的FlexRay数据帧如图1所示。
图1 FlexRay数据帧结构Fig.1 Structure of FlexRay data frame
2 网络管理规范的选择
OSEK提供了直接网络管理和间接网络管理两种机制[6-7]。由于间接网络管理具有很大的局限性,它一般用于车身网络的管理,基于OSEK Direct NM的FlexRay网络管理已有初步研究。AUTOSAR NM规范是由AUTOSAR组织规定的。尽管OSEK NM与AUTOSAR NM最终网络管理的目的是相同的,但在管理规范上却有很大的不同,具体内容如表1所示。由表1可知,AUTOSAR NM更适合用于时间触发的FlexRay车载网络管理。
表1 OSEK NM与AUTOSAR NM规范对比Tab.1 Inter-comparison of specifications of OSEK NM and AUTOSAR NM
3 基于AUTOSAR NM的FlexRay网络管理
3.1 网络管理算法
AUTOSAR NM包括三种操作模式:休眠模式、同步模式和正常工作模式[8]。它采用分布式直接网络管理机制,每个节点可独立进行网络管理行为,状态转换基于自身的网络请求和接收到的网络管理消息。节点接收到周期发送的网络管理消息,即表明发送节点试图保持网络唤醒状态;若节点准备进入休眠状态,则停止发送网络管理消息,但只要接收到其他节点发送的网络管理消息,就推后进入休眠模式;若节点在预定的时间内接收不到网络管理消息,就进入休眠状态。只要有一个节点需要通信,则所有节点必须保持唤醒状态;若网络中的任意节点需要总线通信,则发送网络管理消息,将网络从总线休眠状态唤醒。
3.2 NMPDU 格式
AUTOSAR把网络管理消息定义为网络管理协议数据单元(network management protocol data unit,NMPDU),它主要包括 NM-Vote PDU 和 NM-Data PDU[9-10],其格式如图2所示。
图2 NMPDU格式Fig.2 NMPDU format
FlexRay NM支持NM-Vote和NM-Data的单独发送,也允许NM-Vote和NM-Data结合成完整的NMPDU进行发送,其灵活性设计主要是针对FlexRay总线协议制定的,为网络管理信息的调度带来很大便利。
图2(a)中NA(not available)表示NA位不可用。当NM-Vote PDU与NM-Data PDU在静态段一起发送时,此位留给NM-Data PDU中的Control Bit Vector用。Vote是一个模式转换位,1表示保持唤醒状态,0表示反对保持唤醒状态(请求休眠)。图2(b)中NA也表示NA位不可用,当NM-Data PDU与NM-Vote PDU在静态段一起发送时,此位留给NM-Vote使用。R(reserve)保留位,为以后系统的扩展使用。RptMsgReq(repeat message request)为消息重发请求位,1表示请求重发,0表示不允许重发。完整的FlexRay NMPD应该由控制域和数据域组成,即NM-Data PDU与NMVote PDU结合。
由以上分析可知,NM-Data PDU与NM-Vote PDU的结合实际上就是NM-Vote与NM-Data中控制位向量(control bit vector,CBV)相结合。结合后的完整NMPDU格式与NM-Data PDU格式相近,只是将Byte0的第七位NA换成Vote位。结合过程及结果如图3所示。图3是以加法形式表示的,“+”表示相加,“——”表示等于。图中只给出了Byte0的结合,其他字节不变。
图3 NM-Vote与CBV的结合示意图Fig.3 Combination of NM-Vote and CBV
4 NMPDU的调度
4.1 调度方法的分类
FlexRay总线不支持事件触发的不确定性报文,NMPDU必须通过周期性报文在确定的时间发送。在实际应用中,不必在每个时槽中都添加网络管理的内容。因此,网络管理周期设为FlexRay通信周期的整数倍,每个节点在一个网络管理周期内发送一次NM PDU。因为一个动时槽的ID可以分配给多个节点,所以不同节点的NMPDU可以通过设定相同的帧ID,不同的周期计数值在多个通信周期的相同动态时槽发送,提高了宽带利用率。因此,不仅静态段可以用来发送NMPDU,动态段也可以用来发送。由于NMPDU格式和发送机制的灵活性,可以组合出NMPDU的多种调度方法,主要有以下五种:①NM-Vote与NM-Data结合,在静态段发送;②NM-Vote与CBV结合在静态段发送,NM-Data在动态段发送;③NM-Vote与NM-Data结合,在动态段发送;④ NM-Vote与NM-Data分别在动态段发送;⑤NM-Vote在静态段发送,NM-Data在动态段发送。
4.2 调度方法的应用
在进行NMPDU的调度设计时,既要考虑对宽带的有效利用,兼顾其硬件资源,又要尽量避免硬件资源的浪费而用软件去代替。FlexRay协议规定了负载段可选变量由数据链路层实现自动读写服务,由FlexRay通信控制器实现该功能。如使用静态帧的网络管理向量发送NMPDU,节点可通过读取网络管理向量寄存器,快速识别多个节点的网络请求,提高网络管理信息的更新速率。
本研究采用NMPDU长度来确定每种调度方法的应用。由于FlexRay协议规定网络管理向量的长度为0~12 B,且要求同一集群内所有节点配置为相同长度,因此,如果NMPDU的长度较短,可利用网络管理向量同应用报文合并在一起发送(调度方法①),避免宽带的浪费。如果NMPDU的长度较长但没有超出网络管理向量的范围,应采用将网络管理向量与CBV的结合在静态段与应用报文一起发送,NM-Data在动态段发送(调度方法②)。如果NMPDU的长度超出网络管理向量的范围,可用专门的动态帧发送NMPDU(调度方法③)。为保证周期性传输,将帧ID设为最小值1。
由于NMPDU最终要通过FlexRay总线传输,所以NMPDU必须映射成FlexRay总线数据帧格式。这部分工作主要由数据链路层完成,最后经发送器发出,图4给出了两个映射后的标准帧格式。
图4 NMPDU映射后的格式Fig.4 The format of NMPDU mapped
4.3 动态调度策略的设计
车载网络是一种动态网络,它所管理的节点无论从数量上还是状态上都是实时变化的,本文提出一种NMPDU动态调度方法来进行动态网络管理。NMPDU的长度是由网络中节点数量和节点状态转换的频率决定的,当FlexRay总线上工作的节点较少时,网络管理事件比较单一,NMPDU就比较短;当网络中启动的节点增多时,网络管理事件就比较复杂,这时需要的NMPDU长度就会增加。如果整个过程中用定长的NMPDU,则须兼顾二者,就可能达不到良好的效果或至少造成资源的浪费。
本设计选择网络负载作为NMPDU长度的衡量指标,对NMPDU进行动态调度,因为从网络负载的高低大致可以判断网络中工作节点的多少。首先选用网络负载一级监测函数(FrNm-Network Load1),将网络负载大致分为高、低两个级别,并设置一个阈值加以区别。当网络负载低于阈值时,FrNm-Network Load1为0,此时NMPDU较短,利用网络管理向量同应用报文合并在一起在静态段发送;当网络负载高于阈值时,FrNm-Network Load1为1,此时需要进行二级判别,选用网络负载二级监测函数(FrNm-Network Load2)。当FrNm-Network Load2=0时,NMPDU较长但没有超出NM-Vector的范围,将NM-Vote与CBV的结合在静态段与应用报文一起发送,NM-Data在动态段发送;当FrNm-Network Load2=1时,NMPDU应配置为动态帧。具体调度算法流程如图5所示。
图5 NMPDU动态调度算法流程图Fig.5 Flowchart of NMPDU dynamic scheduling algorithm
5 结束语
车载网络管理不仅要具有基本网络管理功能,还应与其总线协议和通信方式相适应,以降低网络管理的复杂度、减少资源占用率。就其基本规范而言,基于AUTOSAR NM的FlexRay网络管理具有如下优势:①NMPDU通过周期性报文发送,不需要建立逻辑环;②兼顾了FlexRay的两种通信方式,灵活地使用了静态段和动态段;③合理应用了静态帧的网络管理向量的优势,避免了资源的浪费。在此基础上,应用本文所研究的基于AUSTOR NM动态调度策略来对NMPDU进行灵活调度,解决了由于网络负载动态变化,而网络管理协议数据单一化而带来的不足,为良好的网络管理协议的进一步制定和应用奠定了基础。
[1]蒋建春,张慧.基于OSEK标准任务调度算法的改进[J].计算机工程,2009,35(20):228 -230.
[2]宋君花,王俊席,冒晓建,等.OSEK/VDX的混合动力汽车实时操作系统[J].农业机械学报,2008,39(6):21 -24.
[3]陈觉晓,袁昊昀,罗峰,等.基于OSEK NM的FlexRay网络管理协议数据的定义[J].机电一体化,2009(2):70-72.
[4]Duan J M,Zhu L,Yu Y C.Research on FlexRay communication of steering-by-wire system[C]∥Intelligent Vehicles Symposium,IEEE 2009:824-828.
[5]Ece G,Schmidt K.Message scheduling for the static segment of the FlexRay protocol[C]∥ Signal Processing,Communication and Application Conference,2008:1 -4.
[6]阴晓峰,刘武东.汽车电子系统软件开发新标准AUTOSAR[J].西华大学学报:自然科学版,2010,29(2):102-106.
[7]Long R S,Li H,Peng W.An approach to optimize Intra-ECU communication based on mapping of AUTOSAR runnable entities[C]//International Conferences on Embedded Software and Systems,2009:138-143.
[8]鲍威.基于AUTOSAR标准的ECU配置工具[D].杭州:浙江大学,2010.
[9]AUTOSAR.Specification of FlexRay network management V3.1.0 R3.0 Rev7[EB/OL].[2010 -09 -20].http://www.autosar.org.
[10]AUTOSAR.Specification of FlexRay NM interface V3.1.0 R3.0 Rev7[EB/OL].[2010 -09 -20].http:∥www.autosar.de/down-load/R3.0/AUTOSAR.SWS.FlexrayNM.pdf.