MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); function MyAutoRun() {    var topp=$(window).height()/2; if($(window).height()>450){ jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); }  }    window.onload=MyAutoRun; $(window).resize(function(){ var bodyw=$win.width(); var _leftPaneInner_width = jQuery(".rich_html_content #leftPaneInner").width(); var _main_article_body = jQuery(".rich_html_content #main_article_body").width(); var rightw=bodyw-_leftPaneInner_width-_main_article_body-25;   var topp=$(window).height()/2; if(rightw<0||$(window).height()<455){ $("#nav-article-page").hide(); $(".outline_switch_td").hide(); }else{ $("#nav-article-page").show(); $(".outline_switch_td").show(); var topp=$(window).height()/2; jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); } }); 一种适用于车联网环境的车载CAN信号打包算法
  软件学报  2016, Vol. 27 Issue (9): 2365-2376   PDF    
一种适用于车联网环境的车载CAN信号打包算法
谢勇1,2, 梁伟3, 李仁发4,5, 吴克寿1,2, 洪朝群1,2     
1. 厦门理工学院 计算机与信息工程学院, 福建 厦门 361024 ;
2. 福建省物联网应用技术高校重点实验室(厦门理工学院), 福建 厦门 361024 ;
3. 湖南科技大学 计算机科学与工程学院, 湖南 湘潭 411201 ;
4. 湖南大学 信息科学与工程学院, 湖南 长沙 410082 ;
5. 嵌入式系统与网络计算湖南省重点实验室(湖南大学), 湖南 长沙 410082
摘要: 车联网技术在汽车上的广泛应用促使现代汽车朝着电子化、网络化和集成化的方向快速发展,在车联网技术快速发展的同时,出现了车载CAN网络中数据量骤增以及带宽受限的问题.因此,如何优化带宽利用率成为车联网技术中CAN网络系统设计的关键所在.针对该问题,研究了CAN网络系统设计方面的信号打包问题:首先,依据周期对信号进行分簇和排序;然后,结合提出的两个空闲带宽评价指标,提出了基于信号簇的启发式信号打包算法CSP,以实现带宽利用率的最优化;最后,通过与现有研究成果的对比分析,证明了CSP算法在带宽利用率优化方面最优.与相关算法相比,CSP可实现的带宽利用率的优化率的平均值和最大值的范围分别为[0.5%,6.4%]和[2.4%,22.65%].
关键词: 车联网     汽车电子系统     CAN     信号分簇     信号打包    
Signal Packing Algorithm for In-Vehicle CAN in Internet of Vehicles
XIE Yong1,2, LIANG Wei3, LI Ren-Fa4,5, WU Ke-Shou1,2, HONG Chao-Qun1,2     
1. College of Computer and Information Engineering, Xiamen University of Technology, Xiamen 361024, China ;
2. Key Laboratory in Universities for Applied Technologies of Intenet-of-Things of Fujian Province (Xiamen University of Technology), Xiamen 361024, China ;
3. College of Computer Science and Engineering, Hu’nan University of Science and Technology, Xiangtan 411201, China ;
4. College of Information Science and Engineering, Hu’nan University, Changsha 410082, China ;
5. Key Laboratory for Embedded Systems and Networked Computing of Hunan Province (Hu’nan University), Changsha 410082, China
Foundation item: National Natural Science Foundation of China (61502405, 61300039, 61572188); Research Project Supported by Fujian Educational Bureau (JA15368); Open Research Fund of Hu’nan Provincial Key Laboratory of Network Investigational Technology (2016WLZC020); Research Projects Supported by Xiamen University of Technology (YKJ13024R, XYK201437, YKJ15019R)
Abstract: The application of Internet-of-vehicles technologies in automobiles drives the modern automobiles developing towards electronization, networking and integration. The rapid development of Internet-of-vehicle technologies causes the problem of rapidly increasing data volume and constrained bandwidth for in-vehicle CAN (controller area network) networks. To solve these problems, this research addresses the signal packing problem in the design of CAN network. First, the signal set is divided into signal clusters according to signals’ period. Next, the clusters are sorted in order of increasing period. Then, combined with two presented bandwidth slack evaluation metrics, a signal clustering-based signal packing (CSP) algorithm is proposed to realize the optimization of bandwidth utilization. Finally, by comparing with the state-of-art algorithms, the optimism of CSP in improving the bandwidth utilization is verified. Comparing with the algorithms proposed in reference 7, 8 and 11, the obtained average and maximal optimization ratio in bandwidth utilization for CSP is between[0.5%, 6.4%] and[2.4%, 22.65%], respectively.
Key words: Internet-of-vehicles     automotive electronic system     controller area network     signal clustering     signal packing    

近年来,人们在安全、节能和环保等方面对汽车提出的越来越严苛的要求,使得车联网技术在汽车上得到了广泛应用.但是上述发展趋势造成车载网络系统的复杂性骤增,如一些高档轿车车内网络通信节点ECU (electronic control unit)的个数达70多个,由ECU中的计算任务产生的通信信号的个数多达4 716个[1-3].因此,车载实时网络系统的优化设计,是车联网技术在汽车上得到广泛应用的关键.CAN是在车上应用最为广泛的一种实时网络技术,如宝马7系的中央控制子系统等4个子系统均采用CAN来实现不同ECU之间的通信和协

