一种全双工智能总线的研究

2018-04-11 02:48邬宝寅
自动化仪表 2018年2期
关键词:发送数据全双工差分

张 莉,邬宝寅

(1.郑州科技学院机械工程学院,河南 郑州 450064;2.新天科技股份有限公司,河南 郑州 450001)

0 引言

现场总线技术是当今自动化领域发展的热点之一[1]。常用的总线有半双工非主从式和全双工主从式两种通信方式。半双工非主从式[2]总线上任意两个设备都可以传输数据,总线系统构成比较灵活;但每个设备要约定一个地址,且任意时刻只能有一个设备向总线上传数据;如两个或多个设备同时发送数据,则数据会丢失,甚至会损坏硬件。因此,设备在发送数据时,首先要判断总线是否处于空闲状态。若采用令牌环方式,可防止传输冲突并传输大量数据,但协议复杂、实时性差;若采用实时通信方式,则实时性好,但通信不能太频繁,否则数据传输会产生冲突。RS-485总线[3]、CAN总线[4]、Profibus总线[5]以及大多数现场总线采用半双工主从式通信。如果要求设备节点能及时响应主机的命令,则需要采用全双工的串行数据通信[6]。常见的采用全双工主从式通信现场总线有RS-422/232总线。这些总线方式可传输大量数据,实时性好,但从机之间不能通信,因此限制了系统的可扩展性和设备的数量。

为解决上述问题,设计了一种全双工智能总线,增强了总线通信实时性、增加了设备数量,并且使任意设备之间都可以频繁传输数据。

1 设计要点

为了实现总线的全双工通信功能,总线必须设计两路差分信号,且每路信号都是单向传送数据。将这两路信号分别称为上行信号和下行信号,其沿相反的方向在总线上传送数据。挂载在总线上的设备由带有通用异步接收发送器(universal asynchronous receiver/transmitter,UART)的微控制器(microcontroller unit,MCU)构成。UART的发送端可以将数据分别发送至上行信号或下行信号,接收端可以分别从上行信号或下行信号中接收数据。总线节点必须具备这种结构,以实现任意两个节点之间的全双工通信。

为了使通信距离和速率不受总线节点数量的影响,每个通信节点都要进行信号中继[7],使信号在该节点上得到加强,以扩大传输距离。该方法可保证总线上所有间距相同的设备都能得到相同强度的信号,从而使传输距离只受相邻两节点间距离的限制,而不受节点数量的影响。

理论上,信号中继可以无限延长通信距离。由于每个节点都有信号中继,所以每个节点的差分发送器只有单一的负载,保证了数据传输的稳定性,只是相隔较远的节点之间会有较大的通信延迟。

2 硬件设计

2.1 总线结构

基于以上设计要点,本文设计的总线结构如图1所示。该总线由上行信号和下行信号这两路差分信号构成,需要两组双绞线。每路信号只能单向传输,两路信号朝相反的方向传输数据。每个总线设备包含两个总线接口(A口和B口),通过这两个接口串联在总线中。每个设备的A口只能与其他设备的B口相连。

图1 总线结构图

在单台总线设备内部,A口包含一个下行信号的差分接收器和一个上行信号的差分发送器;B口包含一个下行信号的差分发送器和一个上行信号的差分接收器。故下行信号从设备A口进入,B口输出;上行信号从设备B口进入,A口输出。按照这种方式,信号所穿越的设备可以起到信号中继加强的作用,保证无论总线上有多少设备,每个差分发送器都只有一个接收器的负载。信号传输距离只受相邻两设备之间距离的影响,而不受设备数量的影响,确保信号可以无损通过总线上的每一个设备,实现较远距离的传输。

下行信号或上行信号通过差分接收器,转变为双晶体管逻辑(transistor transistror logic,TTL)信号进入设备,再分别通过一个三态门后送入差分发送器,转变为差分信号输出。三态门使能端由设备I/O口控制。同时,两个差分接收器产生的TTL信号可分别送入设备内的两个UART的数据输入端,从而将上行、下行数据发送至设备内部。两个UART的数据输出端分别与上行、下行差分发送器的TTL输入端相连,可将设备输出的数据发送至上行、下行方向。

