基于TCP/IP的多数据流传输测控系统的设计与实现

软件需要把串口数据进行协议转换为UDP数据帧发送,所以网络监控线程采用等待多重事件的方式来处理由WSACreateEvent函数创建的网络事件(m_evtNetWork)和串口事件(m_evtOverlappedSeira1),串口监控流程采用异步事件模式监控串行口的数据接收。网络事件由WSAEvent Select函数与当前的socket接口绑定,串口事件由串口接收一个完整数据帧后设置到网络监控线程。当控制台网络可以接收到远程控制台的网络帧(即有网络事件发生)时,线程调用ProcessNetworkEvent函数来处理这个事件(即开始解析远程命令帧),相应串口事件调用网络监控线程的ProcessSerialEvent函数来处理这个事件(即发送数据帧)。线程中的网络超时事件(WSA_WAIT_TIME OUT)处理超时任务(ProcessTimeOut Event)包括串口和板卡状态的循环检测以及状态数据包的发送。
软件采用这种机制能及时响应多重事件,实现了串口和网络接口的对接,节省了设备资源,使系统效率得到了提高。
2.2 TCP多数据流整合同步处理
根据系统要求,数传与实时处理模块将多个TCP流的相同或不同字段的数据进行提取并整合为一个UDP数据报文并发送至远程控制台。
由于多个TCP数据流发送过程中很可能会出现某个数据流到达时间相对其他数据流有延迟,这就会造成在整合为UDP数据报文的过程中数据的不同步。为解决这个问题,软件采用基于数据队列的方式实现码流同步。首先将多个既定长度的TCP流数据(TCPDataValue)加入(push)多个相应队列(CDataQueue),当所有队列的长度大于等于1,即所有队列有元素时,将队列中的第一个(即最先压入队列)元素弹出(GetFirstDa ta),然后进行码流的数据提取。
下面以三个数据流为例说明这种机制的实现,主要代码如下:

软件利用这种机制既保证了多数据流数据的同步性,同时又不会对数据的实时性产生较大影响。
3 系统测试
软件测试环境为装有系统硬件环境的工控机,工控机之间通过千兆以太网络以光纤连接。本系统现有插装继电器板卡的控制台设备一套;LINKSYS(型号为SRW2024)24端口千兆带宽交换机若干台;数据源设备3套,单一数据源设备的数据采集周期为20 ms,整帧长度为4 096 B;单片机测控设备(32路数据通道)一套,数据采集周期为200 ms,整帧长度为32 B。将本系统进行一段时间的数据测试积累,来获取系统的吞吐量、命令响应时间、资源消耗和效率等。
经过长时间的测试运行表明本系统网络能达到6~7 MB/s的吞吐量,且数据稳定、可靠、同步性高,与数据源对比没有出现乱序、丢包等现象;控制台设备可以较好地分配网口与串口的CPU调度处理时间,接收到远程控制命令可靠,硬件响应时间短;整个系统在一般配置计算机运行占用资源少,运行流畅,达到了设计的要求。
4 结语
基于TCP/IP的多数据流传输测控系统实现了各数据采集系统设备的控制、数据的传输和处理。本系统利用TCP/IP技术、数据采集技术和面向对象的软件开发技术,利用现有的网络资源,以高性价比实现信息的实时获取存储、设备的高效控制和用户软件界面的直观显示。通过几个月的测试运行,稳定可靠,实时性高,达到了多数据流传输测控的目的。
- 用LabVIEW开发SDH/PDH远程测试系统(05-11)
- 具有卫星链路的TCP/IP网络性能测量方法研究(01-22)
- 基于Dasylab的网络测试系统研究(06-22)
- 高清视频检测车辆违章取证系统(03-23)
- 基于labview的局域网TCP传输文件夹问题的解决(01-06)
- LabVIEW中TCP/IP网络通讯模块小谈(01-06)