[2, 4].但是CAN的带宽极其有限,其最大带宽仅为1Mbps(在工业应用中,常采用的CAN的带宽配置为500kbps,256kbps或125kbps).针对该问题,虽然汽车工业界相继提出了另外两种网络协议FlexRay和CAN FD,但是在未来较长一段时间内,CAN仍旧是车内实时网络技术的主角[2].因此,如何对CAN网络系统进行带宽高效的优化设计,是汽车工业界亟待解决的关键问题.

信号打包(signal packing problem,简称SPP)是CAN网络系统设计需解决的首要问题[5],因为仅当ECU中的计算任务产生的通信信号被打包成符合CAN协议的消息之后,才能在网络上进行调度和传输.SPP问题是典型的NP难问题,现有研究一般将其转化为经典的装箱问题,并提出启发式算法来进行求解.如Sandstrom等人[6]先依据Deadline对信号进行排序,然后按照Next Fit Decreasing启发式策略依次将信号插入已有消息之中.当已有消息中的剩余负载空间不够容纳当前信号时,新生成一个空消息来容纳该信号.Saket等人[7]则先按照带宽利用率对信号进行排序,然后交替着对队列中的首信号和尾信号进行处理,以增加周期大小相近的信号打包到同一个消息中的机会,从而实现带宽利用率的优化.Polzlbauer等人[8]提出了一个基于带宽利用率分析的指标来判断是否将当前信号插入已有消息之中,并提出了基于Next-Fit-Decreasing的启发式策略来对信号进行处理,并且作者通过实验证明,该算法比文献[6]中的算法更优.Polzlbauer等人[9]提出了以可扩展性优化为目标的CAN信号打包算法,以兼容未来功能扩展带来的变化.Xie等人[10]研究了安全感知的CAN信号打包算法,以保障CAN通信的安全性.但是上述算法均以单个信号作为打包处理的基本单元,每 次打包仅完成一个信号的打包,而未就周期大小相同的信号进行统一打包处理,且未就已有消息负载中剩余的空闲带宽进行量化分析和利用,这将造成带宽的浪费.Urul[11]提出先将信号集按照Best-Fit-Decreasing的策略进行初始打包,然后再尝试将消息拆分插入到其他周期更小的消息中,以优化带宽利用率.但是该算法局限于消息级的带宽利用率的分析和优化,未就周期大小相等的信号进行统一打包.Bordoloi等人[12]提出了一种基于动态编程的CAN FD信号打包算法,但是一方面,CAN FD与CAN在消息负载配置、消息头和消息内容两部分的传输速率等方面不同;另一方面,该算法仅适用于信号大小为整数个字节的情况,不具备通用性.除此之外,Wang等人[13]和Hao等人[14]研究了CAN网络系统设计在消息层拓扑结构和节点分组方面的问题,但是未考虑信号打包问题.Ayed等人[15, 16]和Schlesinger等人[17]分别研究了面向AFDX和Profinet网络的信号打包算法,但是上述网络协议与CAN完全不同,因此所提出的算法无法直接应用到CAN.综上所述,CAN信号打包问题的现有研究成果在带宽利用率优化方面存在不足,不能满足车联网应用发展的需求.针对该问题,本文采用信号分簇的思想,首先按照周期大小将信号集划分为多个信号簇,在打包的过程中,以信号簇而不是单个信号作为打包的基本单元;然后,按照周期大小升序的启发式过程对信号簇进行打包,并提出两个空闲带宽评价指标来完成信号打包策略的评价和选择.通过尽量降低消息中的带宽浪费,来实现带宽利用率的优化.

第1节介绍本文采用的系统模型和相关的假设前提.第2节借助一个事例来阐述本文的主要思想.第3节为提出的算法的详细描述.第4节为算法的实验验证和分析.最后,对本文的工作进行总结和展望.

1 系统模型和假设前提

图 1所示,本文假设车联网环境下的汽车电子系统包含的CAN子系统由多个ECU通过CAN互连组成. ECU集合可表示为:E={E1,E2,…,Eh,…,E|E|},每个ECU中包含一个信号集Sh={sh,1,sh,2,…,sh,i,…,sh,|S|}.由于信号打包是针对单个ECU中包含的信号集,为了简化描述,本文在后续的描述中省略信号标识符中代表其归属ECU的下标h,即,假设ECU中包含的信号集为S={s1,s2,…,si,…, s|S|}.信号的时间属性可通过一个三元组进行描述: si:{STi,SCi,SDi},分别表示信号的周期(单位为ms)、大小(单位为bit)和截止时限(deadline,单位为ms),并且本文假设STi=SDi[6, 7, 11].

Fig. 1 System architecture for CAN-based automotive electronic systems 图 1 基于CAN的汽车电子系统结构图

