CAN-bus(控制器区域网络)总线主要用于汽车内部测量与控制中心之间的数据通信,它定义了OSI网络模型的数据链路层和部分物理层(见图1)。
由于CAN-bus良好的性能,在世界范围内广泛应用于其他领域当中,如工业控制、楼宇建筑、电梯网络、电力通讯和安防消防等诸多领域,并逐渐成为这些行业的主要通讯手段。它具有传输可靠、实时性高、传输距离远、传输速率快、可方便扩充节点数、总线利用率高、数据出错率低,以及性价比极高等优势。
但是,CAN-bus2.0规范并没有定义应用层。实际应用中,用户需要选择一个合适的应用层协议,比如DeviceNet协议、CANopen协议,或者自行制定一个应用层协议。本文主要介绍另一个基于连接的可靠协议:iCAN协议的应用。
基于CAN-bus的iCAN协议
iCAN协议详细地定义了CAN报文中ID以及数据的分配和应用,并定义了设备的I/O资源和访问规则。iCAN协议结构如图2所示。
图 1:现场总线CAN-bus与OSI模型的关系
图2:iCAN协议通信层结构
1. iCAN协议的通讯模式
在任何一个iCAN的报文标识符中,指定了源节点地址(发送报文的节点编号)以及目的地址(接收报文的节点编号),即对于任何一个报文参与通讯的双方是确定的。因此iCAN协议中报文是面向节点的。
iCAN网络中设备之间的通讯是基于连接的,在网络中任何一个参与通讯的从站设备都必须和主站设备之间建立一个独立的通讯连接。正由于iCAN网络中设备之间的通讯是基于连接的,这样也为对任何一个设备的通讯进行监控提供了可能。在iCAN网络中,主控设备和从设备之间的通讯并不能够随机进行,主控设备和从设备之间必须首先建立一个连接。建立连接后,主控设备才能够与从设备进行通讯。
基于iCAN协议的CAN网络中,最常用的通讯方式是主从双向通讯方式,通讯由网络中的主控设备发起,接收到命令帧的设备返回响应帧。在主从通讯分为点对点方式和广播方式两种情况。为提高通信效率,充分利用CAN-bus多主和无损仲裁机制,在iCAN协议中也采用事件触发的通讯模式,包括定时循环发送和状态触发发送。
2.iCAN的网络管理
iCAN网络管理的主要任务是检测和显示网络中的错误,并通过服务以协调控制各个从站设备的通讯状态。
为保证通讯的正常,网络中的每一个通讯都需要进行监控,并在通讯出现异常时,采用适当的方式恢复通讯。例如对每个通讯均可通过监控其信息到达节点的时间,通过判断是否超时决定通讯是否异常,并采取相应的行动。在iCAN网络中通讯的监控是基于对连接的监控实现的。iCAN网络管理可以包括节点控制和通讯控制,节点控制用于控制想要参与分布式应用的节点的初始化,这样就可以对单个或所有节点的通信状态进行同步控制。iCAN网络中的节点控制通过定义iCAN设备的网络访问状态机制而实现,iCAN网络访问状态机制规定了节点在网络中启动时必须执行的状态图,详细规定了节点各状态之间切换的规则,并可以通过特定的报文对节点进行控制。
图3:iCAN设备网络初始化过程
iCAN协议的通讯控制用于对网络通讯报文进行监控,保证在通讯异常时,通过适当的方式能够恢复通讯。通讯的控制是以主站设备和从站设备之间的通讯时间间隔作为依据的。因此在iCAN网络中,通讯是否异常是通过“超时机制”判断的。为实现通讯控制,在iCAN协议中定义了MAC ID检测定时器、连接定时器、循环传送定时器。
在MAC ID检测中会使用到一个固定时间长度的MAC ID检测定时器,通常设定为1秒。iCAN设备在成功发送MAC ID检测报文后,会启动MAC ID检测定时器,如果定时器计时到达1秒时,设备还没有接收到MAC ID检测报文,则进入可操作状态。
在一个连接中,通过连接定时器实现连接通讯响应的超时机制。该连接定时器通过主站通讯定时参数进行设定,如果在通讯过程中,连接定时器计数满则意味通讯超时,此时从站设备会自动删除连接。
循环传送定时器用于触发传送。在一个连接中当循环传送定时器超时后,从站设备发送报文。循环传送定时器通过定时循环参数进行设定。当连接建立时,并设置了循环定时参数后,从站设备的循环传送定时器被激活。当从站设备的循环传送定时器超时后,主动发送报文到主控节点。
iCAN在ADSL通信电杆检测中的应用
ADSL通信电杆的检测,包括倾斜角度、电缆盗窃等是通过工作人员到现场检测的方法逐个记录,且其分布散、数量大,所以费时费力。建立一个分布式的采集网络,当通信电杆的倾斜达到一定角度时自动产生一个报警信号并通知主控PC,或检测到有人在爬杆窃取电缆时产生一个报警信号并通知主控PC,并支持现场报警,这是实现ADSL通信电杆自动监控的有效方法。
ADSL每隔3000m~5000m有一个中继局,中继局中有互联网网络接口,通过ADSL可直接上互联网。中继局之间每隔20m~30m架设一个通信电杆,每个中继局之间大概有150个通信电杆。
网络拓扑
ADSL通信电杆检测网络可采用CAN-bus和以太网构成的两级结构,每个通信电杆上都有集成iCAN协议的8路开关量检测AnyCAN模块。将两个中继局之间的所有AnyCAN模块和CANET-100/200都连接到CAN总线上,并在总线的两端串接120欧姆的终端匹配电阻,CANET-100/200的以太网接口在ADSL中继局中连入互联网。
ADSL总监控站的主控PC可以通过一系列固定IP地址,访问多个ADSL中继局的CANET-100/200设备。设备使用不同的端口号区分不同的iCAN网络。由于CANET-100/200设备的以太网速率可达10Mbps,而CAN-bus工作在10Kbps的通讯速率,主控PC可连接多个iCAN网络,同时需要注意iCAN网络的通讯数据流量管理。
网络参数和性能分析
ADSL通信电杆检测网络不需要实时响应。单个iCAN网络长达5000m,选用10Kpbs通信波特率,采用2mm2的非屏蔽双绞线作为通信电缆,所有节点设定在轮循方式下工作。可设置主站通讯定时参数(CyclicMaster)为0,从站设备的连接定时器不装载,不存在超时判断,建立连接后可随时进行通讯。轮循时iCAN帧的数据长度为2个字节,对应的iCAN报文长度为83个位(忽略位填充时间),所以iCAN网络轮循一周的时间为:
83位 * 0.1ms * 2 * 150节点 / 1000 = 2.49 s
要使网络可靠工作,应保证网络工作在60%的总线负载率下,控制iCAN网络轮循时间为:
2.49s / 60% = 4.15s
因为互联网网络环境复杂,PC软件必须保证数据的可靠性,PC软件为每个IP端口组合分配一个定时器并设定初值。当发出一个报文时,启动定时器,当收到报文后,复位定时器并停止计时。如定时器超时,说明在规定的时间内没有收到应答报文,查询报文或应答报文可能在互联网通讯的时候丢失。此时,PC软件自动重发查询报文,重新启动定时器。
主站软件的编写
CANET-100/200设备提供有iCAN协议API驱动函数,支持VC++、VB、Delphi、C++ Builder、LabView等软件开发环境。PC软件开发的主要流程如下图4所示。
图4:PC软件开发的主要流程
通过使用ZOPC-Server服务器软件,可以在工业标准的组态环境中开发ADSL通信电杆检测网络的PC监控软件。常用的组态环境都支持OPC协议,比如组态王KingView、昆仑通态MCGS、三维力控,国外的如Intouch、iFix等。由于ZOPC-Server服务器软件在内部已有超时和重发机制,可以保证CANET-100/200设备管理iCAN网络的实时性与可靠性。
本文小结
ADSL通信电杆分散度大、距离远的特点使得CAN网络是其最好的解决方案。iCAN协议的高可靠性和易使用性可以快速建立一个可靠的CAN网络。我国ADSL电杆架设数量巨大,采用网络化的数据采集控制将大大降低人力投入并提高ADSL服务质量。