《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于主控同步的CAN总线多点实时数据采集技术
基于主控同步的CAN总线多点实时数据采集技术
2016年微型机与应用第18期
王军1,2,曾献辉1,2
1. 东华大学 信息科学与技术学院,上海 201620; 2.数字化纺织服装技术教育部工程研究中心,上海 201620
摘要: RS-485总线与CAN总线是工业现场数据采集最常用的有线组网方式,它们均有各自的局限性。针对一类多节点网络的数据实时采集问题,提出了基于主控同步的CAN总线多点实时数据采集技术,将RS485总线主控思想应用于CAN总线的数据通信中,通过对各节点发送数据时间的同步,有效地避免了节点间数据冲突问题。实验结果证明了该方案能有效地提高数据传输的实时性和可靠性,解决了CAN总线访问冲突。
Abstract:
Key words :

  王军1,2,曾献辉1,2

  (1. 东华大学 信息科学与技术学院,上海 201620; 2.数字化纺织服装技术教育部工程研究中心,上海 201620)

       摘要:RS-485总线与CAN总线是工业现场数据采集最常用的有线组网方式,它们均有各自的局限性。针对一类多节点网络的数据实时采集问题,提出了基于主控同步的CAN总线多点实时数据采集技术,将RS485总线主控思想应用于CAN总线的数据通信中,通过对各节点发送数据时间的同步,有效地避免了节点间数据冲突问题。实验结果证明了该方案能有效地提高数据传输的实时性和可靠性,解决了CAN总线访问冲突。

  关键词:数据采集;CAN总线;主控同步;实时性

0引言

  现场数据采集一般有CAN总线与RS485总线[1]两种有线组网方式,但是RS485采用主从多址轮询的方式,实现多址接入,轮询周期随着节点数量的增大而加长,影响数据传输的实时性。而CAN总线是一种有效支持分布式控制或实时控制的串行通信网络,它可靠性高,且网络内的节点个数在理论上不受限制,各节点之间实现自由通信。CAN总线[2-3]具有多主发送、采用确定性的优先级仲裁机制等特点,保证了CAN总线数据通信的可靠性、实时性和灵活性。在数据通信过程中,如果出现碰撞,低优先级的节点会主动退出,而最高优先级的节点可以不受影响继续传输数据,从而大大节省了总线访问冲突[45]仲裁时间,保证了传输数据的实时性。但是,在数据采集这种特殊环境下,由于各个节点的数据的优先级都是相同的,因此本文在标准CAN总线的基础上,结合RS485的工作模式,提出了基于主控同步的CAN总线多点实时数据采集技术,它可以解决数据采集过程中总线冲突的问题,提高数据传输的可靠性与实时性。

  1RS-485工作模式

  RS-485是半双工的工作模式,任何时候只能有一点处于发送状态,它采用主从式多址轮询方式实现多址接入,也就是说所有的节点共用一条总线,主节点按照地址依次轮流查询各个从节点,被查询的从节点返回数据或者空操作。由此可以看出,随着节点的增多,轮询的周期也会变长,这对数据的实时性传输具有很大的影响。RS-485的网络结构示意图如图1所示。

图像 001.png

2CAN总线协议和仲裁机制

  CAN是一种有效支持分布式控制或实时控制的串行通信网络,CAN总线具有多主发送、采用确定性的优先级仲裁机制等特点,保证了CAN总线数据通信[6-7]的可靠性、实时性和灵活性。CAN总线的网络结构示意图如图2所示。

图像 002.png

  报文信号使用差分电压[8]传送,可以提高CAN总线传输数据的可靠性和传输距离。两条信号线分别为CANH与CANL。这两根线之间的电位差可以对应两个不同的逻辑状态进行编码。如果CANH-CANL>2,此时状态表示为逻辑 0,也可以叫作显性。如果CANH-CANL=0,此时状态表示为逻辑1,也可以叫作隐性。当总线上2个不同节点在同一位时间分别强加显性和隐性时,总线上呈现显性位,即显性位可以覆盖修改隐性位。电平标称值如图3所示。

图像 003.png

  在数据传输过程中,如果出现碰撞,低优先级的节点会主动退出,而最高优先级的节点可以不受影响继续传输数据,从而大大节省了总线冲突仲裁时间,保证了传输数据的实时性。但是这种静态优先级机制[9-10]的一个缺点就是不能均等地为高优先级和低优先级站点分配带宽,在网络负载很大时,低优先级站点会在多次竞争总线使用权时失败,从而导致低优先级站点消息传输产生不确定的延时,甚至无法发送。而在数据采集的环境下,各个节点采集到的数据没有优先级之分,所以CAN总线的静态优先级机制对于数据采集来说并不是最好的机制。