信号需要先打包成消息才能在CAN网络中进行调度和传输,本文假设信号集S打包后得到的消息集为: M={m1,m2,…,mj,…,m|M|}.消息mj的时间属性同样可通过一个三元组进行描述:{MTi,MCi,MDi},分别表示周期(单位为ms)、大小(单位为bit)和Deadline(单位为ms).根据信号打包结果,消息的上述属性的值可按照如下公式进行计算.

$M{{T}_{j}}=min\left( S{{T}_{i}} \right),{{s}_{i}}\in {{m}_{j}}$ (1)
$M{{C}_{j}}=\sum\limits_{{{s}_{i}}\in {{m}_{j}}}{S{{C}_{i}}}$ (2)
$M{{D}_{j}}=min\left( S{{D}_{i}} \right),{{s}_{i}}\in {{m}_{j}}$ (3)

消息大小等于所包含信号的大小之和,消息周期(或Deadline)等于所包含信号的周期(或Deadline)的最小值[8, 11].mj在网络中传输所需的最差传输时间(worst-case transmission time)WCTTj的计算方法如下[18]:

$WCT{{T}_{j}}=(55+10{{p}_{j}}){{\tau }_{bit}}$ (4)

其中,tbit表示每个比特位的传输时间.本文假设CAN的带宽为500kbps,因此,tbit=2ms.pj表示mj的实际负载,CAN协议规定pj的单位为字节(byte),整数pj的取值范围为1~8.pj的计算公式如下:

${{p}_{j}}=\left\lceil \frac{M{{C}_{j}}}{8} \right\rceil $ (5)

通过消息的WCTT计算可知,mj对应的带宽利用率可通过公式(6)进行计算:

${{U}_{j}}=\frac{WCT{{T}_{j}}}{M{{T}_{j}}}$ (6)

本文定义SPP问题的目标是最小化带宽利用率,以提高CAN系统的可扩展性和降低系统成本.打包得到的消息的调度分析将参照文献[18]中的研究成果来完成.基于上述的模型定义和分析可知,单个ECU中以带宽利用率最小化为目标的SPP问题可形式化描述为如下数学问题:

$Minimize\ \sum\limits_{j=1}^{|M|}{{{U}_{j}}}$ (7)

其中,该问题的求解需满足以下两个限制条件.

(1) 消息的最大负载为64bits(即8bytes),因此,mj的大小MCj需满足如下约束条件:

$M{{C}_{j}}\le 64$ (8)

(2) 每个信号都将被唯一打包到某个消息之中,因此,信号打包需满足如下限制条件:

$\sum\limits_{j=1}^{|M|}{{{\chi }_{i,j}}}=1$ (9)

其中,二进制变量ci,j表示信号si是否打包到消息mj之中:如果是,则ci,j=1;否则,ci,j=0.

2 事例说明

表 1给出了事例信号集,本文将结合该信号集来对已有CAN信号打包算法和本文提出的算法进行对比分析,从而指出本文提出的算法的优势.

Table 1 An example signal set 表 1 事例信号集

文献[7, 8]中,以单个信号为单元来进行打包分析.如:首先将s1打包到m1之中,然后对s2的打包归属进行分析.由公式(4)~公式(6)给出的分析可知:相比较于将s2打包到另一个空消息之中而言(方案1),将其打包到已有消息m1之中,在带宽利用方面更高效(方案2).两种方案对应的带宽利用率的计算如下.

· 方案 1 对应的带宽利用率:

$\begin{align} & \left( 1.9+0.65 \right)\acute{\ }{{10}^{-}}^{3}=2.55\acute{\ }{{10}^{-}}^{3}: \\ & \left( \left( 55+10\times \left\lceil \frac{30}{8} \right\rceil \right)\times 2 \right)\div 100000=1.9\times {{10}^{-3}}, \\ & \left( \left( 55+10\times \left\lceil \frac{2}{8} \right\rceil \right)\times 2 \right)\div 200000=6.5\times {{10}^{-4}}; \\ \end{align}$

· 方案 2 对应的带宽利用率:

$\begin{align} & 1.9\acute{\ }{{10}^{-3}}: \\ & \left( \left( 55+10\times \left\lceil \frac{30+2}{8} \right\rceil \right)\times 2 \right)\div 100000=1.9\times {{10}^{-3}} \\ \end{align}$

根据上述分析结果可知,将s1s2打包到一起更高效.按照上述思路对s3进行打包分析,同样将s3打包到已有消息m1之中(带宽利用率为2.1x10-3)比将其打包到另一个空消息之中(带宽利用率为2.225x10-3)更高效.同理,对于剩余的信号s4~s7而言,将其打包到已有消息m1之中对应的带宽利用更高效.因此,根据文献[7, 8]中的方法,该事例信号集对应的信号打包结果为m1,其中,m1={s1,s2,s3,s4,s5,s6,s7}.

