APP下载

一种多串口通信冲突回避与数据同步方法

2020-05-06李昊昱缪炜涛郭玉洁高怡寒王凯悦

通信电源技术 2020年24期
关键词:分片外设串口

李昊昱,缪炜涛,郭玉洁,高怡寒,王凯悦

(航空工业西安航空计算技术研究所,陕西 西安 710068)

0 引 言

串口通信因为低成本、性能可靠以及技术简单而广泛应用于计算机、自动化控制与机载设备间的数据传输等相关领域[1]。串口通信数据一般按位顺序传送,其交互的对象通常是单个计算机对应单个外设,收发数据是一问一答式,不会产生数据冲撞[2]。但一些领域中串口通信会遇到一对多的数据交互。在某型号国产飞机改装项目中计算机通过串口传输协议向外部控制设备发出操控命令,并且采用双余度综合控制技术。当多个外部设备与两台计算机进行数据传输时,外设会同时收到两台计算机的下发指令,此时会导致数据收发冲突。因此文章提出避免多串口并行通信产生的数据冲突技术以及采用双余度配置下的数据同步技术,保证系统的高可靠性和高稳定性。

1 串口冲突的问题描述

双方在进行通信时,要求都采用同一种规则,这种规则不仅包括电器特性,也包括通信内容的格式和类型[3]。串行通信标准接口包括RS-232、RS-422以及RS-485。RS-232是点对点的传统通信方式,由于自身电平特性的限制,不可以一对多通信[4]。RS-422是一种四线制全双工模式的数据传输协议,可以同时接收和发送数据。RS-485应用广泛,一般采用两线制的半双工模式,允许数据在两个方向上传输,但在同一时刻上,数据不能同时收发[5]。

目前有的机载计算机采用双余度技术操作外部设备,其串口通信电路原理如图1所示。

图1 串口通信电路原理图

图1采用RS-485串口通信标准,其显示单一外设串口并联出两路通信线路,连接在两台计算机。左右计算机都可以收到外部设备的应答数据,假定左计算机先向外部设备发送控制指令,右计算机不但可以收到左计算机的下发指令,也可以收到外部设备的应答数据。如果左右计算机发送指令的时刻相近,那么由于RS-485的半双工模式特性,外部设备回复的数据极有可能与其中一个计算机的下发指令相撞,造成外部设备回复的数据源错误或计算机下发指令无效,从而造成左右计算机的数据解析错误,系统工作状态相异,无法实现数据同步。

2 串口冲突的回避设计

文章提出利用时间分片方法将左右计算机的下发控制命令错开,从而避免数据相撞。而各设备系统在长时间的运行下都会与标准时间产生误差,因此多机联合作业对各设备时间统一基准提出更高的要求[6,7]。为实现时间分片先进行时间校准,从而保证两台计算机与外设之间数据交互正常稳定。

2.1 时间校准

高精度授时在航天航空领域有着重要应用,可利用我国自主研发的北斗卫星导航系统来实现多个计算机的时间校准服务[8]。北斗的3个核心功能分别是收发短消息、快速定位以及精密授时,其中精密授时即北斗为终端提供20 ns和100 ns的时间同步精度[9]。北斗协议里可以用包括定位解算取得的位置、时间以及速度等信息的RMC语句授时[6]。

软件上,两台计算机各自每秒获取北斗自动上传的RMC语句,并将时间信息存放在全局变量中,用户操作外部按钮下发时间校准的命令,计算机通过Windows应用程序接口的Set System Time函数将全局变量的时间内容设置在当前系统,包括年、月、日和时、分、秒,完成时间校准。

2.2 时间分片

时间分片是在时间统一的基础上将长任务分成若干个错开执行的短任务技术,并依赖于对短任务的合理分配,保证系统的及时响应,从而优化系统性能[10]。时间分片在本文主要是将左右计算机下发指令错开,避免数据冲撞,具体流程如图2所示。

图2 时间分片下发命令流程图

首先需要计算左右计算机之间下发命令的最小时间间隔。若外设的波特率是xb/s,即每秒可传输x位数据,外设与计算机之间的最长下发数据帧和最长回复数据帧是m和n个字节,即8×m位和8×n位。由于硬件环境影响,一对多串口通信容易发生数据冲撞,需等待当前操作计算机下发指令的时间加上外部设备回复数据的时间后,另一台计算机才可以发送其他指令,避免冲突。因此两台计算机之间下发命令的最小时间间隔应为:

