摘要:针对串口RS232和RS485总线在工业实时控制检测系统中的广泛应用,本文介绍并分析了串口通信网络的典型拓扑结构及其特点和具体使用问题。根据串口通信在实时控制监测系统中的特点,借鉴令牌总线思想和TCP/IP协议的控制方法,研究设计了一种适用于中小型分布式实时控制检测系统的串口令牌环网络通信协议,阐述了该协议的完整工作过程。最后,总结分析了该协议的应用范围和应用扩展性问题。
关键词:RS485总线;令牌总线;串口环;数据采集
1 引言
在数据通信、计算机网络以及工业上的分布式控制检测系统中,经常采用串行通信来完成信息交换。这类系统要求用最少的信号线来完成通信任务,由于RS485具有性能优异、组网简单的优点,在集中控制系统、分布式控制系统中的应用相当广泛,特别是在要求远距离传输的应用中[1]。RS485总线通信需要一对信号线,最远的传输距离大约为1200米,如果加上中继器则通信传输距离还可以延长。由于RS485总线与RS232串口的电平信号不一致,计算机的RS232串口必须通过RS232/RS485转换接口芯片与RS485总线连接在一起。
典型的控制检测系统中通常有上位机和下位机,下位机常常由单片机或嵌入式芯片为核心的数据采集电路模块构成,而PC机通常当成上位机使用,它们之间通过RS232/RS485通信来完成数据通信传输和数据分析处理显示等应用。这种上位机和多台下位机构成的控制检测网络中,下位机采集到的数据最终传输到上位机,因此采集数据的有效控制和传输成为非常重要的问题。本文针对RS232/RS485串口通信构成的网络结构和通信方式进行了分析,并结合桥梁检测应用实例设计了一种基于RS485总线的串口令牌环网络通信协议。
2 串口通信网络拓扑结构
常用的拓扑结构有总线型和环型结构。这两种拓扑结构的一个共同特点是节点共用通信介质及使用广播式通信方式。[2]
2.1 总线型拓扑结构
总线型结构由RS485总线连接而成,其结构如图1所示,下位机由单片机或嵌入式芯片构成的多个分布式排列的智能测控设备组成,这些设备包括串口接口电路,所有的TXD端连接在RS485总线的同一信号线上,所有的RXD端连接在另外一根信号线上。上位机的RS232串口接入RS232/RS485转换器,其RS485的TXD/RXD分别接入到RS485总线上的对应信号线上,这样上位机和所有下位机都是并联接入在两根信号线上,从而构成基于RS485总线的总线型通信网络拓扑结构。
图1 总线型拓扑结构
图2 环型拓扑结构
2.2 环型拓扑结构
环型结构是在RS485总线上将上位机和多个下位机串联起来构成一个环路通信网络。此网络无路径选择问题。为了提高通信的抗干扰能力,采用20mA电流环串行通信接口,20mA电流环具有较强的抗干扰能力,同时也可以延长通信距离。在较强的工业干扰条件下,以9600波特率进行通信,任意两台下位机之间的安全通信距离可达1600m。所有下位机和上位机之间仅需两条连接线,依次将前一个下位机或上位机的串口TXD端接到后一台的RXD端,最终组成一个环型通信网络[3],其拓扑结构如图2所示。
3 串口令牌环通信结构
3.1 串口通信网的类型研究
总线型结构在物理连接上稳定可靠,但上位机(主机)和下位机(从机)之间的通信传输共用两根信号线,这样需要设计合理的通信协议来控制数据的传输。比较典型的采用主从结构的通信模式:从机不主动发送命令或数据,一切都由主机控制,各从机之间也不通信,即使有信息交换也必须通过主机转发[1]。而环型结构网络可按照物理连接顺序进行数据传输,数据与指令的传输是单向的,为了避免冲突常在这种结构中采用令牌环介质访问控制。但当某节点(上位机和下位机均简称为节点)出现通信故障时,将影响整个网络的数据通信。
为了克服以上两种结构中的弊端,我们结合了这两种结构的特点,在总线型结构基础上通过设计一种基于RS485令牌总线的串口令牌环网络通信协议来实现稳定可靠的数据通信。
3.2 令牌总线网拓扑结构
IEEE802.4标准所描述的令牌总线网,物理结构为总线型结构,逻辑结构为环型结构,采用令牌法进行存取控制,对总线使用权的分配建立虚拟逻辑环[4]。令牌是在网络上传递的起标志作用可识别的数据帧,拥有令牌的通信节点可占有通信介质,完成一次数据通信过程,随后令牌必须被传到逻辑环上的下一节点,使网络上其他节点都可获得通信介质占有权。
图3为基于RS485总线的令牌总线网络结构,一台主机和多台从机通过串口连接在相同的RS485的通信总线上。每个节点的地址由两部分组成:物理地址和逻辑地址。物理地址是唯一的。逻辑地址是在加入环网时由主机分配的号码,它是赋予令牌和拥有令牌的标识。
图3 串口令牌总线拓扑结构
(图中为了简洁用一根线代替数据线)
该网络按照节点号顺序连接成一个逻辑环(运行中可能会变动)。运行期间环中有一个令牌帧绕环传递(按节点号递增顺序传递),只有拥有令牌的节点才有数据发送权,令牌持有者在完成通信任务或持令牌超时时,将令牌传递给自己的下一节点移交发送数据权。这样任何时刻只有一个节点能够得到令牌,避免了多机同时发送数据而产生冲突。
4 串口令牌环通信协议
该网络物理结构是总线型的,所以每个节点发送的数据帧,其余节点均可收到。节点在收到数据帧后检查目的地址是否为本机地址或广播地址,如果相同则接收处理。协议中规定主机的物理地址和逻辑地址均设为0x00。每个从机节点都设有下一节点物理地址ID,如果该从机收到一个属于自己的令牌帧,在发送完数据后应该将令牌发送到它的下一节点,下一节点的处理类似。本文设计的协议中均以物理地址为准,而令牌传递在从机之间按下一节点地址为准,在主机中按逻辑地址升序发送令牌。
4.1 协议帧结构设计
串行通信是以字节为单位进行发送与接收,因此该通信协议的字段以字节为单位。为了区分帧数据,每帧开头设置一个字节的空前导帧头,表示新协议帧的开始。对于某些变长数据帧可定义FF为帧尾。为了判断帧数据的有效性通常加入一个字节的校验和SUM。按照协议帧结构的设计功能不同,可以划分为命令指令帧和数据帧两种结构。
(1)广播时间指令帧
广播指令定义为F0,对网络中各从机节点的时间进行同步,都以主机时间为基准,当环网络中从机节点接收到该指令帧时,修改自己当前时间为同步时间。
(2)令牌指令帧
令牌指令定义为FB,主机和从机用来控制RS485令牌总线上发送数据的权限,当目的地址接收到该帧时表示可使用总线发送数据,如果该节点有数据则回传数据给主机。
(3)从机回传数据帧
回传数据指令定义为FC,该数据帧是当从机接收到令牌,并且该机上存在数据需要回传送给主机时,由从机按照此格式发送数据给主机。
(4)回传应答指令帧
应答指令定义为FD,主机接收到某从机发送来的数据后,主机给从机的回应应答消息,目的地址即为相应的从机地址,一个字节的ACK应答结果为确认正常或出错重传。
(5)更新下一节点地址指令帧
更新指令定义为FE,当主机判断认为某从机脱离令牌环网,给该从机的上一跳节点发送更新此节点的下一跳为脱离环网的节点的下一跳,使整个环网保持快速通信、避免阻塞。
4.2 协议工作原理
该协议借鉴了轮询技术来共享RS485总线,并加入了令牌环的产生、维护控制和令牌传递,主机和从机通信采用了ARQ停等协议,从机之间只是简单的令牌传递。[5]
4.2.1 令牌环网的初始化建立
当主机和从机开始运行时,所有从机的下一跳的逻辑地址初始为0xFF,主机的下一跳为0x00,即主机自成一单环。主机已知从机物理地址及逻辑地址,按从机列表顺序选择一个没有加入环网络的从机,给其发送FE指令尝试加入网络,确定该从机的下一跳节点。加入第一个从机节点的下一跳为主机地址,加入第二个从机节点的下一跳为加入第一个从机地址,依此类推。开始时由主机主动请求从机入网,若从机都为正常状态则很快建立令牌环网络。而对于故障节点,请求加入在规定时间或次数内都失败则放弃该节点。
4.2.2 令牌环网的正常工作
正常工作情况下各从机处于侦听总线状态,主机或从机发出传令牌指令,各从机都可收到,若从机与令牌指令的目的地址不匹,该从机不反应,若匹配则该从机做出如下响应:
(1)若该从机有数据要回送给主机,则给主机发回传数据帧指令。若主机收到的数据出错,则要求从机重传。从机收到应答帧后判断是否重传,若重传则再次给主机发送数据,如果连续三次失败则放弃。若正确或重传次数到则发出令牌帧,将令牌交给下一节点。
(2)如果该从机没有数据则直接发出令牌帧,将令牌交给下一节点。
4.2.3 令牌环网的故障处理
在系统运行期间不可避免地出现故障,大致可以分为三种情况:[6]
(1)令牌持有者存在故障,不能发回数据或传递令牌。该故障可利用主机的定时机制来处理。主机在每次发出令牌时启动定时器,时间为令牌环绕一周的最大时间。在这段时间内主机既没重新收到令牌帧,也没收到回传数据帧,则认为环内令牌丢失,此时主机重新产生一个令牌并重构环网络[7]。若在定时时间内收到错误的回传数据帧,则要求重传;若主机已连续三次向某从机发出重传命令,但都没有收到正确的回传数据,则认为该从机出现故障,主机记录该从机到故障从机表中,且主机向该从机的上一跳节点发送更新指令,要求更改其下一跳节点为故障从机的下一跳节点,这样将该故障从机节点从逻辑环中退出。
(2)非令牌持有者存在故障,不能接收令牌。处理办法是将该节点从逻辑环中移出。
(3)重复令牌的处理。同一节点(包括主机)以第一次收到的令牌为准,以后收到的丢弃。而且每节点在处理完其他工作(比如发送数据)后再传递令牌。
5 总结
本文介绍的是在实时控制检测系统中所采用的一种基于RS485总线的串口令牌环通信网络。笔者研究提出的基于RS485总线的串口令牌环通信借鉴了IEEE802.4令牌总线的原理思想和802.3(CSMA/CD)标准中的ARQ停等协议思想。解决了传统的主从式通信方式的网络阻塞瓶颈问题,与主从式相比在实时性和可靠性上有较大提高。本文设计的通信网络适合中小型分布式控制检测系统的应用,可将其应用于桥梁健康实时检测系统中。但在具体应用中还需要修改协议指令格式,令牌环的传递控制有待进一步改进,以更进一步提高实时性、可靠性和准确性。
本文作者创新点:借鉴了令牌总线原理和ARQ停等协议思想,结合RS485总线特点、总线型网络和环型网络结构特点,研究设计了基于RS485总线的串口令牌环通信协议,并通过该协议的设计有效解决了传统主从式通信方式的通信阻塞问题,改进了实时性和可靠性有效性等性能。
参考文献:
[1] 张冰,苏燕辰.基于RS485总线技术的微机与智能仪表的双向通信设计[J].中国测试技术,2005,31(1):84-86.
[2] 马彪,张国德.基于RS-485的计算机监控网络的开发[J].本溪冶金高等专科学校学报,2003,5(1):21-23.
[3] 刘新平,孙士明,纪友芳.基于单片机的环型数据通信网络[J].微计算机信息,2002,18(9):40-41.
[4] 薛娴,张世英,华明军等.基于令牌总线网的实时通信[J].电气时代,2002,(7):56-57.
[5] 邹海,姜建国,李朝峰,向南.基于串口通讯的分布式大坝监测自动测控系统[J].工业控制计算机,2003,16(2):23-24.
[6] 邓文浪,邓文波.一种令牌总线式工业测控网的设计与实现[J].微型机与应用,2000,(8):48-49.
[7] 史俊花,陆红,卫庆.虚拟令牌传递串行通讯方式在控制系统中的应用[J]. 网络与计算机技术,2002,(2):12-13.
评论