一种基于RS232总线的通信网络数据传输监测方法
2020-11-23宋丫许亚星李庆楠中国航空工业集团公司西安航空计算技术研究所
宋丫 许亚星 李庆楠 中国航空工业集团公司西安航空计算技术研究所
引言
大型通信网络普遍采用分布式结构,即各个功能组件分布在不同的服务器或计算机上,彼此之间通过消息传递进行协调。与集中式结构相比,分布式结构可以在一定程度上降低成本,提高工程实施效率,并且能有效分散风险,增强系统的安全性能。
分布式通信网络在提高系统安全等级的同时也带来了新的问题,转换、传输、处理等中间环节繁多,故障发生时难以定位,需要对各个环节进行数据监测。目前在实际工程中,总线监测已经有很多成熟的工具,然而在有些时候现场不具备实施条件,或实施困难,耗损较大,此时就需要一种便捷通用的传输监测方法。
RS232总线在嵌入式产品中广泛应用,资源丰富,通过该接口输出,可以将数据在外部计算机直观显示,方便技术人员分析排查,且作为一项常用调试手段,RS232接口的输出几乎没有损耗。基于此本文提出了一种通信网络数据传输监测方法,利用RS232总线选择性地监测各个环节的数据,并实时动态显示,该方法灵活,交互性强,通用可移植,同时方便工程人员操作。
1 监测流程
以某型航空机电系统采集装置为例,如图1所示,采集装置与中央计算机直接相连,负责采集并转换各个子系统设备的数据,汇总处理后统一发送至中央计算机,不同采集装置之间也可能互相通信。在采集装置A中,同时存在多个类型的总线接口,包括RS422、429总线、CAN总线、1553总线等,设备原始数据经过几轮转换传送至中央计算机,在故障发生时,作为中转环节,采集装置A需要对各个接口进行数据监测。
图1 机电系统采集装置通信网络
图2所示为数据传输监测流程,在不影响正常通信功能的前提下,周期接收RS232总线输入,此时可通过配置调试计算机的串口,进行键盘输入。当键盘输入字符时,开启指令接收任务,并停止当前周期显示的数据,便于操作者查看自己输入的指令。接收到的字符依次存储在数组Task232_Recv中,并记录有效数据长度,当输入的字符数大于设定的上限值时,指令清空并显示溢出警告,监测任务复位,等待下一次输入,防止因键盘持续误操作造成干扰。
操作者须输入特定的指令,包括密钥和待监测数据通道,当识别到回车字符时,完成一次指令录入,并将指令及其长度保存为全局变量,以便后续解析。为了提高运行效率,避免误操作,需要对获取到的指令进行解密,解密成功则进入数据显示任务,否则监测任务复位,显示锁定警告。
图2 数据传输监测流程
2 指令接收
本节详细介绍指令接收任务,首先读取RS232总线接收状态寄存器,判断当前接收FIFO是否为空,若一直为空则保持当前的数据显示,全局标志ScreenStart保持置1。当输入字符,状态寄存器非空时,停止数据显示,ScreenStart置0,并连续存储输入的指令字符为Task232_Recv,同时将长度保存为全局标量Length。
在键盘输入同步存储的过程中,实时显示当前的输入状态,设置必要的操作步骤提醒。由于不同平台对回车字符的转换可能存在差异,当读取到字符‘ ’或‘ ’时,即可认为完成了一次指令输入,此时需要将Length的值减1,剔除最后一次的回车输入。至此,指令Task232_Recv和长度Length在本轮数据监测流程中保持不变,直到下一次键盘输入。若出现一次性输入字符过多,键盘误操作的情况,则进入数据溢出处理,清空全局变量Task232_Recv和Length,全局标志Lock上锁,不再进入解锁流程。
3 数据显示
数据显示与指令接收分别为两个独立的任务,在运行正常通信任务时,周期检测全局标志ScreenStart,标志为1时表明指令接收已完成,此时将开启数据显示流程。在表示待监测数据通道时,本文采用字母数字组合的形式,例如‘X01’,约定X为总线类型,01为道排序。
针对不同的应用需求,数据显示具备一定的可配置性和可裁剪性,同时支持单次显示及周期显示,并能根据动态性能要求,设置显示周期。
4 总结
针对分布式通信网络数据监测操作困难,耗损较大等问题,本文提出了一种灵活通用的数据监测方法。该方法基于RS232总线传输,通过人机交互选择并显示待监测的数据,且不会对系统的正常通信功能产生干扰。该方法同时具备良好的可配置、可剪裁性,适用于不同类型的平台环境,移植方便,复用率高,对于通信系统故障排查具有一定的应用价值。