汽车FlexRay总线动态段时长及消息窗口优化
2012-07-19王涛
王 涛
(合肥工业大学 机械与汽车工程学院,合肥 230009)
随着现代汽车电子技术的高速发展,越来越多的电控节点加入了车身控制系统。尤其是线控系统(x-by-wire)的加入,使得基于事件触发的控制器局域网CAN已经不能满足进一步的网络需求[1]。为了满足高实时性和高可靠性的要求,BMW、Daimler-Chrysler、Bosch等公司联合提出了具有高带宽、高速率、高容错能力的 FlexRay通信协议[2]。
FlexRay是基于时分多路的高实时性的总线协议,所以目前对FlexRay的时间性能的研究较多。现有研究对整个通信周期进行优化,分别对静态段和动态段给出算法[3][4];对静态段单独进行研究,给出调度方法,提高静态段的网络利用率,但没有考虑动态段[5];还有对 FlexRay 时钟同步算法进行研究[6]。
本文提出一种动态段时长优化配置方法,以及相关动态消息调度算法。在保证动态段时长设计合理且消息可调度的情况下,提出优化算法对动态消息进行调度,减少消息延时,提高网络利用率,并通过仿真实验验证该方法的正确性和可行性。
1 FlexRay媒体访问控制
在FlexRay协议中,媒体访问控制是以一个重复的通信周期为基础的。在一个通信周期内支持两种媒体访问方案的选择:静态的时分多址(TDMA)方案和基于最小时间片的动态方案。
FlexRay通信周期层分为:静态部分、动态部分、符号窗口以及网络空闲时间四个部分。静态部分采用TDMA方式通信。静态段由若干个静态时间片组成,每个时间片的长度都相等。动态部分则是以基于最小时间片的方式发送。动态段由若干个最小时间片组成,最小时间片的长度都相等,如图1所示。
FlexRay通信周期中主要由静态段和动态段传输消息。静态段一般用于传输确定性的周期性消息,而动态段则用于传输非周期性消息。在通信周期中,对于静态消息,每个节点通过其独特的帧标识符发送消息,系统只允许帧标识符(FID,Frame ID)与当前的时间片计数器值相等的那个节点向总线上发送数据。为保证总线上不会发生消息冲突,帧标识符与节点是一一对应的,也就是每个帧ID只能分配给一个节点。虽然动态消息也是通过其独特的帧标识符发送消息,但是由于动态时间片长度的不确定性,不能根据FID来确定消息发送的实际时间,因此,需要对动态消息进行优化调度,减少时间不确定性所产生的影响。
2 动态段网络利用率计算及时间分析
2.1 FlexRay动态段参数配置
表1定义了FlexRay通信周期的关键参数[7]。
表1 通信周期的部分参数
为了确定以上的动态段参数,需要知道以下的数值:
1) 传输延时(tTx);
2)平均总线利用率(BU)。
传输延时tTx是指从消息数据被放入发送节点的FlexRay硬件缓存区的时刻到消息在接收节点的缓存区完成接收时刻之间的持续时间。BU指的是传输的消息在总线所占时间的百分比。
2.2 动态段长度计算
FlexRay的动态段由一定数目的最小时间片组成,最小时间片的个数由参数gNummberOfMinislots确定,长度则由gdMinislot确定。
FlexRay 总线配置参数(Lcomm,LST,NMS,LMS)作为输入。其中Lcomm表示FlexRay通信周期的长度,LST表示静态段长度,NMS表示动态段最小时间片的个数,LMS表示每一个最小时间片的长度。动态段的长度为:
整个通信集群中保持静态段长度LST不变,优化动态段时长,而此时通信周期的长度Lcomm也将发生变化。
2.3 动态段网络利用率的计算
2.3.1时间片计算
FlexRay帧由5个字节的帧头,0~254个字节的负载段及3个字节的CRC校验组成。FlexRay动态消息帧在物理层传输时还需使用更多的空间,其包括传输起始序列(3~15 位)、帧起始序列(1 位)、字节起始序列(2位)、帧结束序列(2位)、通讯空闲分隔符(11位)、触发点偏移量和动态尾部序列DTS。动态尾部序列时间值是变化的,其值可以是2 gdBit和gdMinislot+2 gdBit之间的任意值,由动态消息的长度确定。
FlexRay通信周期的时间单位为Macrotick(MT),因此可得动态消息为k个字的时间片长度Tj为:
其中,TAPO是指最小时间片触发点偏移量(gdMinislotActionPointOffset),位于动态消息帧传输之前;gdBit为每一位的时间间隔。
2.3.2动态段平均总线利用率的计算
BU指的是传输的消息在总线所占时间的百分比。假设当前系统中动态消息的总数为n,则动态段平均总线利用率BU计算公式为:
通过上述计算公式,可得到动态段网络利用率与 Tj、LDYN之间的关系。
2.4 动态段时间分析
FlexRay动态帧(DYN)传输有固定的优先级,并且没有抢占:传输是根据已经准备好的帧的ID(优先顺序)顺序发送的。如果一个消息帧已经就绪(时间片已过)但是同时另一个具有低优先级的消息帧正在传输,它不能抢占低优先级帧的时间片并且只能等到下一个周期传输。
因此,首先需要知道动态消息最坏情况下的响应时间,即传输延时tTx是:
在公式(4)中,m表示任意的DYN消息;cm(t)为消息传输时间,即 cm(t)=消息长度/总线速率;传输延时是当前周期所能产生的最长延时,由于消息在发送时隙过后才准备好而在应该发送的周期中产生的延迟,如图2所示,主机分配消息B在第一周期的第二个时间片发送,但消息B在第二个时间片刚过时产生,所以消息B需要在下个周期开始前等待一段为 σm(t)的时间。 延时 cm(t)为在给定的时间间隔t中,由于发送更静态消息和高优先级的消息而产生的最坏延时[8]。
3 时长设计及消息调度算法
3.1 系统建模
FlexRay通信系统包含FlexRay总线、m个节点。并且每个节点都由主机CPU、通信控制器(CC)和控制器主机接口(CHI)组成,如图 3 所示[9]。
为了建立FlexRay动态段的时长设计和动态消息调度算法模型,需要做如下假设:1)所有消息都是非周期性消息,且相互独立;2)所有的消息都是固定长度的,且长度、优先级等参数都已知;3)忽略由通讯驱动器产生的延迟和抖动。
3.2 动态段长度优化
在一个通信集群(cluster)中,动态段的长度是一定的。如表2所示,假设所有的动态消息均为非周期性消息,消息的长度已知。当消息产生后,节点会根据本节点分配的帧ID给每个消息分配帧ID及优先级,然后消息进入缓存区等待发送。在消息长度已知的情况下,动态段的长度、帧ID以及优先级的分配决定着动态段消息的响应时间以及动态段的网络利用率。
如果认为所有消息的固定长度为S,那么一个较短的总线周期意味着将有较少的消息在本周期发送;必然需要多个这样的总线周期来传输总长度为S的动态消息。较长的总线周期意味着更多的消息可以在同一个周期中传输。但是,过长的动态段长度也意味着优先级低的消息在当前周期中发送时有可能超过消息的最坏响应时间。所以周期长度也不是越长越好。
表2 动态消息参数值
假设动态消息集群中所有动态消息长度已知,根据系统配置在动态消息的长度筛选出n条最长的消息作为动态段的时长,放大动态段的长度。如表2所示消息集群,除消息m6之外,任意两个消息之和均大于动态段长度之和12,所以每个周期动态段只能传输一个消息,而且帧ID靠后的消息的响应时间变长,整个周期需要较多的周期个数。
3.3 消息分配算法
对动态段长度进行优化以后,需要对动态消息进行分配调度。定义以下消息分配规则:1)每个动态消息都有唯一的帧ID;2)消息长度较长的消息分配较小的帧ID。
根据算法规则和要求,建立以下优化模型:本算法以动态段最小网络带宽为目标,即达到最大网络利用Umax,其公式为:
其中,动态段网络利用率的计算方法根据公式(3),计算过程中需要考虑消息所有传输动态段消息的动态段的平均网络利用率。并且考虑最大网络利用率的同时,根据前面规定的优先级分配原则,考虑消息的响应时间要达到最佳。根据公式(4)计算所有动态消息的最小响应时间:
分配算法以上述的数学模型为基础,结合公式(5)和公式(6),依据分配的规则不断的计算比较以获得动态段网络利用率的最大值。
系统的消息分配规则必须保证每个动态消息在消息截止期结束前传输完。在网络初始化完成之后,重复执行算法分配过程,在获得最大网络利用率Umax的同时,保证总体响应时间τmin最小。
4 仿真实验分析
为了验证提出的动态段时长优化配置方法和动态消息调度算法,需对一组实际的数据进行应用测试,具体参数已在表2中给出。其中消息长度为n个minislot的长度。采用CANoe和DaVinci Network Designer平台基础,虚拟节点与真实节点相结合共同搭建实验系统,对FlexRay的通信进行测试,并对算法进行验证。
为了对动态段消息分配方法性能评估,设计带有3个节点的总线型拓扑的FlexRay网络,每个节点有2个事件触发的非周期性消息。采用动态段的网络利用率BU来衡量动态段配置算法的优化作用。
在表2所示的动态消息的长度和通信周期的长度中,除去消息m1和m6或m4和m6的组合外,每个动态段只能传输一个消息。根据提出的动态段设计方法,重新配置动态段长度为17。之后按照动态消息分配规则分配帧ID,并计算总体响应时间,得到消息的最优调度方案,如表3所示。
表3 动态消息最优调度方案
优化后的消息发送情况如图4所示,动态段的长度在优化后重新配置为17个minislot的长度,使得通信周期在一个动态段中能够传输更多的消息。该分配方法把3个节点的消息在3个周期能完成传输,并保证了最小的响应时间。并且系统的周期数也由原来的5个减少为3个周期。
对于不同的总线速率,使用该动态段设计和动态消息分配算法所得到的网络利用率的结果,如表4所示。对同一组动态消息,在不同的总线速率下,该优化方法都能够有效的提高网络利用率。
表4 网络利用率对照表
5 结束语
本文在FlexRay媒体访问控制的基础上,针对FlexRay动态消息在动态段传输的特点,研究了消息响应时间和动态网络利用率的计算方法,提出了动态段时长优化配置方法及动态消息调度算法和流程,并基于仿真系统进行是验证。验证结果表明,该方法能有效的提高网络利用率,减少网络带宽。
[1]Klaus Schmidt,Ece G.Schmidt.Schedulability Analysis and Message Schedule Computation for the Dynamic Segment of FlexRay [C].Vehicular Technology Conference Fall,2010:1-5.
[2]Sri Kanajan,Jeffrey Abell.Sensitivity Analysis on Flexray Dynamic Segment Design Parameters [C].Systems and Networks Communications,2009:12-18.
[3]Traian Pop, Paul Pop, Petru Eles, et al.Bus Access Optimisation for FlexRay-based Distributed Embedded Systems,Design, Automation&Test in Europe Conference&Exhibition[C].2007:1-6.
[4]赵睿,秦贵,范铁虎.FlexRay通信协议的总线周期优化[J].计算机应用研究,2010,27(10):3847-3850.
[5]Minkoo Kang, Kiejin Park, Bongjun Kim.A Static Message Scheduling Algorithm for Reducing FlexRay Network Utilization [J].IEEE International Symposium on Industrial Electronics,2009:1287-1291.
[6]Jan Sobotka, Jirí Novák, Jan Malinsk?.Analytic Model of FlexRay Synchronization Mechanism [C],Technology and Applications,2011:969-974.
[7]FlexRay Consortium.FlexRay Communications System Protocol Specfication Version2.1,December2005.Version 2.1 Revision A.
[8]顾嫣,张凤登.FlexRay动态段优化调度算法研究[J],自动化仪表学报,2009,30(12):25-29.
[9]Bongjun Kim, Kiejin Park,Probabilistic Delay Model of Dynamic Message Frame in FlexRay Protocol[C], Consumer Electronics,2009:77-82.