CAN通讯中的一种动态自同步方法设计
2015-04-27李春艳陈敬轩
李春艳,陈敬轩
(1.中国北方车辆研究所, 北京 100072;2.北京理工大学机械与车辆学院, 北京 100081)
CAN通讯中的一种动态自同步方法设计
李春艳1,陈敬轩2
(1.中国北方车辆研究所, 北京 100072;2.北京理工大学机械与车辆学院, 北京 100081)
摘 要:解决CAN通讯在网络负载大的时较为突出的因为无序发送和异步通讯导致的信号实时采集难以实现的问题提出了一种同步采集方法,通过在CPU内存中建立帧ID队列的方式,让每个帧都能找到对应的发送时刻,实现同步采集的功能。该方法已经在一个实际的数据采集系统中得到检验并取得良好效果。
关键词:CAN通讯;ID队列;步采集
本文引用格式:李春艳,陈敬轩.CAN通讯中的一种动态自同步方法设计[J].新型工业化,2015,5(4):55-60
0 引言
CAN总线作为最初就专门为车辆通讯设计的现场总线,在车间通讯和车联网领域有着不可或缺的作用[1-2]。但是,在车辆电子控制领域,如何保证收发端数据的同步,即接收端可以正确接收和解析发送端的数据,对保证行车安全,提高车辆的操纵稳定性和燃油经济性有着举足轻重的地位。采用异步串行通信协议的CAN总线协议,尽管具有布线简单,实现容易等独特优势,也不可避免的面临如何保证各个CPU通讯的同步一致的问题。现有的CAN控制器采用的硬同步和再同步机制在节点数量少,网络负载轻的传输环境中有着较为良好的效果。但是,在节点数量变化的工程现场尤其是节点数目较多的车辆电子控制系统中,由于各节点受振荡器容差的影响不尽相同,重同步机制中的各个节点的相位调整段长度和同步跳转宽度难以计算,各个节点的同步效果并不理想[3]。
同时,当节点数目较少时,CAN总线的仲裁机制能够较好的保障通讯的可靠性和实时性,但是在节点数目较多时,因为冲突导致的丢帧现象频发,低优先级节点往往因为数次竞争总线使用权失败而无法正常工作,通讯的可靠性无法得到保障[4]。现有的动态优先级算法[5]和负载均散方法[6]依旧难以避免帧碰撞,TTCAN等对CAN协议的改进也因为和CAN协议不兼容的问题难以进行实际应用[7]。
除此之外,在实际工程系统比如车辆控制系统中,为保证控制信息的有效性和可靠性,核心控制系统需要尽可能的采集到同一时刻的各个物理信息,比如节气门开度和油温信息等以便处理。这一要求在传统的CAN总线通信中很难满足。
为此,本文提出了一种基于帧ID队列的动态自同步CAN通讯方法,参与通讯的每个CPU都在内存中建立一个帧ID队列,再把本CPU要发送的帧在这个帧队列中重新定位,只有当本CPU的帧ID时间到,才发送数据,这样就可以避免发生帧冲突,从而大大提高CAN通讯成功率,确保实时信息采集的可靠性和实时性,使得每个CPU都可以预测自己的信息发送时刻,实现准同步功能。该方法已经在一个实际的数据采集系统中得到检验,并取得了良好效果。
1 传统CAN通讯实现同步采集的方法及缺陷
1.1传统CAN通信的信息采集误差
在CAN总线通信现场,各个节点往往在实时的采集信息然后在需要的时刻发送其当前采集到的数据。但是,因为CAN总线通信的特点,同一时刻只允许有一个帧传输,因而要想某一节点想要收到完全相同时刻的其余任意节点数据是不可能实现的,只能尽可能缩短并且控制二者的时间间隔。
假设系统中某一节点A需要接收同一时刻ti节点B、C采集到的数据。对单一节点而言,该节点不可能持续不断的发送数据,占用内存。因而在工程现场,往往会为节点设定一个发送周期,该节点每隔该周期发送一次数据。根据节点采集数据的重要性,各个节点的发送周期不尽相同。为了实现采集的同步,设置B的发送间隔为10ms,C的发送间隔为11ms,如此一来,在理想情况下,节点A就能接收到B、C之间间隔为1ms的信息,准同步采集能够实现。
但是,在一般情况下,由于CAN总线的广播特性,各个节点都有权利征用总线传输信息,总线冲突较为严重。假设某一时刻节点B发送的信息和一优先级较高的信息发生冲突,此时节点B因为仲裁失败停止发送该帧信息而等到下一个发送周期再发送信息。如此一来,该时刻节点A采集到的B、C数据就相差了10ms。当节点数目众多时,帧碰撞严重,由于仲裁失败导致的采集时刻差难以计算和控制,同步采集无法实现。
1.2传统CAN同步方式的缺陷
当CAN系统中节点数目较少时,因为帧碰撞较少,由于仲裁的其他因素引起的帧延时较小也较为固定,此时,硬同步和重同步方式能较好的实现收发节点间信号的准同步,逐位仲裁造成的丢帧不多。但当网络中节点数目较多,网络负载较重时,帧碰撞严重,传输延时难以确定,通讯的可靠性和实时性难以保障[8]。同时,实际工程中位定时的参数受振荡器容差和最大总线长度的影响很难确定。参考文献[9]中详细介绍了重同步中各参数及延迟时间的计算和CAN控制器的配置,本文不再赘述。
此外,当帧碰撞剧烈时,如前文所述的因为因仲裁导致的信息采集不同步问题变得格外严重,信息的同步采集几乎无法实现。
2 一种基于帧ID队列的动态自同步方法
2.1方法的提出
为了实现准同步的信息发送和采集功能,我们希望能够给各个CPU定义一个有顺序的发送队列,每个CPU都按照这个发送队列有序的发送消息。每当队列中的前一节点发送完信息之后,后一节点立刻发送信息。这样一来,相邻两节点间的时间延时仅仅只是每帧数据发送所需要的时间,这一时间和节点的发送周期相比一般微乎其微,在硬同步机制的帮助下,系统通信的同步性能得到更好的保障。
本文引入一种基于帧ID队列的同步采集方法,通过软件,在各个CPU中按照所发送的数据帧的优先级(即帧ID的大小)进行排序,形成一个优先级由高到低的队列。系统工作时,各个CPU都接收总线上初始帧数据(通过验收滤波器实现),动态调整队列,当CPU需要发送某帧信息时,先在软件中判断队列中的初始帧是否已经接收。如果是,则立刻发送本帧数据。如此一来,各自CPU的帧ID都可以找到自己发送数据的时刻,只要全部的节点都严格按照这个方式通讯,就可以保证同一时刻只有一个CPU向总线发送数据,不会发生帧碰撞,大大减少帧冲突,提高CAN通讯的数据量和通信的同步性。同时,也使得数据采集的时间间隔变得可控,同步采集得以实现。
2.2方法的内容
2.2.1初始帧ID队列和帧发送的时刻
上电启动后,各个CPU都有一个缺省的帧队列,该队列是进行系统设计时已经规划好的队列,作为起始发送数据顺序队列。
系统工作时,每当总线上有帧成功发送完毕,CPU就通过接收中断进入程序,提取该帧的帧ID并和队列中原有的帧ID一同进行比较排列,优先级高的(帧ID数值小的)排在队列的前面,优先级低的(帧ID数值大的)排在队伍的后面。同时,每个CPU都把自己要发送的本帧数据的帧ID根据相同的方法插入这个队列中,形成一个完整的帧ID队列。
可以看出,各个CPU中的帧ID队列是不断动态变化的,而且每个CPU中的帧ID队列不一定完全一致。
2.2.2帧发送的方法
CPU在完成对系统CAN的初始化之后,每当某个CPU得知其队列中上一帧已经成功发送时,就立刻通过接收中断进入软件,判断当前系统时刻距离上一次本CPU发送信息的时间间隔是否大于本CPU预设的发送周期,如果是,则立刻发送本帧数据,如果不是,就等待时间间隔达到CPU预设的发送周期后立刻发送本帧数据。
2.3方法的一个实例
为了更好地说明本方法的工作原理,现举一个具体例子阐述采用动态自同步方法传输数据的CPU工作情况。假设某系统中有A~E五个CPU节点。为叙述方便,假设每个节点有且仅有一个帧ID(即每个节点只发送一种数据帧),其帧ID由小到大依次为:A、B、C、D、E。系统中每个节点的发送周期相同,均设为10-2秒。每个CPU中定时器的时间间隔均设为10-4秒。CAN总线以其所能达到的最大通讯速率即1Mbps工作。
图1 第一个发送周期的通讯情况
上电启动前,各个CPU内部事先约定了一个发送队列。按照其优先级由高到低排列为:A、B、C、D、E。该队列储存在CPU的内存中。图1展示了第一个发送周期:0~10-2秒,各个节点发送信息的情况。横轴的总长度是一个发送周期即10-2秒。相邻两点间的时间间隔的意义是队列中的前一节点发送信息的时间(t1)到队列中的后一节点得知前一节点已经发送完毕(这一功能在CPU的其他硬件中实现)的时间(t2),这二者的时间间隔(δt=t2-t1)就是图中相邻两点横坐标的间隔。因为本实例中假设CAN总线的通讯速率是1Mbps,因而在正常情况下,10-4秒足够使得每帧数据传输完毕,因此这里设置10-4秒为后续节点等待的时间间隔。时刻1,A节点作为事先约定的初始节点首先发送信息。因为每个节点都接收总线上的数据,因而当节点A传送完毕后,每个节点都知道节点A的数据已经发送。一旦节点B发现节点A已经完成了数据的传输,那么节点B立刻通过接收中断标志进入图中所示时刻2,而后节点B判断这一时刻距离上一次本节点(节点B)发送数据的时间间隔是否已经大于发送周期(10-2秒),如果是,节点B立刻发送信息。如果不是,就等待到该时间间隔达到预设周期时立刻发送本帧数据。同理,节点C在收到节点B发送的帧后,通过接收中断进入和B相同的发送判断程序,如果这一时刻距离上一次本节点(节点C)发送数据的时间间隔大于发送周期(10-2秒)就立刻发送数据。同理,在后续时刻,每个CPU有条不紊的按次序发送自己的信息,完全避免了帧的碰撞,很好的保障了通信的可靠性和实时性。同时每个CPU都能知道自己发送的时刻,各个节点发送与接收信息之间的时间差仅仅是接收完数据的时间间隔,很好的实现了准同步功能。
同时,从图中我们可以很清楚的看到,在现有的五个节点的系统中,正常情况下,该五个节点的数据全部发送完成的时间远远小于10-2秒,因而留有较多的空闲时间,完全能够满足新的节点增加的要求,而不会造成帧的碰撞冲突。
此外,在本系统中,节点A作为系统设计中拥有最高优先级的节点,起到了基准的作用。节点A不管其他节点的发送状况如何,每到其设定的发送周期时刻(本实例中为10-2秒)就立刻发送数据,其他节点以A为基准能够校准自己的发送时刻,也就是说由于传输延时和接收处理信息造成的误差不会累加,通信的同步性得到更好的保障。
2.4方法的误差分析
如前文所述,本方法设定了一个通讯中的初始节点作为基准,所有节点的信息发送都以前一个节点的信息到来作为发送信息的依据。在一次发送周期中,所有节点的发送是有序的,由于只需严格遵守本方法的发送规则就可以避免帧的碰撞丢失,若相邻两个节点为一对收发节点,在一次发送周期中的信息延时仅仅只是信号从前一节点传输到后一节点的时间间隔以及CPU中断处理的延时,一般情况下这一延时对于一个发送周期的时间长度而言完全可以忽略不计,通信的同步性和实时性较传统方法有极大的提高。
对于信息采集而言,仍旧以3.3所述系统为例,如果节点D需要接收同一时刻的B、C的信息,那么其收到的信息中B、C两节点的物理量的时间间隔仅仅为约10-4秒,而在传统的通信方法中,即使两节点中仅有一个仅因为一次帧碰撞且仲裁失败导致漏发一帧而造成的时间间隔为一个发送周期(10-2秒)的采集误差。因而,采用这一通信方法能够很好地保证信号采集的同步性。
本方法的一个主要缺点是要求CPU无论是否需要起始节点的数据都要接收起始的CAN信息,增加了CPU的负担。同时,要求每次发送的起始报文都通过接收中断方法进入CPU,增加了开支。但是,由于CAN通讯天生的缺陷:为了仲裁机制能够正确执行,在共享介质上的传输延时和位时间相比可以忽略不计是很必要的[10],这一缺陷很大程度上限制了CAN传输的通讯速率。一般来说,CAN的最大传输速率在传输距离为40m时仅有1Mbit/s;另一方面,随着微电子技术的发展,普通CPU的字长已经基本达到了64位,CPU主频也基本在2吉赫兹以上。因而对一般的网络传输,尤其是在车辆实时网络领域,CPU的处理能力完全能胜任这一任务,对帧ID进行实时排列所花费的时间对传输实时性和传输同步性的影响可以忽略。
3 试验和结果
图2所示是8通道压力信号采集卡TGWH3028的原理图,图3是TGWH3028的实物图,该采集卡可以同时8通道的压力信号。如图3所示,U1是32位ARM芯片STM32F103,该芯片价格低廉,性能优异,具有丰富的IO口和内置CAN控制器,实现对8路24位的采集芯片HX711的控制功能,实现采集功能,并且将采集的信息通过CAN传送到上位机,上位机再将该信息传送到PC,从而实现信号采集功能。图3所示的JP1实现CAN站点号设置功能,总线上可以有16个CPU同时工作,便于系统的功能扩充。
图2 8通道压力采集和CAN通信原理图
图3 实物照片
多个采集卡在同一个CAN网络通信问题是本采集重点研究内容,不同的TGWH3028通过JP1就可以设置不同的CAN站点号,CPU根据JP的状态自动设置不同的CAN帧ID,采用帧ID队列方式进行CAN通讯,实现实时压力采集功能。
图4中通道6和通道7是试验台压力信号,可以看出,采集的压力信号光滑、连续,表明通讯过程中没有数据丢失,保证了信号的连续性和实时性,也验证了本方法的有效性。
图4 信号采集波形
4 总结与展望
本文介绍了一种基于帧ID队列的同步CAN采集方法,实现准同步的信号采集结果。该方法的目的是通过建立准同步原则,让各个CPU按照一个统一的顺序发送,从而减少冲突发生的可能性,避免各个CPU无序发送的局面,避免了帧的碰撞,大大提高了通讯的有效数据流量和网络数据的实时性,同时为各个CPU的信息发送规定对应的帧ID序列,减少了各个CPU因为仲裁冲突而漏发数据帧的情形,很好的保障了信息采集的同时性。
随着工业科技的发展,工程系统日益复杂,CAN通讯在车辆电控、工业现场等场合的应用将越发普遍。CAN通讯和采集的实时性和同步性对车辆的安全性非常重要,采用本方法对提高车辆的安全性有很好的作用,且不必变更现有CAN系统的硬件,因此应用前景十分广泛。
参考文献:
[1]Supriya Kelkar, Rajkamal.“Control area network based quotient remainder compression-algorithm for automotive applications,” in proc.of IECON 2012, 38th Annual Conference of the IEEE Industrial Electronics Society, Montreal, Canada, 2012: 3030-3036,.
[2]Supriya Kelkar, Raj Kamal, “Comparison and analysis of quotient remainder compression algorithms for automotives,” in proc.of INDICON 2012, IEEE International Conference, Kochi, India, 2012: 802-807.
[3]李芳, 刘鲁源, 吕伟杰.CAN总线位定时和同步机制的分析[J].电子产品世界, 2005(05): 106-110.LI Fang, LIU Luyuan, LV Weijie.The Analysis of Bit Timing and Synchronization Mechanism of CAN Bus[J].electronic engineering & product world, 2005(05): 106-110.
[4]邓婕.CAN总线通信原理分析[J].电子设计工程, 2012(07): 104-107.DENG Jie.Analysing communication mechanism of CAN bus[J].Electronic Design Engineering, 2012(07): 104-107.
[5]A.Farahani, G.Latif Shabgahi.A Novel Method for Softening some of the Drowbaks of CAN, Proc.of the Int.corif.Signal Processing Systems, Singapor, 2009: 771-775.
[6]丁旭阳.一种汽车电子控制器通信网络总线负载的均散化方法: 中国专利, 201010528846.4[P].2011-02-16.
[7]Wang Huan,Wang Lifang,Shan Rongming, Researches on fault diagnosis of time master in TTCAN on hybrid, World Electric Vehicle Journal, 2011, 4(1): 243-248.
[8]G.Buja, R.Pimentel, and A.Zuccollo, Overcoming Babbling idiot Failures in CAN Networks: A Simple and Effective Bus Gurdian Solution for the FlexCAN Arbitration, IEEE Trans on Industrial Informations, 2007, 3(3).
[9]张健.CAN总线中位定时的设定方法[J].河北师范大学学报, 2002, 26(4): 355-358.ZHANG Jian.The Method of the CAN Bit Timming[J].journal of hebei normal university (natural science edition), 2002, 26(4): 355-358.
[10]G.Cena, A.Valenzano.Fastcan: a High-Performance Enhanced CAN-Like Network, IEEE Trans on Industrial Electronics, 2000, 47(4).
A Design of a Dynamic Synchronized Method in CAN
LI Chunyan1, CHEN Jingxuan2
(1.China North Vehicle Research Institute, Beijing 100072, China; 2.School of Mechanical and Vehicular Engineering, Beijing Institute of Technology, Beijing 100081, China)
Abstract:In order to sovle the problems of tough relization of synchronized acquisition of information under the circumstance of multiple nodes, a dynamic autonomous synchronization method is proposed, which bulids a dynamic queue of IDs of frames to tell the time slot when the data to be sent and then realizes the synchronization of acquisition.The method has been tested in an information collection system and achieved great results.
Key words:CAN communication; frame identity queue; dynamic autonomous synchronization
DOI:10.3969/j.issn.2095-6649.2015.04.08
作者简介:李春艳(1967-),男,中国北方车辆研究所研究员,主要研究方向:车辆电子;陈敬轩(1992-),男, 北京理工大学机械与车辆学院交通工程硕士,主要研究方向:交通信息采集与信号处理。
Citation: LI Chunyan, CHEN Jingxuan.A Design of a Dynamic Synchronized Method in CAN [J].The Journal of New Industrialization, 2015, 5(4): 55‒60.