由公式(6)可知,消息的周期决定了带宽利用率的大小.如果先按照周期对信号集进行分簇,然后以信号簇而不是单个信号为单元进行打包,将得到更优的带宽利用率.事例信号集的分簇结果为s1},{s2},{s3,s4,s5,s6,s7},{s1}和{s2}的打包分析与上面的分析相同.但是通过信号簇{s3,s4,s5,s6,s7}的打包分析可知,将其打包到一个新的空消息(方案1)比将其打包到已有消息m1(方案2)对应的带宽利用更高效.因此,事例信号集的打包结果为

${{m}_{1}}=\left\{ {{s}_{1}},{{s}_{2}} \right\},{{m}_{2}}=\left\{ {{s}_{3}},{{s}_{4}},{{s}_{5}},{{s}_{6}},{{s}_{7}} \right\}.$

· 方案 1 对应的带宽利用率:

$\begin{align} & \left( 1.9+0.425 \right)\acute{\ }{{10}^{-}}^{3}=2.325\acute{\ }{{10}^{-}}^{3}: \\ & \left( \left( 55+10\times \left\lceil \frac{32}{8} \right\rceil \right)\times 2 \right)\div 100000=1.9\times {{10}^{-3}}, \\ & \left( \left( 55+10\times \left\lceil \frac{24}{8} \right\rceil \right)\times 2 \right)\div 400000=4.25\times {{10}^{-4}}; \\ \end{align}$

· 方案 2 对应的带宽利用率:

$\begin{align} & 2.5\acute{\ }{{10}^{-3}}: \\ & \left( \left( 55+10\times \left\lceil \frac{32+24}{8} \right\rceil \right)\times 2 \right)\div 100000=2.5\times {{10}^{-3}} \\ \end{align}$

通过上述对比可知,以周期大小相等的信号组成的信号簇为单元进行打包的方法在带宽利用率方面更优.接下来,本文将对提出的基于分簇的信号打包算法进行详细介绍.

3 基于分簇的CAN信号打包算法

本文提出的基于分簇的信号打包算法(clustering-based signal packing,简称CSP)包括两个关键步骤.

(1) 分簇阶段

按照周期大小对信号集进行分簇,并分别按照周期大小和信号大小的升序对信号簇和簇内的信号进行排序.如信号集S可划分为如下多个信号簇:{S1,S2,…,Sk,…,SN},N表示S包含的信号簇的个数.其中,MTk<MTk+1.对于信号簇Sk中的两个信号sisi+1,SCiSCi+1.

(2) 启发式打包阶段

按照周期大小升序的顺序,依次对各个信号簇进行打包.为了实现带宽利用率的最优化,在启发式打包阶段应尽量高效利用当前已经打包得到的消息中的负载空间,将信号插入到可实现带宽利用率优化的消息之中.为了实现该目标,本文先给出如下两个空闲带宽评价指标来对已有消息中包含的空闲带宽进行形式化描述,从而可在后续的信号簇打包过程中对不同打包方案对应的带宽利用率进行定量分析.

根据CAN协议,消息的负载pj以字节为单位,但是打包后得到的消息的大小以比特为单位.由公式(5)可知,pj由消息包含信号的大小之和对8取上整后得到.因此,在消息的负载中存在字节级的空闲带宽.如果该空闲不被利用,其对应的带宽将被浪费掉.

定义 1(字节级的空闲带宽byte_level bandwidth slack,简称BLBS). CAN消息的实际负载中存在的空闲比特,定义为字节级空闲带宽.

消息mj中包含的BLBSj的大小可按照如下公式进行计算:

$BLB{{S}_{j}}=8{{p}_{j}}-M{{C}_{j}}$ (10)

CAN消息可允许的最大负载是8bytes,但是在打包的过程中,已有消息的实际负载可能小于8bytes.因此,在已有消息的负载中存在负载级的空闲带宽.

定义 2(负载级的空闲带宽payload_level bandwidth slack,简称PLBS). CAN消息允许的最大负载中存在的未被占用的空闲字节,定义为负载级的空闲带宽.

消息mj中包含的PLBSj的大小可按照如下公式进行计算:

$BLB{{S}_{j}}=5bits,PLB{{S}_{j}}=48bits.$ (11)

假设某个已有消息的负载情况如图 2所示,该消息的实际大小为11bits,因此pj=2.该消息所包含的两个方面的空闲带宽的值分别为

Fig. 2 An example to explain signal packing’s result 图 2 信号打包结果的说明事例

在信号簇的打包过程中,一方面应该最小化已有消息中的BLBS的大小,以降低带宽的浪费;另一方面,当前信号簇是打包到已有消息之中还是空消息之中,取决于哪一个方案对应的带宽利用率更优.根据上述思想,本文提出的启发式信号打包算法CSP的具体描述如下:

算法 1. 基于分簇的CAN信号打包算法伪代码.

Input: signal set S;

Output: message set M.

1. Divide S into clusters of signals with equal period: S={S1,S2,…,Sk,…,SN} //信号集按周期大小进行分簇

2. Sort signal clusters and signals with increasing period and size //信号簇和信号按周期、大小排序

3. for signal cluster Sk in S do

4. if k==1 then //对周期最小的信号簇进行直接打包,并分析生成的消息的BLBSPLBS

