基于主控同步的CAN总线多点实时数据采集技术
2016-10-28曾献辉
王 军,曾献辉
(1. 东华大学 信息科学与技术学院,上海 201620; 2.数字化纺织服装技术教育部工程研究中心,上海 201620)
基于主控同步的CAN总线多点实时数据采集技术
王军1,2,曾献辉1,2
(1. 东华大学 信息科学与技术学院,上海 201620; 2.数字化纺织服装技术教育部工程研究中心,上海 201620)
RS-485总线与CAN总线是工业现场数据采集最常用的有线组网方式,它们均有各自的局限性。针对一类多节点网络的数据实时采集问题,提出了基于主控同步的CAN总线多点实时数据采集技术,将RS-485总线主控思想应用于CAN总线的数据通信中,通过对各节点发送数据时间的同步,有效地避免了节点间数据冲突问题。实验结果证明了该方案能有效地提高数据传输的实时性和可靠性,解决了CAN总线访问冲突。
数据采集;CAN总线;主控同步;实时性
引用格式:王军,曾献辉. 基于主控同步的CAN总线多点实时数据采集技术[J].微型机与应用,2016,35(18):69-71,77.
0 引言
现场数据采集一般有CAN总线与RS-485总线[1]两种有线组网方式,但是RS-485采用主从多址轮询的方式,实现多址接入,轮询周期随着节点数量的增大而加长,影响数据传输的实时性。而CAN总线是一种有效支持分布式控制或实时控制的串行通信网络,它可靠性高,且网络内的节点个数在理论上不受限制,各节点之间实现自由通信。CAN总线[2-3]具有多主发送、采用确定性的优先级仲裁机制等特点,保证了CAN总线数据通信的可靠性、实时性和灵活性。在数据通信过程中,如果出现碰撞,低优先级的节点会主动退出,而最高优先级的节点可以不受影响继续传输数据,从而大大节省了总线访问冲突[4-5]仲裁时间,保证了传输数据的实时性。但是,在数据采集这种特殊环境下,由于各个节点的数据的优先级都是相同的,因此本文在标准CAN总线的基础上,结合RS-485的工作模式,提出了基于主控同步的CAN总线多点实时数据采集技术,它可以解决数据采集过程中总线冲突的问题,提高数据传输的可靠性与实时性。
1 RS-485工作模式
RS-485是半双工的工作模式,任何时候只能有一点处于发送状态,它采用主从式多址轮询方式实现多址接入,也就是说所有的节点共用一条总线,主节点按照地址依次轮流查询各个从节点,被查询的从节点返回数据或者空操作。由此可以看出,随着节点的增多,轮询的周期也会变长,这对数据的实时性传输具有很大的影响。RS-485的网络结构示意图如图1所示。
图1 RS-485网络结构示意图
2 CAN总线协议和仲裁机制
CAN是一种有效支持分布式控制或实时控制的串行通信网络,CAN总线具有多主发送、采用确定性的优先级仲裁机制等特点,保证了CAN总线数据通信[6-7]的可靠性、实时性和灵活性。CAN总线的网络结构示意图如图2所示。
图2 CAN总线网络结构示意图
报文信号使用差分电压[8]传送,可以提高CAN总线传输数据的可靠性和传输距离。两条信号线分别为CANH与CANL。这两根线之间的电位差可以对应两个不同的逻辑状态进行编码。如果CANH-CANL>2,此时状态表示为逻辑 0,也可以叫作显性。如果CANH-CANL=0,此时状态表示为逻辑1,也可以叫作隐性。当总线上2个不同节点在同一位时间分别强加显性和隐性时,总线上呈现显性位,即显性位可以覆盖修改隐性位。电平标称值如图3所示。
图3 双绞线CAN总线电平标称值
在数据传输过程中,如果出现碰撞,低优先级的节点会主动退出,而最高优先级的节点可以不受影响继续传输数据,从而大大节省了总线冲突仲裁时间,保证了传输数据的实时性。但是这种静态优先级机制[9-10]的一个缺点就是不能均等地为高优先级和低优先级站点分配带宽,在网络负载很大时,低优先级站点会在多次竞争总线使用权时失败,从而导致低优先级站点消息传输产生不确定的延时,甚至无法发送。而在数据采集的环境下,各个节点采集到的数据没有优先级之分,所以CAN总线的静态优先级机制对于数据采集来说并不是最好的机制。
3 主控同步的CAN总线
图4 主控同步的CAN总线系统流程图
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所示。
图5 节点发送数据时刻图
CAN总线上的节点并不一定都是同时在线或者不在线,有可能突然故障或者断线,也有可能突然上线,这样节点发送数据就容易产生冲突。所以规定每个节点都是T/n的时间,不管该节点是否在线都占用T/n的时间段,以此来避免某个节点上线或者下线产生冲突。这是最简单的也是最容易实现的结构,虽然提高了数据传输的可靠性,但是会浪费时间,不管几个节点在线都需要一个周期T的时间才能进行下次数据的发送,传输的效率不高,对数据的实时性有一定的影响。
3.2动态主控同步CAN总线
由于静态主控同步的缺陷性,在其基础上本文又提出动态主控同步CAN总线来提高数据发送的实时性。在CAN总线初始化的时候,所有在线节点给主控节点报告自己在线的信息,此时,主控节点知道总线中所有节点的状态,然后将所有节点状态广播给每个节点。总线上所有上下线的节点如图6所示。
图6 节点上下线示意图
假如此时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所示。
图7 下线节点示意图
此时如果节点5突然从在线变成下线,所有节点收到的广播还是只有3和4不在线,其余都在线,那么5号节点仍会占用一个t,6号节点仍然在第4个时间段t发送数据,保证了所有节点都可以按照自己的编号依次发送数据,当所有在线节点发送完数据后,主控节点根据收到的数据就可以判断哪些节点(例如5号节点)中途下线,然后将这些信息再广播到总线,之后其余在线节点就可以调节自己发送数据的时刻,那些下个周期下线的节点(5号)就不占用时间段,从而减少了时间的浪费,缩短了数据发送时间周期。
某个节点(4号)突然上线时,此时主控节点广播的时候还是3与4号节点不在线,其余节点都在线的状态,如图6所示。此时如果4号节点突然上线,但是所有节点收到的广播还是3与4号节点不在线,实际上4号节点已经在线,如图8所示。
图8 上线节点示意图
所有节点在依次发送完数据后会暂停时间段V,使得上线节点可以及时向总线汇报,使其在下个周期可以发送数据。
开始时主控节点广播当前上线和下线的节点,每个在线节点收到的信息应该还是3和4号节点不在线,其余节点都在线,而实际上4号节点已经上线,要将自己的状态汇报给主控节点,如果没有缓冲时间片V,在2号节点发送完数据后5号节点发送数据,此时就会出现5号节点发送数据,同时4号节点也发送自己上线的信息,从而发生冲突。时间片V就解决了发送数据与汇报状态的冲突问题。如图8所示,如果只有3和4号节点不在线,那么V=2w,在第一个w里,由于4号节点上线,会向主控节点汇报自己在线,下个周期主控节点会将最新的从节点状态广播到总线上,因此从节点会重新安排上线节点(4号)发送数据的时刻与顺序。如果出现连续两个节点上线,那么这两个节点就会出现仲裁,号数小的节点会优先向主控节点汇报,号数大的节点在下个w时间段内汇报给主控节点。这样就解决了汇报状态与发送数据的冲突问题。下个周期主控节点会刷新节点状态广播给所有的在线节点,刚上线的节点就拥有一个t时间段来发送数据,这样就解决了动态主控同步CAN总线的节点突然上下线的问题。
4 设计仿真实验及结果分析
为了验证在数据采集时,主控同步的CAN总线可以解决冲突问题和提高数据可靠性,设计了图9所示的仿真平台。
图9 仿真平台结构
主控同步的CAN总线在采控集数据时,当时间周期为T时,所有节点都发送一次采集的数据的时间就是T,T越小,每个节点所分到的时间t就越短,当T小到某一个值时,可能会出现所有节点的数据都无法发送完,就会出现数据采集失败。所以只有当t≥tmax时,每个节点都可以顺利地向总线发送数据,tmax为所有测试节点中正常发送数据所需时间最长的时间。同时T=T1+V=Yt+Xw,由于w 表1 标准CAN与主控同步CAN对比结果 通过表1对比可以看出主控同步CAN总线的冲突的概率为0,优于标准CAN,静态主控同步CAN的数据传输的实时性比动态的差,因为在t和w变化的条件下,X和Y也动态地变化,从而动态地改变了总体消耗的时间T=T1+V,最终提高了数据传输的实时性,由此看出动态主控同步CAN更加适合数据采集的环境。 本文通过分析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. Multi-point real-time data capture technique for CAN bus based on master control synchronization Wang Jun1,2,Zeng Xianhui1,2 (1.College of Information Science and Technology, Donghua University, Shanghai 201620, China; 2. Engineering Research Center of Digitized Textile &Apparel Technology, Ministry of Education, Shanghai 201620, China) RS-485 bus and CAN bus are the most commonly used wired networking mode for data capturing in the industrial field , but both have their own limitations. Aiming at the problem of real-time data capturing on multi-point network,this paper proposes multi-point real-time data capture technique for CAN bus based on master control synchronization,which applies the thought of the RS-485 bus master control to data communication of CAN bus.It can effectively avoid data conflicts by the time synchronization of sending data to every point. The experimental results show that the new method can greatly improve the efficiency and reliability of data transmission and avoid access conflicts of CAN bus. data capture; CAN bus; master control synchronization; real-time TN919 ADOI: 10.19358/j.issn.1674- 7720.2016.18.020 2016-03-29) 王军(1990-),通信作者,男,硕士研究生,主要研究方向:嵌入式智能系统。E-mail:297012858@qq.com。 曾献辉(1974-),男,博士,副教授,主要研究方向:数据挖掘,智能优化问题、决策与分析。5 结论