3主控同步的CAN总线

图像 004.png

  CAN总线的特点之一就是多主发送,各个站点在任何时候都可以随机发送数据,如果在某一个时刻有2个或2个以上的站点要发送数据,就要通过非破坏性仲裁机制进行仲裁来竞争总线的使用权,标识符数值小的站点即优先级较高的站点可以获得总线使用权,竞争失败的站点则需等待下次重新竞争。在数据采集中,每个节点的优先级都是相同的,所以本文提出了主控同步的CAN总线多点实时数据采集技术,流程图如图4所示。

  RS-485是主从结构,采用主从轮询的方式,主节点依次询问每个从节点。主从同步的CAN总线就是将主控节点应用在CAN总线上。

  3.1静态主控同步CAN总线

  静态主控同步CAN总线就是对CAN总线上的所有节点进行编号分别为1,2,3,…,n,所有节点都发送1次数据的时间称为周期T,每个节点发送数据时间为t=T/n,主控节点可以控制开始发送数据的时间,在总线空闲时,总线广播一次,此时可以发送数据,然后所有节点依次在自己规定的时间发送数据,第一个节点发送数据的时间为0-T/n,如果它的数据没有发送完就停止发送,则在T/n时刻第二个节点开始发送数据,在2T/n时刻第三个节点发送数据,以此类推下去,直到最后个节点发送完数据,只要保证T/n合适,就可以让每个节点顺利地传输数据。每个节点发送数据的时刻与时间段如图5所示。

图像 005.png

  CAN总线上的节点并不一定都是同时在线或者不在线,有可能突然故障或者断线,也有可能突然上线,这样节点发送数据就容易产生冲突。所以规定每个节点都是T/n的时间,不管该节点是否在线都占用T/n的时间段,以此来避免某个节点上线或者下线产生冲突。这是最简单的也是最容易实现的结构,虽然提高了数据传输的可靠性,但是会浪费时间,不管几个节点在线都需要一个周期T的时间才能进行下次数据的发送,传输的效率不高,对数据的实时性有一定的影响。

  3.2动态主控同步CAN总线

  由于静态主控同步的缺陷性,在其基础上本文又提出动态主控同步CAN总线来提高数据发送的实时性。在CAN总线初始化的时候,所有在线节点给主控节点报告自己在线的信息,此时,主控节点知道总线中所有节点的状态,然后将所有节点状态广播给每个节点。总线上所有上下线的节点如图6所示。

图像 006.png

  假如此时3和4号节点未上线,其余都正常上线且不会突然下线,那么,1号和2号正常发送数据,5号节点在2t~3t时间段内发送数据,其余的依次类推,则所有节点发完一次数据的时间为T-2t,比静态主控同步少了2t,总线的周期从T变成了T-2t,提高了数据传输的实时性。w是每个上线节点给主控节点汇报所需要的时间,V=Xw,X是不在线节点的个数,Y为在线节点的个数,X+Y=n,Y×t=T1。在实际情况中不可避免地会出现某些节点(假如节点5)突然下线的情况,如图7所示。

图像 007.png

  此时如果节点5突然从在线变成下线,所有节点收到的广播还是只有3和4不在线,其余都在线,那么5号节点仍会占用一个t,6号节点仍然在第4个时间段t发送数据,保证了所有节点都可以按照自己的编号依次发送数据,当所有在线节点发送完数据后,主控节点根据收到的数据就可以判断哪些节点(例如5号节点)中途下线,然后将这些信息再广播到总线,之后其余在线节点就可以调节自己发送数据的时刻,那些下个周期下线的节点(5号)就不占用时间段,从而减少了时间的浪费,缩短了数据发送时间周期。

  某个节点(4号)突然上线时,此时主控节点广播的时候还是3与4号节点不在线,其余节点都在线的状态,如图6所示。此时如果4号节点突然上线,但是所有节点收到的广播还是3与4号节点不在线,实际上4号节点已经在线,如图8所示。

