CAN现场总线通信控制协议的仿真及性能分析
控制器局域网(CAN)属于现场总线的范畴,是一种有效支持分布式控制系统的串行通信网络。它是由德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线。由于其通信速率高、工作可靠、调试方便、使用灵活和性价比高等优点,己经在汽车业、航空业、工业控制、安全防护等领域中得到了广泛应用,被公认为几种最有前途的总线之一,其协议也发展为重要的国际标准。
随着CAN总线在各个行业和领域的广泛应用,其通信性能也越来越受到人们的关注。目前,已有很多学者对CAN总线通信性能进行分析研究。文中在分析CAN总线通信控制协议的基础上,在MATLAB/Sinulink软件Stateflow仿真环境下,利用有限状态机理论对CAN总线通信系统进行了形式化建模。通过此仿真模型,分析了CAN总线通信系统中负载率的变化对网络吞吐量、平均信息时延、通信冲突率、网络利用率、网络效率以及负载完成率的影响。
1 CAN总线通信控制协议
根据ISO11898(1993)标准,CAN从结构上分为物理层和数据链路层,数据链路层又包括逻辑链路层控制子层(LLC)和介质访问控制子层(MAC)。在CAN总线系统中,节点间通过公共传输介质传输数据,因而数据链路层是总线的核心部分。CAN总线数据链路层的通信介质访问控制方式为事件触发,采用CSMA/CD.只要总线空闲,网络上任意节点均可在任意时刻主动地向网络上其他节点发送信息,而不分主从,节点在请求发送信息时,首先侦听总线状态,若总线空闲(或等待至总线空闲)则开始发送。当多个节点同时发送产生冲突时,采用非破坏性位仲裁机制,即借助ID标识符及逐位仲裁规则,低优先级节点主动停止发送,高优先级节点不受影响继续发送,从而避免总线冲突,避免信息和时间发生损失。在发送过程中,发送节点对发送信息进行校验,完成发送后释放总线。CAN总线系统通过使用这种非破坏性的逐位线仲裁技术来处理多个节点同时访问网络的冲突,最后优先级最高的节点能够立即发送数据,满足了高优先级节点实时性的相关需要。
2 CAN总线系统仿真模型
文章在Matlab/Simulink软件Stateflow仿真环境中建立了16节点的CAN总线通信系统仿真模型。节点1-16的结构是相同的,节点模块如图1所示。
图1 节点模块
节点模块包括发送、缓存、数据采集3个部分。因为本次仿真主要研究CAN总线的通信性能,所以建立节点模型时,只考虑了其通信活动所涉及的部分,没有加入节点计算控制活动部分和数据接收部分。数据采集用于采集Simulink中输入的数据,数据长度服从随机平均分布,在状态“有数据”中,数据被组装成CAN标准短帧。在实际系统中,数据可能是节点本身采集的现场检测数据,或是节点控制器输出的数据。“缓存”代表节点的缓冲器,这里假设容量为1.包括两个状态:“空”和“非空”.数据被采集并组装成CAN标准短帧后,触发由“空”到“非空”的转换,将节点信息放在等待发送的缓冲器中,发送完成后,返回“空”状态,等待下一次触发。“发送”代表节点发送部分,当缓冲器有数据等待传输时,触发由“停止”到“等待”的转换,进入等待状态;当总线仲裁允许本节点发送时,触发由“等待”到“传送”的转换,开始发送数据;当缓冲器的数据传送完成时,触发由“传送”到“停止”的转换,等待下一次发送。
图2 通信调度模块
通信调度模块,如图2所示。包括总线活动模块fieldbus和仲裁判断函数compete.fieldbus模块包括3个状态:“空闲”、“忙碌”、“帧间隔”.开始总线在“空闲”状态下,当有节点要发送信息时,用compete函数对待发节点进行仲裁,并触发由“空闲”到“忙碌”的转换;节点发送数据完成后,以“返回”事件触发由“忙碌”到“帧间隔”的转换;经过一个“帧间隔”后,回到“空闲”状态,等待下一次传输。compete函数对各节点的仲裁符合CAN仲裁机制,通过比较各待发节点的优先级,实现“线与”功能,将发送权给优先级最高的节点。
以上所述的仿真平台简洁直观地解释了CAN网络的控制机理,并能动态地仿真其通信活动。
3 网络性能
3.1 性能指标
我们先介绍总线网络相关性能指标的相关定义。
网络负载率:单位时间内发出访问网络的节点数(需要传送的报文数)与网络最大容量的比率。
吞吐量:单位时间内系统成功发送信息
CAN现场总线通信控制协 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)