若该设备需要向上行(下行)方向发送数据,则上行(下行)方向的三态门断开,同时上行(下行)方向的差分发送器相连的UART输出端输出数据。若设备无需向上行(下行)方向发送数据,则该方向的三态门闭合,上行(下行)方向数据从总线进入设备后,通过三态门,再通过差分发送器输出;而UART输出端此时置于高阻状态。无论设备是否需要发送数据,两个UART数据接收端均可监听、接收上行、下行方向输入的数据。故通过控制三态门通断和UART数据输出端状态,可控制总线数据穿过设备或截断总线数据,使设备数据输出到总线,且上行、下行方向独立工作。

2.2 电路设计

为实现以上总线结构,采用MAX488作为差分收发器。每个MAX488内含有一个收发器和一个发送器。每台设备中采用两个MAX488,分别作为A口和B口的接口芯片。采用两个单三态门74HC1G125,分别连接两个MAX488接收器的输出端和发送器的输入端,两个74HC1G125的使能端与微控制器的GPIO相连,两个MAX488的TTL输出端和输入端分别与微控制器的两个UART的数据输入端和输出端相连。电路采用的微控制器至少具备两个UART,且UART输出口可设为高阻状态,如STM32F103等。差分信号接口需并联静电释放(electro-static discharge,ESD)器件,以起到保护作用。

3 基本协议

上述硬件结构仅能在物理层面实现总线任意设备之间的全双工异步通信。在具体实现时,还需要通过可编程器件执行该总线系统的基本通信协议[8-10]。这里将总线设备的状态定义为透传接收模式和抢占发送模式:当设备处于透传接收模式,设备内三态门闭合,总线数据可以穿过该设备,经该设备的中继作用传向相邻设备;当设备处于抢占发送模式,设备内三态门断开,总线数据在该设备处被截断,而由设备内部向数据输出方向发送数据。上行方向和下行方向各自具有独立的透传接收模式和抢占发送模式,且无论处于何种模式,设备都能分别通过两个UART接收端接收上/下行数据。设备内微控制器应包含三个数据缓存区,分别是发送缓存区T_Temp和对应两个UART接收端的接收缓存区R_TempA、R_TempB,用于存储发送数据和接收数据。总线设备可分为通信和寻址这两个工作状态。

3.1 通信状态

总线设备可采用实时通信方式,有数据发送需求的设备无需等待排队,即可将上行方向、下行方向或上/下行方向同时切换为抢占发送模式,直接发送数据。若该设备上行方向和下行方向的设备都为透传模式,则该数据可贯穿整条总线。

单机发送模式如图2所示。

图2 单机发送模式

当3#设备发送数据时,其上行方向的2#设备和下行方向的4#设备都处于透传模式。2#设备B口对应的UART接收端接收数据,存入R_TempB中;4#设备A口对应的UART接收端接收数据,存入R_TempA中。

总线设备采用实时通信方式时,可能会出现多个设备同时发送数据的情况。

多机发送模式如图3所示。

图3 多机发送模式

由图3(a)可知,当2#、4#设备都有数据发送需求时,将立即切换为抢占发送模式,并断开总线。此时,总线实际上被分为三段:2#设备上行方向的设备可通过B口接收到2#设备发送的数据D2;4#设备下行方向的设备可通过A口接收到4#设备发送的数据D4;而2#、4#设备之间,包括2#、4#设备自身,可分别通过A口和B口接收到2#、4#设备发送的数据,即3#、4#设备的R_TempA可接收2#设备向下行发送的数据D2,2#、3#设备的R_TempB可接收4#设备向上行发送的数据D4。此时,2#设备的上行方向无法收到4#设备的数据,4#设备的下行方向无法收到2#设备的数据。若要完成该数据传输过程,需借助该总线设备的缓存-中继功能。当总线设备完成自身的数据发送后,需将总线被抢占期间接收到的数据,沿着该数据原本的传输方向接力发送。由图3(b)可知,2#设备B口接收到的上行数据D4,通过其A口向上行方向发送;4#设备A口接收到的上行数据D2,通过其B口向下行方向发送,从而使总线上的所有设备都接收到D2、D4。

该总线可以在不丢失数据的情况下,实现所有设备数据的实时发送,解决了一般半双工或全双工总线的数据冲突问题。数据从发送到目标设备接收的延迟时间,取决于整条总线的繁忙程度。若总线空闲,则数据立即到达目标接收设备;若总线同时发送数据的设备越多、数据量越大,则数据被缓存-中继的次数就越多,延迟时间就越长。总线上物理距离越近的设备之间,传输数据被抢占的几率越小。符合该总线标准的设备,需约定数据完整性的单位,如字节或帧。设备抢占总线前需判断一个完整的数据单位是否透传完毕,否则总线中会出现数据碎片。