5. Pack the whole Sk into null messages and add those messages into M

6. Update BLBS and PLBS of the obtained messages

7. else //对其他的信号簇,需分析是插入已有消息还是空消息之中

8. Pack signals of Sk into BLBS of existing messages in M and update the corresponding BLBS

9. Update Sk by deleting the already packed signals

10. while (SkNULL) do

11. if sum(PLBSj) of mj in Msum(MCi) of si in Sk then //已有消息的PLBS足够容纳Sk

12. Apply Bandwidth_Utilization_Analysis(M) //带宽利用率分析

13. if insert Sk into null messages is better then //插入空消息带宽方面更高效

14. Create a null message ml and pack signals of Sk into it

15. Add ml to M and update its BLBSl and PLBSl

16. Update Sk by deleting the already packed signals

17. else //插入已有消息带宽方面更高效

18. Pack the whole Sk into existing messages of M and update their BLBS and PLBS

19. Break;

20. end if

21. else //已有消息的PLBS之和不够容纳Sk,需先打包Sk中的部分信号

22. Construct a null message ml and pack signals of Sk into ml

23. Add ml into M and update its BLBSl and PLBSl

24. Update Sk by deleting the already packed signals

25. end if

26. end while

27. end if

28. end for

29. if Schedulability_Analysis(M)==TRUE do //分析M的可调度性,如果M可调度

30. return M;

31. else //M不可调度,需就打包方案进行调整

32. Packing_Result_Modify(M);

33. return M;

34. end if

CSP算法首先按照周期大小对信号集S进行分簇,周期大小相等的信号分到同一个簇(第1行).然后,分别按照周期大小和信号大小的升序对信号簇和簇内信号进行排序(第2行).接着,依次对各个信号簇进行打包处理(第3行~第28行).如果当前信号簇Sk的周期最小,直接将Sk按照Next-Fit-Decreasing策略打包到空消息之中(第4行~第6行);否则,需要根据带宽利用率情况对Sk是打包到已有消息还是空消息之中进行分析(第7行~第28行).为了尽量优化带宽利用率,先将Sk中的部分信号直接插入已有消息的BLBS中(第8行、第9行).对于Sk中剩余的其他信号,存在两种可能的打包方案,即,将他们打包到已有消息之中或空消息之中.上述两种方案对应的带宽利用率分析过程(第12行)如下所述.

假设Sk中剩余信号的大小之和为SMk,Sk的周期为Tk.已经打包得到的消息集为{mj},mj当前的实际负载为APj,且PLBSj大于SMk.当把Sk打包到mj中时,该方案对应的带宽利用率U1可按照公式(12)进行计算:

${{U}_{1}}=\frac{(55+10\times (A{{P}_{j}}+S{{M}_{k}}))\times {{\tau }_{bit}}}{{{T}_{j}}}$ (12)

当把Sk打包到空消息时,该方案对应的带宽利用率U2可按照公式(13)进行计算:

${{U}_{2}}=\frac{(55+10\times A{{P}_{j}})\times {{\tau }_{bit}}}{{{T}_{j}}}+\frac{(55+10\times S{{M}_{k}})\times {{\tau }_{bit}}}{{{T}_{k}}}$ (13)

通过上述分析,可选择带宽利用率更小的方案作为最后的打包方案.必须指出的是:当已有消息集中存在多个已有消息,且他们各自包含的PLBS均大于SMk(或存在多种已有消息组合的PLBS之和大于SMk)的时候,仅需选择周期最大的消息(或消息组合)进行分析即可.该结论的证明见定理1.

定理 1. 在对信号簇Sk进行打包分析时,如果同时存在多个已有消息的PLBS可容纳Sk,仅需对Sk是插入周期最大的已有消息还是空消息进行分析即可,无需再对Sk是否插入其他周期更小的已有消息进行分析.

证明:假设信号簇Sk包含的信号大小之和为SMk,mj为已有消息之中周期最大的消息,mj的实际负载为APj,且PLBSjSMk(APjSMk的单位为byte).在对Sk是否打包到mj之中进行分析的时候,需对“Sk打包到mj之中”和“Sk打包到空消息ml之中”两种方案对应的带宽利用率进行对比分析,从而判断出哪一种方案更优.上述两种方案对应的带宽利用率可分别按照公式(14)和公式(15)进行计算.

${{U}_{1}}=\frac{(55+10\times (A{{P}_{j}}+S{{M}_{k}}))\times {{\tau }_{bit}}}{{{T}_{j}}}$ (14)
${{U}_{2}}=\left( \frac{55+10\times A{{P}_{j}}}{{{T}_{j}}}+\frac{55+10\times S{{M}_{k}}}{{{T}_{k}}} \right)\times {{\tau }_{bit}}$ (15)

如果U1-U2>0,后一种方案更优;如果U1-U2<0,则前一种方案更优;如果U1-U2=0,两种方案等同.U1-U2的值可按照如下公式进行计算.

