TCN项目中基于RS-485通信的工程应用研究
2022-01-18徐蔚中
徐蔚中
摘 要 在当前轨道交通车辆列车控制与诊断系统中,将TCN挂载在RS-485通信总线上的系统或设备接入到MVB总线或者列车以太网仍是一项关键的技术项点,并且不同总线和网络的接口转换实现效果将影响网络通信的质量。本文从TCN工程应用项目中遇到的RS-485总线网络接入MVB总线网络的实际问题点出发,重点关注RS-485通信的半双工主从通信模式的特点,主要讨论应用层面的半双工主从通信需要掌握和注意的关键技术要点,以及介绍其在TCN项目中起到的作用。
关键词 RS-485 半双工 主从通信 总线数据碰撞 通信质量
中图分类号:TN91 文献标识码:A 文章编号:1007-0745(2022)01-0022-03
当今列车通信网络(TCN,Train Communication N-
etwork)正朝着高速率、多功能、大数据量等方向飞速发展,与现代社会互联网应用和信息科技领域的发展趋势相吻合。目前行业内的TCN主要是基于多功能车辆总线(MVB,Multifunction Vehicle Bus)和绞线式列车总线(WTB,Wire Train Bus)来实现[1],并且正朝着基于列车实时数据协议(TRDP,Train Real-time Data Protocol)的以太网通讯网络(ECN,Ethernet Consist N-
etwork)方向发展和推广。与此同时,在实际的TCN应用中,由于技术、成本等原因,还可能存在着其他形式的现场总线网络介质和接口。RS-485通信就是其中一种,由于其双绞线式总线成本低廉、抗干扰力较强、传输速率较高、便于实现等特点,仍有着较为广泛的应用。本文将结合工程项目中的实践经验,对RS-485主从通信接口转换技术要点进行研究和分析,形成公式,便于理解其技术要点,并助力于工程应用设计开发。
1 基本原理和项目实践介绍
实际项目运用的接口示意简化图如图1所示,主设备Master和从设备Slave均有两个冗余接口(Port1和Port2),接口均为UART(通用异步收发器)。主、从设备上的每个接口均通过RS-485总线与对方设备的对应接口连接,总线为差分数据传输方式,半双工通信。主、从设备间通过Port1连接组成通道1,通过Port2连接组成通道2。
需要主从通信双方协商确定的接口设置主要有表1所示几项(参数为示例值)。
示例为半双工主从通信机制,仅Master设备能够根据应用层协议,轮询周期每50ms主动发出一个数据帧,作为通信请求。Slave设备在收到Master设备的请求数据帧后,经过呼吸时间延时,根据应用层协议发出响应数据帧进行回复响应[2]。Master的请求数据帧将同时从通道1和通道2发送至Slave设备,Slave设备默认从通道1进行响应回复。Slave设备如果连续5个轮询周期(250ms)内均未收到Master设备的请求数据帧,则切换至通道2进行回复响应。若Master设备在连续10个轮询周期(500ms)内均未收到Slave设备的响应回复,则视为通信異常。
上述UART接口配置中的数据格式即为RS-485通信的数据层协议。每次即将开始传送一个字符时,先发出一位逻辑“0”信号作为起始位,随后开始数据传输(本示例项目为8位)。奇偶校验位通过将该bit位置位为逻辑“1”或“0”,来控制数据中的逻辑“1”的数量为偶数(偶校验)或奇数(奇校验),本示例项目不配置奇偶校验位。
本字符传输结束后,随即发出1位、1.5位或2位高电平,作为字符传输结束的标志。由于数据是在传输线上定时的,并且每一个设备都有其自己的时钟,很可能在通信中两台设备间会出现细微的不同步现象。因此停止位不仅仅是表示传输的结束,并且提供设备收发接口校正时钟同步的机会,适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
实际项目中应用层另需双方定义应用层的数据通信协议,示例Master设备发送至Slave设备的请求数据帧协议为30个字节,Slave设备发送至Master设备的响应数据帧协议为10个字节,帧头和帧尾标识均为固定值,数据帧的序号为0-255逐帧增加,累计至255后重新赋值为0,以便区分不同数据帧。CRC校验结果为针对B1至B26/B6数据的循环冗余校验结果(具体校验算法可结合实际确定)。
2 存在的问题与初步分析
在实际项目运用中,发现存在偶发性通信异常问题,导致应用业务故障,获取实际总线数据发现数据存在错乱的情况。
正常情况下在50ms的轮询周期中,应为Normal所示每个轮询周期一帧请求数据后跟随一帧响应数据的情况。而异常情况下,会出现Error所示三种情形:1、请求数据后跟随多帧响应数据;2、请求数据后无响应数据;3、数据错乱,数据帧不完整。
结合基本原理和项目实际情况分析,由于RS-485半双工通信的特点,总线上同一时间仅能够供给1个设备发送数据,所以需采用主从轮询的方式进行通信[3]。某一设备在检测到总线上有数据传输时,应不允许自身数据发送。若同一时间双方或多方设备同时发送数据,则在总线上会出现数据碰撞的情况,导致数据错乱。此处的异常情形3即为主从双方设备同时发送数据,导致主设备的轮询数据无帧头(数据碰撞导致数据错乱)。异常情形1为从设备自身未考虑半双工通信的特点,在收到主设备请求数据后多次重复发送响应数据。异常情形2为从设备采样检测请求数据周期不满足要求,以及接收到的主设备请求数据错误或不完整,导致无法正确发出响应数据。
因此在实际的运用实践中,需结合通信方式和实际配置的特点,对涉及的接口参数和程序开发形成正确引导[4],故对此类通信接口的特性展开研究是很关键的。
3 细化分析与研究
示例的半双工主从通信过程示意图如图2所示,描述了一个通用示例周期的主从通信过程。在每个通信轮询周期中,主设备传输完一帧请求数据,且从设备正确接收后,应反馈且仅反馈一次响应数据帧。图中标出了各个关键时间参数,其值为示例值。图中参数具体含义如表2所示。
由于实际的程序运行和数据传输时间等都存在难以避免的误差,所以实际情况下上述所有参数都是理论值。尤其是主设备的tRound与从设备的tCheck之间不可能完全同步,导致二者时间会存在着各种程度的错位(图中体现为tCheck与tRound开始、结束时间点的错位),因此需考虑最差情况下的通信情形,以明确tCheck的参数设置要求。
分析可知,各参数之间应满足以下关系:
tBlind+n*tCheck+tResponse≤tRound(n≥1)
tResponse≥tBreath+tAck
另外,理论上tBlind≤tReq,最差情况下出于预留应考虑tBlind≥tReq。
现拟定拟定tBlind=tReq tCheck,tResponse= tBreath+ tAck,可得知tCheck应满足:
tCheck≤(tRound-tBlind-tResponse)/n(n≥1)
其中tReq与tAck需根据通信接口波特率设置、数据传输格式和应用层协议数据帧长度进行计算。例如示例项目波特率为38.4kbps,传输每个字符(Byte)需消耗1个起始位,8个数据位和1个停止位,共计10bit。请求数据帧为30Byte,响应数据帧为10Byte,可得知传输请求数据帧和响应数据帧分别需要7.8125ms和2.6042ms。
為便于计算与预留时间余量,设定tReq=10ms,tBreath+tAck=10ms,则示例中tCheck最大设置值(n=1时)应满足tCheck≤30ms。且从设备应保证每次正确接收完请求数据后仅发送一帧响应数据。
4 结语
通过对RS-485通信的原理及应用情景介绍和研究,深入了解了其在实际应用中的实现方式和技术要点,结合工程实践指出了在工程项目实践中需要避免的问题点,分析研究了通信接口应用参数的关系,最终以公式化的形式总结出其限制条件,对应用开发形成了引导性结论。在应用实践中可参考本文内容进行设计和问题排查,避免工程应用中出现设计问题导致的通信故障和功能缺陷,提高应用工程的效率和稳定性,保障实践应用的安全。
参考文献:
[1] 刘涛.带有RS485转换功能的一类网卡设计与实现[D].大连:大连理工大学,2006.
[2] 赵亮,张吉礼.提高RS485总线通信可靠性的优化设计方法[J].大连理工大学学报,2015,55(04):393-398.
[3] 陈航,严帅,刘胜,等.基于RS485总线的分布式高精度数据采集系统[J].仪表技术与传感器,2021(02):71- 74,79.
[4] 柏思忠.基于RS485数据帧计时的总线设备间距离测量[J].工矿自动化,2021,47(07):92-97,114.