文献标识码: A
文章编号: 0258-7998(2013)06-0136-03
伴随着海洋开发过程中人们对海量信息需求的日益多样化,传统海洋测绘体系已转变为数字化测绘技术体系,海洋综合导航定位系统的应用也越来越广泛。如今,海底地震勘探技术正在逐步成熟,海底地震勘探技术是海洋深处地质调查和海洋资源探测的重要手段。海底地震仪OBS(Ocean Bottom Seismometer)是一种可以放置在海底接收人工或天然地震信号的记录仪器[1],通过将OBS布设于海底,广方位角接收海洋调查船拖曳震源触发放炮后的纵横波信息,实现对海底深部构造的探测[2]。
OBS布设导航定位系统(OBSNavGIS)是集数据实时采集、通信、解析、电子海图显示等功能为一体的海洋导航定位系统,通信模块是整个系统的重要组成部分,其实时性、准确性和稳定性直接影响导航定位系统的性能。目前国内外大多数水下测量导航软件都支持通过RS232串口或并口连接多种传感器,如GPS接收机、回声测深仪、剖面仪、涌浪仪以及USBL[3],其中最常用的通信方式是串行通信。但是采用串行通信方式也存在一些问题,即当终端连接多个传感器设备时,繁琐的串口参数配置和杂乱的线路布设极大地影响了作业效率和作业环境。随着Internet技术的迅猛发展,网络通信技术应用于工业的可行性大大加强,在导航领域,网络通信技术能够有效地弥补传统串行通信技术的不足,实现数据的远程传输,发展前景广阔。
本文设计并实现了支持TCP网络通信,同时兼容传统串口通信的OBSNavGIS设备通信模块,以此实现对多源数据的实时采集、多设备的统一管理,以及长时间的连续监测,为海洋布设导航过程提供全面可靠的数据。
1 OBS布设导航定位系统
OBSNavGIS是集数据实时采集、通信、解析及电子海图显示功能为一体的海洋导航定位系统,该系统旨在落实天然气水和物资源勘查技术的研究,主要包括对OBS高精度投放与定位技术,以及海底OBS实时可视化投放技术的研究与实现。系统采用层次化的体系架构,主要分为表现层、业务层、数据层。表现层主要负责电子海图的显示和OBS投放观测;业务层涵盖了对设备的管理和OBS投放控制;数据层主要负责底层数据访问和硬件交互。软件架构如图1所示。
2 多路设备实时通信模块的设计
2.1 功能设计
多路设备实时通信模块是一个通用接口模块,也是整个系统中最基础、最核心的单元。主要由数据层的通信构件和业务层的设备管理模块构成。其中通信构件主要负责与底层硬件交互,对不同的通信机制进行封装,采集解析多路设备数据,为上层的设备管理提供基本的数据访问支持。主要包括以下功能:
(1)连接RS232标准的串口设备,能实时获取多个串行数据,提供有效的同步机制,协调多线程的并行;
(2)建立基于TCP/IP通信协议的客户端与服务器端的网络连接,控制客户端的数据访问;
(3)解析多路设备的数据。提供不同设备的解析驱动,对不同设备数据进行语法和语义的分析。
设备管理模块主要负责通信方式的集成和设备的统一管理。主要包括以下功能:
(1)构建抽象的设备对象,提供统一的设备访问控制接口,集成串口和TCP/IP两种不同的通信方式连接设备;
(2)管理抽象的设备对象,处理用户的设备操作请求,完成属性设置、添加/删除、启动/停止、状态查询等操作。
2.2 模块设计
2.2.1 串口通信硬件连接设计
OBSNavGIS系统中串口通信是指用户通过计算机串口实现计算机应用程序(OBSNavGIS)与多路设备之间的通信。串口均是按位进行数据发送和接收[5]。OBSNavGIS的外设通过RS232串口与主机相连,外设有:GPS(含DGPS)、罗经、OBS以及水深仪。
2.2.2 网络通信硬件连接设计
OBSNavGIS系统中TCP网络通信主要负责接收遵循TCP/IP通信协议的网络数据,需要借助多串口转网关[6]将串口设备通过标准TCP/IP协议接入Internet。多串口转网关的主要作用是把串口数据流转换成以太网数据流。
本系统中,采用RS232通信接口将DGPS(船位)、水下OBS(水下定位)等NMEA-0183[7]格式数据,船艏向、水深等定位数据接入导航接口单元,并将数据通过网线发送给系统。
3 多路设备实时通信模块的实现
3.1 关键技术
3.1.1 串口与TCP通信技术的集成
串口和TCP通信技术的集成主要采用了面向对象继承和多态机制,并将其封装起来,屏蔽业务模块对通信技术的直接访问,通信模块核心类图如图2所示。类CDeviceManage负责设备管理,维护一个抽象的CDeviceObj设备对象引用集合,提供对设备控制的操作,并将多种设备集成到同一平台,实现一体化组织和管理,增强了系统的可维护性。
CDeviceObj作为设备的抽象类,提供了设备启动和停止的接口方法,CSerialDev和CTCPDev继承自CDeviceObj,分别基于串口和TCP/IP两种不同通信机制的实现形式。CSerialDev和CTCPSocket都将具体实现底层通信构件类CSerialWithBuffer和CTCPSocket,增强了系统的可扩展性。
3.1.2 串口通信技术的应用
OBSNavGIS串口通信构件使用第三方通信类CSerialWithBuffer进行通信设计。CSerialWithBuffer指基于多线程对处理串口的Windows API进行封装。为了有效解决串口上占用CPU时间而引起的线程堵塞问题,将串口数据的采集存储和读取处理分置到串口监视线程和入库线程中。
3.1.3 TCP网络通信的应用
OBSNavGIS系统中TCP网络通信分为服务器和客户端两部分,OBSNavGIS系统作为客户端,用类CTcpSocket实现与服务器端的交互,CTcpSocket对Windows Socket API进行了封装,其中包含一个CDateBuffer类型的数据缓冲区。进行网络连接时,调用CTcpSocket的Connect()向服务器端发出连接请求,连接后调用StartReciving()向服务器发送读设备数据请求,并启动数据监听线程。客户端收到数据后存入缓冲区,并借助回调函数[7]通知主程序读取数据。
3.2 具体实现
在Window平台上,使用VS2010开发OBSNavGIS系统的各个模块。
3.2.1 基于串口通信技术的实现过程
串口读取数据的基本工作流程为:
(1)调用CSerialWithBuffe的Setup()方法初始化。
(2)调用Open()开启串口,然后依次调用StartListener()启动串口监测线程,WaitEvent()对串口上发生的事件进行获取和处理,WaitForSingleObject()对串口相关的用户控制事件进行等待和处理,OnEvent()将数据写入缓冲,并以消息方式通知主程序进行数据处理。
(3)调用Close()StopListener()关闭串口监听线程。
添加串口通信设备的对话框如图3所示,图右侧显示了从串口3接收NMEA0183格式的GPS导航定位数据。
3.2.2 基于网络通信技术的实现过程
为实现多客户机/服务器通信,在服务器端采用多线程技术,负责接收各设备通过串行口发送的数据,等待并监听多个客户机的连接请求,同时创建一个独立的线程把接收到的数据流发送到客户端。
4 多路设备实时通信方式的对比分析
OBSNavGIS系统中,串口通信和网络通信都能满足系统的需求,本文设计是集合以上两种方式的通信方式。表1为三种通信方式的简单比较。
串口通信的优势在于成本低、简捷灵活、硬件接口简单、编程难度相对小,适合点对点的数据通信系统,但对于实时性要求高或远距离时不适合采用串口通信。TCP网络通信传输距离理论上无限制,易于进行远程管理,但成本高[8]。将上述两种通信方式集成的通信技术结合了串口和TCP网络通信的优点,有效避免了缺陷,更适合实际作业中根据具体情况进行合理的选择,从而达到资源利用的最大化,提高了效率。
针对单一的通信技术不能满足水下测量导航的应用需求,本文设计并实现了OBS导航定位的多路设备实时通信模块,集成了串口和TCP网络两种通信技术,为海洋调查提供了准确、多样化的科研数据,同时对两种通信方式进行了简单的分析和比较。优化通信时延处理是提升信息采集整体质量和系统高效稳定的关键,今后将进一步对该技术进行研究,以提高通信时延和系统的实时性,优化海洋定位系统的效率。
参考文献
[1] 吴志强,陈建文.OBS在我国海洋深部地质调查中的应用现状和前景[J].海洋地质动态,2008,24(9):35-42.
[2] 阮爱国,李家彪,冯占英,等.海底地震仪及其国内外发展现状[J].东海海洋,2004,22(2):19-27.
[3] 阳凡林,康志忠,独知行,等.海洋导航定位技术及其应用与展望[J].海洋测绘,2006,26(1):71-74.
[4] 梁伟,等.Visual C++网络编经典案例详解[M].北京:清华大学出版社,2010.
[5] 龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践[M].电子工业出版社, 2004.
[6] 冯正,韩焱,王黎明.多线程串口通信技术在GPS导航中的应用[J].现代电子技术, 2009,292(5):28-33.
[7] 佘小莉,唐祯敏.基于TCP/IP协议的串口网关实时性的建模与分析[J].计算机工程与设计,2007,28(21):5115-5118.
[8] 常国春,史金飞,罗翔. Windows与Linux串口通信和网络通信的比较和研究[J].中国制造业信息化,2006,35(7):49-52.