宋小庆,任维彬,2,陈克伟,熊全谦
(1.装甲兵工程学院控制工程系,北京100072;2.65545部队,辽宁普兰店116200)
CAN总线属于总线式串行通信网络[1],采用CSMA/CA机制处理通信过程中所产生的信息冲突。因此,信息传输的实时性与信息当时所拥有的优先地位相关,而这也直接影响到整个总线的传输性能。鉴于总线网络是一个强耦合、离散的信息系统,因此,直接通过解析法建模进行分析具有一定难度。而Petri网由于其形式化行为描述特征,而被广泛应用于总线通信系统中,如随机Petri网(Stochastic Petri Net,SPN)在航空综合电子系统中已经得到了运用[2]。目前,Petri网主要分为2类:随机Petri网和有色 Petri网(Colored Petri Net,CPN)。随机Petri网侧重随机过程的分析,不能对总线网络进行较为全面的分析;而有色Petri网可以对系统行为进行准确的描述,从而准确地建立总线性能仿真模型。本文采用有色Petri网,以CPN Tools为工具建立基于CAN总线竞争机制模型,并以连接了5个节点的某型战车总线网络为例,进行性能仿真与分析。
1962年,德国的Carl Adam Petri在他的博士论文《用自动机通信》中首次使用网状结构模拟通信系统[2],这种系统模型后来以Petri网命名。
CPN是在基本Petri网的基础上发展起来的一种高级Petri网[3]。CPN中的主要元素有:带颜色的标识、库所、变迁和弧。建模过程中,将综合电子系统状态、消息、数据和指令等信息描述为标识,信息的不同类型用不同颜色集加以区分;将这些信息的驻留或缓存区用库所来描述;报文发送接收、命令执行等事件用变迁来描述;弧则描述了信息的流向。
CPN Tools是丹麦Aarhus大学CPN小组对CPN仿真软件Design/CPN的再设计。它使用了新的、更快的CPN仿真器和更强的网络进行语法检查,并且可以使用CPN ML语言来定义规范和描述网络。
图1为某型车辆的CAN总线拓扑结构[4],该总线网络上共挂接了5个节点,其优先级按照其节点1到节点5依次递减。
图1 CAN总线拓扑结构
总线网络工作时,消息在总线上传输包括3个阶段:
1)通过总线发送节点进行发送;
2)根据节点优先级获取消息对总线占用权,实现消息在传输信道上的传输(该部分包括优先级仲裁以及传输延迟);
3)判定总线接收节点通过验收滤波,被相应总线节点判定接收。
CAN总线网络消息传输过程如图2所示。初始化代表一个动态的分配过程,将所有CAN帧根据其所具有的标志位ID,指派到具有优先级差别的5个CAN节点上;优先级仲裁过程代表依据CSMA/CA的总线仲裁原则,对同一时刻将要发送到总线上的CAN帧进行仲裁,将具有最高优先级的CAN帧取出,送到总线上进行发送;CAN BUS代表总线,同一时刻只能容纳一帧消息帧;滤波代表根据每一帧消息帧的目的标识位,进行发送到达指定CAN节点的过程;目的节点代表消息帧将要送达的指定节点。
图2 CAN总线网络消息传输过程
初始化模块如图3所示。其中:变迁ComList代表接收从服务器端经底层接口传送过来的命令表,将其存放在库所List中;变迁Distri代表按照指定ID位将命令帧指派到各个节点的过程;库所Cache1,2,3代表各个节点缓存,存放属于各个节点的CAN帧。
图3 初始化模块
CAN帧发送模块如图4所示。其中:变迁Sort1代表将节点缓存中的CAN帧按照优先级顺序进行排序的过程;库所Tok1中存放节点使能令牌,当Tok1中存在使能令牌时,变迁Sort1被激活,可以完成排序并将排序后的CAN帧组成的表送入CAN节点Nod1中;变迁First1代表取出优先级最高的一帧送入发送缓冲区进行发送的过程;库所Waiting代表发送缓冲区。
图4 CAN帧发送模块
CAN帧接收模块如图5所示。其中:变迁TNod1代表将获得总线使用权的CAN帧发送到其目的节点Nod1中;变迁Return1代表将节点使能令牌归还给库所Tok1。
图5 CAN帧接收模块
优先级仲裁模块如图6所示。其中:变迁Filter1代表具有较高优先级的CAN帧发送过程;Filter2代表发送具有相对较低优先级的变迁;CacheA,B代表发送缓冲区;变迁Sending1,2代表向总线发送通过竞争获得总线使用权的CAN帧的过程。在2条并行的流程中,通过反库所Anti12结构的设置[5],实现当变迁Filter1,2同时使能时,变迁Filter1具有使能令牌的优先使用权,而当Filter1具有总线使用权时,变迁Filter2无法获得使能令牌,从而失活[6-7]。变迁Sending1激发之后,将使能令牌归还,变迁Filter2使能。该过程仿真当同时有一个以上节点具有帧等待发送时,可以根据优先级实现具有较高优先级的帧优先发送,具有较低优先级的CAN帧让出总线使用权,等待高优先级发送完毕后继续向总线发送。
图6 优先级仲裁模块
滤波模块如图7所示。其中:库所CANBUS代表总线上有CAN帧即将向目的节点发送的状态;变迁TNod代表根据CAN帧的目的节点标识位,通过设置警戒函数,将标识位与目的节点不相符的帧过滤除去,将符合的CAN帧发送到目的节点的过程;库所Nod代表目的节点。
图7 滤波模块
模型的运行过程主要通过CPN ML语言来实现。CPN ML是一种面向表达式的函数式语言[8],是对标准ML的拓展,它可以直接用CPN的概念和ML语言的功能对系统进行模型的描述和控制,实现定量的仿真和性能分析。模型实现流程如图8所示。
图8 模型实现主要流程
在建成的模块化的基础上,依据抽象出来的总体模型,结合Petri网原理中标识与颜色集、标识的状态与库所、标识的动作与变迁的对应关系,可以将模型划分为3个基本层次:初始化层、优先级仲裁层和滤波层。各层主要功能如表1所示,基本层次如图9-11所示。
表1 层次功能表
图9 初始化层
图10 优先级仲裁层
图11 滤波层
CAN总线系统的性能指标主要包括总线的负载、总线的利用率和总线效率等。总线负载和总线效率计算公式如下:
总线负载=数据帧传输时间/CAN卡激活时间;
总线效率=有效数据部分传输时间/数据帧传输时间。
本文在使用CAN总线进行通信时采用的是数据帧。数据帧由7个不同的位域组成,分别为帧起始、仲裁域、控制域、数据域、CRC域、ACK域和帧结束,其中,数据域的长度可以为0。数据帧结构如表2所示。
表2 数据帧结构
其中:帧起始以一个比特的显位出现;仲裁域由29位标识符、替代远程请求位、标识位和远程发送请求位组成;控制域包括4位的数据长度码、IDE显性位和保留位;数据域可以包括0~8个字节,位数为8n(0≤n≤8);CRC域取16位;ACK域包括应答间隙和应答界定符2位;帧结束由7个隐位组成的标志序列界定。
设总线负载为η,总线效率为θ,每位数传输时间为t',CAN激活时间为t,则可得
在建立了CAN网络模型基础上,本文对CAN网络的网络实时性能指标进行了仿真分析。仿真分析时,网络上每个节点的具体信息如表3所示。
表3 CAN总线网络信息列表
仿真结果得出总线利用率与节点之间关系如表4所示。
表4 总线利用率与节点关系
通过模型仿真得到如图12所示关系曲线,对指定的模型消息帧进行分析,在总线上传送的帧数不断增加的过程中,总线利用率不断提升。图中前3段折线反映总线利用率上升的速度在逐渐加快,这主要是由于每一个CAN帧所携带的数据长度变大。从表3的周期变化中可以看出:由于帧间空间变大,总线空闲时间相对变长,从而使得总线利用率增长速度有所减缓。
图12 总线利用率随帧数变化曲线
当在模型中发送表3中CAN帧的过程中,模型仿真可得其总线效率随时间变化关系,如图13所示(横坐标有缩放)。
图13 总线效率随时间变化曲线
由图13可见:影响总线效率的主要因素是数据的长度,并且和帧的周期密切相关。模型仿真的结果符合式(1)、(2)的CAN总线性能指标理论计算公式,验证了模型的正确性。
从定性的角度,进一步分析基于有色Petri网的CAN总线模型的合理性。
1)从CAN总线的功能角度,模型实现了CAN总线的数据传输功能,反映了CAN总线自身的功能和特点。
2)从CAN总线的静态结构特性角度,模型实现了CAN总线的单级总线拓扑结构,反映了CAN总线的静态结构特性。
3)从CAN总线的动态行为特性角度,模型实现了CAN总线的多主竞争机制,模拟了CAN总线的动态运行,反映了CAN总线的动态行为特性,因而更具合理性。
本文在CPN Tools环境下基于有色Petri网建立了CAN总线模型,并以某型车辆作为仿真实例,通过定性和定量分析,验证了模型的合理性和正确性。下一步将进行CAN总线算法研究以及对多级总线网络互联的建模与研究。
[1]饶运涛.现场总线原理与应用技术[M].北京:北京航空航天大学出版社,2006:22.
[2]张健东,吴勇,高晓光.基于DSPN的综合航空总线系统的性能评价[J].西北工业大学学报,2005,23(2):244 -248.
[3]袁崇义.Petri网原理与应用[M].北京:电子工业出版社,2005:2.
[4]宋小庆,李匡成,张豫南.军用车辆综合电子系统总线网络[M].北京:国防工业出版社,2010:115-124.
[5]王胜德.维修过程模型及其优化技术的研究[D].北京:北京理工大学,2006.
[6]Mulyar N A.Patterns in Colored Petri Nets[EB/OL].(2005-04 -15) [2010 -07 -16].http:∥wiki.daimi.au.dk/cpntoolshelp/
[7]Welters M.Building Logistic Games in CPN Tools[EB/OL].(2005 -01 -22) [2010 -07 -16].http:∥wiki.daimi.au.dk/cpntools-help/
[8]Paulson L C.ML程序设计教程[M].柯韦,译.北京:机械工业出版社,2005:3 -4.