$\begin{align} & {{U}_{1}}-{{U}_{2}}=\left( \frac{55+10\times (A{{P}_{j}}+S{{M}_{k}})}{{{T}_{j}}}-\left( \frac{55+10\times A{{P}_{j}}}{{{T}_{j}}}+\frac{55+10\times S{{M}_{k}}}{{{T}_{k}}} \right) \right)\times {{\tau }_{bit}} \\ & \text{ }=\left( \frac{10\times S{{M}_{k}}}{{{T}_{j}}}-\frac{55+10\times S{{M}_{k}}}{{{T}_{k}}} \right)\times {{\tau }_{bit}}. \\ \end{align}$

通过上述分析可知:当给定Sk的前提下,U1-U2是否小于0(即,将Sk打包到mj之中)主要取决于mj的周期Tj,且U1-U2的大小与Tj成反比.因此,在对Sk的打包归属进行分析的时候,仅需对Sk是否能打包到“PLBS大小能容纳Sk且周期最大的已有消息”进行分析即可,因为此时U1-U2才最有可能满足小于0的条件,从而不需再对Sk是否能打包到其他“PLBS大小能容纳Sk但周期更小”的已有消息进行分析.

推论1. 在对Sk的打包归属进行分析的时候,当单个已有消息的PLBS不能容纳Sk而需将Sk包含的信号拆分到多个已有消息之中的时候,仅需按照周期大小降序的顺序选择“PLBS大小之和刚好能容纳Sk的多个已有消息组合”,并对相应的带宽利用率进行分析即可,而不需要再对其他“PLBS大小之和能容纳Sk的已有消息组合”进行分析.

上述推论1的证明过程与定理1类似,本文在此不再赘述.

如果将Sk打包到空消息之中更优,则按照Next-Fit-Decreasing策略将Sk中的信号依次打包到空消息之中(第13行~第16行).由于消息的负载有限,如果当前空消息满载后Sk中还剩下有信号,那么继续下一轮While循环对更新后的Sk的打包归属进行继续分析.如果将Sk打包到已有消息之中更优,则按照Next-Fit-Decreasing策略将Sk中的全部信号依次插入已有消息之中,然后结束当前的While 循环(第17行~第19行).

当已有消息的PLBS大小不够容纳信号簇Sk的时候,按照Next-Fit-Decreasing策略将Sk中的部分信号插入空消息之中,然后继续下一轮While循环,对Sk中剩余信号的打包归属进行分析(第21行~第25行).在每个打包步骤之后,均需更新相关消息的BLBSPLBS,以备下一步的分析.在信号集打包结束后,利用文献[18]中给出的算法来对消息集M中的消息进行调度分析 (第29行):如果M中的所有消息均可调度,直接返回M作为CSP算法的结果(第30行);否则,需对打包结果M进行相应的修改.如:对不可调度的消息进行拆分直到所有消息均可调度,然后返回修改后的消息集作为打包算法的结果(第32行、第33行).

CSP算法主要包括两个阶段:(1) 信号分簇和排序阶段,该阶段的时间复杂度为O(nlog2n);(2) 信号簇打包阶段,该阶段的时间复杂度主要来源于for循环、while循环以及while循环中信号插入已有消息的操作步骤,其时间复杂度为O(n3).因此,CSP算法总体的时间复杂度为O(nlog2n+n3).

4 实验分析

为了验证CSP算法的有效性,本文分别在CAN子系统包含的两组信号集的基础之上与文献[7](Sak算法)、文献[8](Pol算法)和文献[11](Urul算法)中提出的算法进行了对比分析,其中一组信号集符合汽车整车厂提供的真实信号集的特点,另一组信号集则按照信号的周期和大小均匀分布的特点随机生成.为保证实验结果的有效性,本文设置每组信号集中各包括50个信号集,相关的实验结果均是对上述50个信号集的实验结果求平均后得到.本文设置信号集中的信号个数由40个逐渐增加到240个,其对应的网络带宽利用率由25%逐渐增加到接近100%,以实现不同的网络负载情况下的对比分析.本文在Matlab 2013开发环境下进行实验,运行本实验的PC配置如下:1.8GHz Intel Core i7,4G DDR3.

第1组信号集参照某汽车整车厂提供的真实CAN信号集生成[19],每个信号集中信号的周期和大小的分布符合该真实信号集的特点(具体情况见表 2表 3).

Table 2 Signal period’s distribution characteristics for the first group of signal sets(ms) 表 2 第1组信号集中信号周期的分布规律 (ms)

Table 3 Signal size’s distribution characteristics for the first group of signal sets(bit) 表 3 第1组信号集中信号大小的分布规律 (bit)

图 3给出了第1组信号集对应的实验结果,即,与其他3种已有算法相比CSP可实现的带宽利用率优化情况.图 3中的横坐标表示信号集包含的信号个数,纵坐标表示与其他算法相比CSP算法可实现的带宽利用率的优化率情况.如:CSP-Sak-Avg和CSP-Sak-Max分别表示与文献[7]相比,CSP可实现的带宽利用率的优化率的平均值和最大值,带宽利用率的优化率U_Opt可按照公式(16)进行计算:

$U\_Opt=\frac{U\_Sak-U\_CSP}{U\_Sak}$ (16)

其中,U_SakU_CSP分别表示采用Sak算法和CSP算法对信号集打包后得到的消息集的带宽利用率.

Fig. 3 Optimization ratio of CSP based on the first group of signal sets 图 3 基于第1组信号集CSP算法可获得的优化率情况

为进一步验证CSP算法的有效性,本文采用随机生成的第2组信号集来进行实验.信号集中信号周期的可能取值为[5,10,20,50,100,200,250,400,500,1000](单位:ms),信号大小的可能取值为[1,2,3,4,5,6,7,8,10,12,16,20, 24,32](单位:bit).与第1组信号集不同的是,该组信号集中信号的周期和大小的取值均符合均匀分布的特点.图 4给出了与其他3种已有算法相比,CSP可实现的带宽利用率的优化情况.

Fig. 4 Optimization ratio of CSP based on the second group of signal sets 图 4 基于第2组信号集CSP算法可获得的优化率情况

图 3图 4中,分别用虚线和实线表示优化率的平均值和最大值,同颜色的一组虚线和实线对应于与同一种算法的对比结果.

通过上述分析可知:CSP在带宽利用率优化方面最优,Urul算法次之,Pol算法排第3,Sak算法最差.具体对数据集1而言,CSP可实现的带宽利用率的优化率的平均值范围分别为[2.21%,5.29%](相比较于Sak算法),[1.81%,5.41%](相比较于Pol算法),[0.5%,1.5%](相比较于Urul算法);最大值范围分别为[10.28 %,22.65%](相比较于Sak算法),[10.01%,22.65%](相比较于Sak算法),[2.4%,5.4%](相比较于Urul算法).对数据集2而言,CSP可实现的带宽利用率的优化率的平均值范围分别为[2.19%,6.4%](相比较于Sak算法),[1.89%,5.27%](相比较于Pol算法),[1.09%,3.58%](相比较于Urul算法);最大值范围分别为[8.37%,14.07%](相比较于Sak算法),[8%,13.75%](相比较于Sak算法),[2.74%,7.54%](相比较于Urul算法).在上述两组实验中,CSP算法、Sak算法、Pol算法和Urul算法的执行时间分别约为80s,60s,60s和80s.

为了验证CSP算法打包后得到的消息集的可调度性,本文采用文献[18]中的算法对上述两组信号集打包后得到的消息集进行了调度分析.图 5以第1组信号集中的某个信号集为例,给出了信号打包调度后的最差反应时间(worst case response time,简称WCRT)和Deadline情况,图中的信号按照周期大小升序的顺序进行编号.该信号集共包含300个信号,打包后得到的消息集的带宽利用率约为94.3%.图 5(a)给出了信号集中全部信号的WCRT和Deadline情况,为使实验结果清晰可见,图 5(b)给出了信号集中周期大小前100的信号的WCRT和Deadline情况.从图 5可知:即使当CAN网络接近满负荷的时候,CSP算法仍可保证打包后得到的消息集可调度.

Fig. 5 CAN signal's WCRT and Deadline after packing and schedulability analysis 图 5 CAN信号打包调度后的WCRT和Deadline

5 总 结

针对车联网环境下车载CAN网络因数据量急剧增长而造成的带宽受限问题,本文研究了CAN网络系统设计方面的信号打包问题,提出了带宽高效的启发式信号分簇打包算法CSP.与现有研究成果不同的是:该算法以周期大小相等的信号组成的信号簇而不是单个信号作为打包分析的基本单元,并提出了两个空闲带宽评价指标来引导启发式算法选择得到带宽高效的打包方案,从而实现带宽利用率的优化.通过分别在接近真实情况的信号集和模拟信号集上与其他3个研究成果进行的对比分析可知:CSP算法在带宽利用率优化方面最优,且能保证打包后得到的消息集可调度.由于汽车工业具备批量生产的特点,即使1%的CAN网络带宽利用率优化也可能带来很大的经济效益.因此,本文提出的CAN信号打包算法可为CAN网络系统的优化设计提供理论上的借鉴,具有一定的实用价值.车联网环境下车载网络通信的可靠性和信息安全问题是汽车电子系统设计需解决的关键问题,因此,下一步作者将对CSP算法在可靠性和信息安全方面进行考虑和扩展.