为保证收发数据的正确性,利用时长至少大于两倍最小时间间隔的定时器计数,将某单位时间分段,左计算机在第一个时间段计数0时下发指令,右计算机在下一个时间段计数1时下发指令。

以时间校准和时间分片为基础的串口冲突回避设计不仅可以面对单一外设,也可以用于多路串口的多个设备。如图2所示,在定时器里完成当前操作计算机向N个设备在计数0时下发指令,另一台计算机则在计数1时对N个设备下发指令,错开发送指令可以留下足够的时间得到外部设备回复的数据,回避了数据冲突。

2.3 数据同步

采用双余度控制的串口外接电路设计,计算机可以收到对侧计算机的下发指令和外设的应答数据,并且二者在缓冲区通常出现粘在一起的情况,因此实现数据同步要求计算机拆分对侧计算机的下发指令和外设应答数据。一般通信内容中都会有标识来区分各个数据帧,也代表外设的工作模式,计算机可根据对侧计算机下发指令的标识判断外设此时的工作模式,从而调整左右计算机实时同步。

若两台计算机已经过时间校准和时间分片,则设置一个判断主从计算机的标识变量Flag,默认为1,当计算机在只收到外设回复的数据时,该计算机为主机,所有下发命令会在定时器中完成,并且进入相应工作模式完成数据解析。若收到对侧计算机的下发指令,标识Flag设置为0,该计算机为从机。从机根据主机的下发指令标识判断外设工作模式,再拆分出外设此时返回的数据,然后在当前工作模式解析数据。同时从机应禁止定时器内下发其他指令避免干扰,在当前工作状态完成之后,从机标识Flag重新置1。

3 实验设计与结果分析

在某型号国产飞机改装项目中,两台计算机操控多个外部设备。串口通信协议为RS-485和RS-422,波特率为9 600 bit/s。根据通信协议的内容,最长下发数据帧和最长回复数据帧均为26个字节,将波特率代入式(1)得最小时间间隔为43 ms。在调试过程中,计算机与某一外设的连接电路中引出两根线,再连接到另一设备上,该设备用串口调试助手观测计算机下发命令和外设回复数据。在已进行时间校准的条件下试验了未采用时间分片和采用不同时间分片单位的情况,观察1 h内数据包是否会出错。

数据冲突情况主要有以下3点。一是外设回复数据错误。正常情况下,该外设回复数据帧头应该为0xDBCC,标识符为0xAFAF,长度为26字节。当遇到串口数据相撞时,错误数据会丢失帧头,标识符无效或数据内容不符合外设实际情况。二是串口调试助手收不到外设回复数据。三是串口调试助手不再显示对侧计算机下发指令,即无法下传指令。

当未采用时间分片技术时,出现数据冲突的次数多达8次,系统不稳定,当采用时间分片单位为50 ms和100 ms时,数据冲突次数为5次和2次,实时同步逐渐稳定。而当时间分片为125 ms时,数据冲突次数为0。实验表明,时间分片单位应设定为接近3倍的最小时间间隔。

最终时间分片单位定为125 ms,利用125 ms的定时器将500 ms分成四个时间段并计数0,1,2,3。单一计算机下发指令的时间间隔是500 ms,两台计算机下发指令的时间间隔是125 ms。一台计算机在定时器计数0时下发指令,另一台计算机在定时器计数1时下发指令,并对多个外设都进行了验证,避免了多串口数据冲突,再利用对侧计算机下发指令的标识实时同步两台计算机状态。

4 结 论

在机载设备,自动化或其他工业领域中,由于系统集成的复杂度越来越高,多路串口通信方式会经常遇到。本文利用时间校准和时间分片克服了串口数据冲突问题,实现了数据实时同步,并可适用于多种串口协议,使得系统任务统一、可靠且实用。

猜你喜欢

分片外设串口
上下分片與詞的時空佈局
利用状态归约处理跨分片交易的多轮验证方案①
物联网区块链中基于演化博弈的分片算法
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
基于模糊二分查找的帧分片算法设计与实现
MCS—51单片机中的多串口通讯技术的应用
外设天地行情
外设天地行情
外设天地行情