3.2 寻址状态

基于该总线结构,设备可以通过获取其在总线中的“位置”来得到唯一地址,并将该地址作为设备的通信地址。而一般总线设备必须预设地址,并在被告知其他所有设备的地址后,才能进行握手通信。

总线进入寻址状态后,所有设备均处于抢占状态,并向上下行方向发送搜寻指令。相邻设备接收端收到搜寻指令后,回复确认指令。故当某设备上行方向未收到确认帧,说明该设备处于总线最上端;若下行方向未收到确认帧,说明该设备处于总线最下端;若上/下行方向都收到确认帧,说明该设备两侧均有相邻设备。此时,最上端设备将自身地址定义为“1”,并向下行方向发送授地址指令;将下行相邻设备地址设定为“2”,收到确认帧后恢复透传模式;设备“2”再向下行相邻设备发送授地址指令;直到最下端设备被设地址后,最下端设备向上行方向发送复位指令,使所有总线设备恢复通信状态。

通过适当的软件控制,总线周期性进入寻址状态,可实现总线断线检测和设备热插拔。当总线意外断开,或有端部设备被移除或连接时,通过自动寻址可及时得知总线设备数量和自身地址变化情况。

4 结束语

本文从硬件和协议两个方面,设计了全双工智能总线。在硬件方面,设计了采用具有中继结构的“串联”型总线设备,而非一般总线的“并联”型结构,总线信号经过每一个设备均要通过差分- TTL-差分的转换。在协议方面,设计了具有双向缓存-中继机制的总线设备,可实现设备在某一传输方向上发送数据时,同步进行接收缓存。

基于这两项设计,可得到以下三项结论。①总线总长度和设备总数量理论上不受限制,仅相邻设备间距需满足通信速率和驱动力的要求。②总线上任意设备可随时发送数据,数据不会冲突,总线上其他设备均可收到该数据,但可能会有一定的延迟。延迟时间取决于同一时刻其他发送数据设备的数量。③设备在总线上具有唯一 “位置”,若将该位置作为设备地址,可避免像其他总线设备那样必须预设地址。

参考文献:

[1] 刘泽祥,李媛.现场总线技术[M].2版.北京:机械工业出版社,2011.

[2] 陈雨田.基于μC/OS-Ⅱ的半双工现场总线多主机机制的研究与实现[D].昆明:云南大学,2015.

[3] 张莉,邬宝寅.一种改进型RS485总线设计[J].自动化仪表,2016,37(10):32-35.

[4] 杨夫星,谈世哲.智能总线协议适配器的设计与实现[J].自动化技术与应用,2009,28(12):86-89.

[5] 阮焱林,郑秋玲,张云.PROFIBUS现场总线技术综述[J].可编程控制器与工厂自动化,2011(8):39-41.

[6] 李乐,郑宾,秦建斌.全双工RS485总线发送机制的研究[J].中国仪器仪表,2008(2):41-43.

[7] 潘铜,叶小荣,张娜,等.STM32的CAN总线中继器设计及应用[J].单片机与嵌入式系统应用,2011(1):46-48.

[8] 欧静兰,邹玉涛,陈昌燕,等.一种适用于单信道全双工通信的PCF协议[J].华中科技大学学报 (自然科学版),2016,44(8):80-84.

[9] 黄敏娣,胡正飞.嵌入式RS-232与CAN总线协议的网关设计[J].计算机技术与发展,2015,25(4):208-212.

[10]刘承智,丁国良,原亮,等.改进型CAN总线协议的实时性研究[J].计算机技术与发展,2012,22(7):81-84.

猜你喜欢
发送数据全双工差分
RLW-KdV方程的紧致有限差分格式
符合差分隐私的流数据统计直方图发布
全双工多中继网络的中断分析与中继决策
数列与差分
一种车载自组织网络的媒体接入控制协议
带标记方式的CRDSA++协议性能分析*
浅析异构密集网络中干扰管理技术
多优先级无时隙CSMA/ CA算法研究
测试软件简介
基于GRT平台的全双工WiFi设计与实现