参考文献
[1] Yang FC, Wang SG, Li JL, Liu ZH, Sun QB. An overview of internet of vehicles. China Communications, 2014, 11 (11) :1–15. [doi:10.1109/CC.2014.6969789]
[2] Tuohy S, Glavin M, Hughes C, Jones E. Trivedi M,Kilmartin L.Intra-Vehicle networks:A review.IEEE Trans. on Intelligent Transportation Systems, 2015, 16 (2) :534–545. [doi:10.1109/TITS.2014.2320605]
[3] McCue TJ.108 MPG with 2013 ford fusion energi plus 25 gigabytes of data.2013.http://www.forbes.com/sites/tjmccue/2013/01/01/108-mpg-with-ford-fusion-energi-plus-25-gigabytes-of-data/
[4] Kellerman G,Nemeth J,Kostelezky K,Barbehon KL,EI-Dwaik F,Hochmuth L.Electrical and electronic system architecture-communication network,power distribution system,central services and wiring harness.In:Proc.of the ATZextra Magazine.2008.30-37.http://www.atzonline.com
[5] Natale MD, Zeng HB, Giusto P, Ghosal A. Understanding and Using the Controller Area Network Communication Protocol:Theory and Practice. New York:Springer-Verlag, 2012 . [doi:10.1007/978-1-4614-0314-2]
[6] Sandstrom K,Norstrom C,Ahlmark M.Frame packing in real-time communication.In:Proc.of the 7th IEEE Int’l Conf.on Embedded and Real-Time Computing Systems and Applications (RTCSA).Cheju Island:IEEE Computer Society,2000.399-403.[doi:10.1109/RTCSA.2000.896418]
[7] Saket R, Navet N. Frame packing algorithms for automotive applications. Journal of Embedded Computing, 2006, 2 (1) :93–102.
[8] Polzlbauer F, Bate I, Brenner E. Optimized frame packing for embedded systems. IEEE Embedded Systems Letters, 2012, 4 (3) :65–68. [doi:10.1109/LES.2012.2208094]
[9] Polzlbauer F,Bate I,Brenner E.On extensible networks for embedded systems.In:Proc.of the 20th IEEE Int’l Conf.and Workshops on the Engineering of Computer Based Systems (ECBS).Scottsdale:IEEE Comptuer Society,2013.69-77.[doi:10.1109/ECBS.2013.32]
[10] Xie Y, Liu LJ, Li RF, Hu JQ, Han Y, Peng X. Security-Aware signal packing algorithm for CAN-based automotive cyber-physical systems. IEEE/CAA Journal of Automatia Sinica, 2015, 2 (4) :248–257. [doi:10.1109/JAS.2015.7296537]
[11] Urul G. A frame packing method to improve the schedulability on CAN and CAN FD[MS.Thesis]. Ankala:The Middle East Technical University, 2015 .
[12] Bordoloi UD,Samii S.The frame packing problem for CAN-FD.In:Proc.of the IEEE Real-Time Systems Symp.(RTSS).Rome:IEEE Computer Society,2014.284-293.[doi:10.1109/RTSS.2014.8]
[13] Wang H, Du QH, Yin HJ, Shan RG. Development of CAN system in electric vehicles. Chinese Journal of Automotive Engineering, 2011, 1 (2) :147–152(in Chinese with English abstract). [doi:10.3969/j.issn.2095-1469.2011.02.010]
[14] Hao B, Liu YH, Qu LD, Wei D. Research and implementation of grouping-merging strategy for CAN networks. Chinese Journal of Scientific Instrument, 2012, 33 (9) :2137–2143(in Chinese with English abstract). [doi:10.3969/j.issn.0254-3087.2012.09.031]
[15] Ayed H,Mifdaoui A,Fraboul C.Frame packing stragety within gateways for multi-cluster avionics embedded newtorks.In:Proc.of the IEEE 17th Conf.on Emerging Technologies&Factory Automation (ETFA).Kracow:IEEE Computer Society,2012.1-8.[doi:10.1109/ETFA.2012.6489577]
[16] Ayed H,Mifdaoui A,Fraboul C.Hierarchical traffic shaping and frame packing to reduce bandwidth utilization in the AFDX.In:Proc.of the 9th IEEE Int’l Symp.on Industrial Embedded Systems (SIES).Pisa:IEEE Computer Society,2014.77-86.[doi:10.1109/SIES.2014.6871190]
[17] Schlesinger R,Springer A,Sauter T.Improving profinet IRT frame packing using ethernet control character.In:Proc.of the IEEE World Conf.on Factory Communication Systems (WFCS).Palma de Mallorca:IEEE Computer Society,2015.1-4.[doi:10.1109/WFCS.2015.7160570]
[18] Davis R, Burns A, Bril R, Lukkien J. Controller area network (CAN) schedulability analysis:Refuted,revisited and revised. Journal of Real-Time Systems, 2007, 35 (3) :239–272. [doi:10.1007/s11241-007-9012-7]
[19] Xie Y, Zeng G, Chen Y, Kurachi R, Takada H, Li RF. Worst-Case response time analysis for messages in controller area network with gateway. IEICE Trans.on Information Systems, 2013, E96-D (7) :1467–1477. [doi:10.1587/transinf.E96.D.1467]
[13] 王欢, 杜全辉, 尹华军, 单荣明. 纯电动轿车CAN总线系统开发. 汽车工程学报, 2011,1 (2) :147–152. [doi:10.3969/j.issn.2095-1469.2011.02.010]
[14] 郝勃, 刘衍珩, 曲良东, 魏达. CAN网络的分组合并策略研究及实现. 仪器仪表学报, 2012,33 (9) :2137–2143. [doi:10.3969/j.issn.0254-3087.2012.09.031]