图像 008.png

  所有节点在依次发送完数据后会暂停时间段V,使得上线节点可以及时向总线汇报,使其在下个周期可以发送数据。

  开始时主控节点广播当前上线和下线的节点,每个在线节点收到的信息应该还是3和4号节点不在线,其余节点都在线,而实际上4号节点已经上线,要将自己的状态汇报给主控节点,如果没有缓冲时间片V,在2号节点发送完数据后5号节点发送数据,此时就会出现5号节点发送数据,同时4号节点也发送自己上线的信息,从而发生冲突。时间片V就解决了发送数据与汇报状态的冲突问题。如图8所示,如果只有3和4号节点不在线,那么V=2w,在第一个w里,由于4号节点上线,会向主控节点汇报自己在线,下个周期主控节点会将最新的从节点状态广播到总线上,因此从节点会重新安排上线节点(4号)发送数据的时刻与顺序。如果出现连续两个节点上线,那么这两个节点就会出现仲裁,号数小的节点会优先向主控节点汇报,号数大的节点在下个w时间段内汇报给主控节点。这样就解决了汇报状态与发送数据的冲突问题。下个周期主控节点会刷新节点状态广播给所有的在线节点,刚上线的节点就拥有一个t时间段来发送数据,这样就解决了动态主控同步CAN总线的节点突然上下线的问题。

4设计仿真实验及结果分析

  为了验证在数据采集时,主控同步的CAN总线可以解决冲突问题和提高数据可靠性,设计了图9所示的仿真平台。

图像 009.png

  主控同步的CAN总线在采控集数据时,当时间周期为T时,所有节点都发送一次采集的数据的时间就是T,T越小,每个节点所分到的时间t就越短,当T小到某一个值时,可能会出现所有节点的数据都无法发送完,就会出现数据采集失败。所以只有当t≥tmax时,每个节点都可以顺利地向总线发送数据,tmax为所有测试节点中正常发送数据所需时间最长的时间。同时T=T1+V=Yt+Xw,由于w<t,因此T=T1+V<nt,随着X的增多,Y的减少,T=T1+V越来越小,动态地减小了数据发送的周期,提高了实时性。

  对于标准CAN,由于每个节点之间是不相关的,因此它们是独立同分布的。假设总线空闲时每个节点发送数据的概率为P,数据发送过程中会发生冲突的概率为Px,总线空闲同时也没有节点发送数据的概率为P0=C0nP0(1-P)n,总线空闲同时只有一个节点会发送数据的概率为P1=C1nP1(1-P)n-1,则Px=1-P0-P1=1-C0nP0(1-P)n-C1nP1(1-P)n-1=1-(1-P)n-nP(1-P)n-1。但是主控同步的CAN因为主控节点的缘故使得发生冲突的概率为0。标准CAN与主控同步CAN的实验结果对比如表1所示。

图像 010.png

  通过表1对比可以看出主控同步CAN总线的冲突的概率为0,优于标准CAN,静态主控同步CAN的数据传输的实时性比动态的差,因为在t和w变化的条件下,X和Y也动态地变化,从而动态地改变了总体消耗的时间T=T1+V,最终提高了数据传输的实时性,由此看出动态主控同步CAN更加适合数据采集的环境。

5结论

  本文通过分析RS485和CAN总线的仲裁机制,在标准CAN的基础上提出了基于主控同步的CAN总线,它能

  够解决数据冲突的问题,避免了仲裁,提高数据传输的实时性与可靠性。静态主控同步的CAN总线可以提高数据的可靠性,但是会浪费一些时间段T/n,所以在此基础上提出了动态主控同步的CAN总线。通过对比发现,动态主控同步可以提高数据传输的实时性和可靠性,所以在数据采集这个特殊的背景下,动态主控同步的CAN总线有着自己独特的优势。

  参考文献

  [1] 彭刚,徐庆江.基于STM32单片机的RS485总线分布式数据采集系统设计[J].伺服控制,2011(2):64-66.

  [2] 龙志强.CAN总线技术与应用系统设计[M].北 京: 机械工业出版社,2013.

  [3] 邓婕.CAN 总线通信原理分析[J].电子设计工程,2012,20(7):104-106.

  [4] 刘向明,方建安.CAN总线网络的实时性研究和改进[J].现代电子技术,2011,34(22):46-49.

  [5] DVIS R I,BURNS A,BRIL R J,et al.Controller area network (CAN) schedulability analysis:refuted,revisited and revised[J].RealTime Systems,2007,-35(3):239-272.

  [6] 纪文志,陈国忠,唐加山.基于 CAN 总线智能节点的设计与实现[J].微型机与应用,2012,31(2):44-46.

  [7] 陈瑛,宋俊磊,王典洪.CAN 总线在野外地震数据传输中的应用[J].电子技术应用,2013,39(9):34-36.

  [8] 牛跃听.CAN总线应用层协议实例解析[D].北京:北京航空航天大学,2014.

  [9] 孙鹏,沈显庆,周杰.CAN总线协议的改进及 性能验证[J].现代科学仪器,2010(5):35-37.

  [10] 陈飞,谢建.基于CAN总线的网络监控系统调度算法研究与改进[J].计算机与现代化,2015(1):92-95.


此内容为AET网站原创,未经授权禁止转载。