基于并行多串口的潜艇数据采集系统设计

2013-09-12 01:49王黎明张永峰
微处理机 2013年1期
关键词:源码线程串口

郑 健,王黎明,张永峰

(中国人民解放军91388部队,湛江 524022)

1 引言

国外主流潜艇作战系统皆采用分布式体系架构,实现了从传感器探测至指挥决策到武器发控的功能流程,并向综合化、智能化、开放式、软件化、网络化等方向发展[1]。我国潜艇作战系统目前还处于集中式发展阶段,尽管各分系统在地理和形式上是分散的,但是从目标探测、信息搜集、数据处理乃至指令发送等方面,其传输的网络还是树状结构,没有形成完整的封闭系统[2]。因此,数据采集不可能像分布式网络一样接入交换机即可,只能采取点对点的方式进行。尽管部分主战潜艇更换了新型设备(如指控设备等),但各系统间数据传输接口受限于设计布局而无法更改,部分仍然采用串口作为主要的传输接口。对潜艇作战系统各个通道进行数据采集,主要包括声纳、导航、以及指控系统与各分系统的交互信息,不可避免造成数据采集点较多的问题,传统的方法是对每个数据通道配备一台数据采集计算机。这里设计了一种基于并行多串口的数据采集系统,可在一台数据采集机上同时采集潜艇作战系统多个通道的信息,解决了由于潜艇空间狭小而造成数据采集设备的安放问题,同时可节约设备购置成本。

2 系统组成

系统硬件设计采用成熟的MOXA公司的UPort1400系列协议转换器(以下简称MOXA协议转换器),它以异步串行通信方式工作,可以同时将4路RS232/RS422/RS485串口信息转换为USB接口信息。各数据采集点的三通线缆制作根据航空插座相关芯线定义进行,接入MOXA协议转换器端的接口采用9针串口,严格按照协议转换器芯线定义进行焊接制作。

针对潜艇数据采集的实际情况,采集点主要分布在指挥舱以及武器发控舱,2个舱室分别配置1台加固笔记本作为数据采集机,前端配备多个MOXA协议转换器连接各采集点,协议转换器与数据采集机用USB线缆连接。具体系统组成见图3系统测试部署图中的系统主体部分。

3 系统设计

在32位Windows系统中,多任务是指系统可以同时运行多个进程,每个进程也可以同时执行多个线程,系统不停的在多个线程之间切换。由于时间很短,看上去多个线程在同时运行。每个进程都有一个主线程,线程是并行执行的,可以把线程看作是操作系统分配CPU时间的基本实体,系统不停的在各个线程之间切换。系统为每一个线程分配一个CPU时间段,某个线程只有在分配的CPU时间段内才拥有对CPU的控制权[3]。

多线程技术能很好地解决各种逻辑并发性和物理并行性,改善系统的各项性能,如吞吐量、计算速度、响应时间等,提高系统的执行效率和资源利用率,同时也大大提升了程序的可读性和稳定性[4]。

本系统在WindowsXP操作系统下,利用多线程技术在Visual Studio2010平台上进行软件开发。软件流程图如图1所示。

图1 数据采集软件流程图

软件运行后需要对连接各采集点的协议转换器串口进行参数设置,包括波特率、奇偶校验位以及停止位等。设置完成后打开相应串口,利用多线程技术实时监听串口,分别对接收到的有效数据进行分离与解析,叠加时标后存盘,并在程序监控界面实时显示解析的数据。

程序根据需要监控的串口通道数建立多个线程,每个线程中包含一个串口对象用于通道数据读取,一个数据解析函数用于源码解析与存盘。主要数据结构如下:

(1)每个串口对象各拥有一个缓冲区gPort-Buffer,用于保存从串口获得的数据。CMainFrame::Analyze(int port)从中取出若干字节数据解析,解析后将用于解析的数据从缓冲区中删除。

(2)其他全局数据

Contents:每种数据的最新源码及解析结果;

int g_nTypeSelected=0;选择的数据类型。

串口类主动监视串口,当检测到有数据到达时,将数据保存,并发送WM_COMM_Display消息通知CMainFrame处理(相应的函数为 BOOL CMain-Frame::Analyze(int port))。数据解析函数CMain-Frame::Analyze(int port)的功能流程见图2所示。

图2 数据解析功能流程

4 系统性能测试

考虑到实际应用场景中数据采集点较多的情况,需要用到多个MOXA协议转换器。根据实际需求以及可扩展性分析,潜艇各舱室最多同时需采集16个串口通道,因此MOXA协议转换器需4台。在实验室环境下系统测试部署图如图3所示。

图3 系统测试部署图

另外,在测试过程中查看CPU使用率以及数据传输吞吐量。系统CPU使用率在整个过程中比较均衡,平均 CPU使用率为67%,数据吞吐量为8.6Mb/S。在系统采集过程中CPU时间主要用于源码数据解析以及I/O存储,串口的数据吞吐率较低,一般上限为1Mb/S,即使多个串口并发传输也远远达不到USB接口数据传输率的上限(480Mb/S),因此,系统仍有较大的可扩展性。

5 结 束 语

虚线框内为数据采集系统的主体部分,串口数据采集机采用松下CF30加固笔记本(2.4G双核CPU,4G内存),属于目前较主流的配置,可以应付日常普通的数据计算及处理。虚线框外为数据发送端,利用实验室现有的PC机,分别与MOXA协议转换器连接,MOXA协议转换器有串口—USB双向转换功能,这里是将USB信息转换为标准RS422串口信息。分别在每台PC机上运行4个串口调试助手进程,分别设置好串口参数后,同时发送在潜艇上实际采集的不同类型的数据源码(共16种)。串口数据采集机运行数据采集软件,实时监控数据解析情况,结束后查看解析存储后的数据文件。数据采集过程中程序互操作响应与监控显示正常,没有发现系统响应较慢或无法响应的情况,系统稳定性与处理能力较强,解析后的数据能正常存储。

以上介绍了一种基于并行多串口的潜艇数据采集系统,该系统较好的利用了成熟的MOXA多串口—USB协议转换器,用于实现多串口并行数据采集。重点阐述了该系统软件流程以及主要的数据结构。通过在实验室环境下的系统性能测试,证明该系统稳定、处理能力强、系统总体开销小,满足目前部分主战潜艇作战系统数据采集的需要,并有较强的系统可扩展性。

[1]蔡勇,吕云飞,黄牛.潜艇新型作战系统发展构想[J].船电技术,2011,31(2):1 -6.

[2]郭传福,夏惠诚.分布式作战系统集成方案构想[J].舰船电子工程,2001(1):16-19.

[3]胡乃平,赵振.基于 VC6.0串口通信动态链接库(DLL)的设计与应用[J].微计算机信息,2007,23(3-3):214-216.

[4]贾广雷,刘培玉,耿长欣.多线程技术及其在串口通信中的应用[J].计算机工程,2003,29(1):247-249.

猜你喜欢
源码线程串口
面向数据可靠传输的高译码率带反馈的LT码
基于C#线程实验探究
国内一站式工程设备租赁平台众能联合完成C2、C3两轮融资
浅谈AB PLC串口跟RFID传感器的通讯应用
浅谈开源操作系统的历史
企业如何保护源码
基于国产化环境的线程池模型研究与实现
浅谈linux多线程协作
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索