CORBA通知服务在海上拖缆综合导航系统中的应用

2020-03-15 02:44张昊楠胡广浩阮福明崔世峰闫佳琛
电子技术与软件工程 2020年23期
关键词:拖缆数据服务导航系统

张昊楠 胡广浩 阮福明 崔世峰 闫佳琛

(中海油田服务股份有限公司物探事业部 天津市 300451)

拖缆地震勘探是海上油气勘探的主要作业方式之一,在其作业过程中,拖缆综合导航系统处于指挥和控制中心地位[1]。基于海洋拖缆地震勘探施工过程复杂,方式多样,涉及测绘、地球物理、计算机等多个学科且专业性强,并需要多种船载控制及采集等系统配合作业,因此要求综合导航系统的软件功能全面、软硬件稳定性高,实时导航及水下设备定位精准稳定,系统研发具有一定难度。中海油田服务股份有限公司从十二五863 计划项目开始,对海上拖缆勘探综合导航系统的业务流程软件架构及功能、硬件平台设计、导航及网络定位算法等方面进行研究,形成了海途HQI-Navi®拖缆综合导航系统系列产品[2]。本文提出了一种基于CORBA 通知服务来构建综合导航系统数据交互的方法,实际应用表明,该方法能很好的满足综合导航系统及其他系统间多进程交互及通信的要求。

1 综合导航系统作业方式及数据流程

1.1 综合导航系统作业方式

海上拖缆地震勘探作业时,物探船拖曳一条或多条采集电缆,由导航系统控制气枪震源激发地震波,并同步控制电缆采集地震波的反射信号,接入船载定位导航数据并实时进行导航及拖曳电缆等水下设备的定位解算。导航系统将全部的传感器及设备的原始导航定位数据记录记录在UKOOA P2/94 或OGP P211 格式原始文件中,将所有网络节点、检波点等平差定位后的坐标数据记录在UKOOA P1/90 或OGP P111 格式文件中[3]。导航系统通过特定的时序,控制各系统协同工作,起到实时导航、导航数据记录、坐标解算、作业控制的作用。

1.2 数据与命令控制

输出到综合导航系统导航控制平台的传感器及设备有十多种,主要包括:DGNSS、RGNSS、EchoSounder、Gyro、雷达、枪控、以及拖缆控制系统数据(包括罗经鸟、声速鸟、声学鸟、水平鸟等)等;导航系统输出到外部系统的数据主要包括:仪器头段、枪控头段、水平鸟控制数据等,各数据的输入输出可通过串口遵循相应的通信参数或网络等形式进行。导航控制平台通过导航系统软件计算得出的响炮时序,对采集系统、数字枪控系统、拖缆控制与定位系统等进行触发时序控制,协同工作完成勘探作业流程。

2 CORBA通知服务在综合导航系统中的应用

2.1 CORBA简介

CORBA(Common Object Request Broker Architecture 公共对象请求代理体系结构),是一个为简化跨平台应用而提出的规范,其独立于软硬件平台、网络协议和编程语言,支持异构的分布式计算环境和不同编程语言间的对象重用。CORBA 可以作为不同平台应用间信息传递的中间件,通过引入经过充分验证的有效的框架结构和通信手段,使应用者聚焦业务逻辑方面的实现,而无需关注通信的细节。CORBA 在银行、航空、制造、军事和电信等领域应用广泛[4]。

图1:通知服务的两种实现结构

TAO(TheADAPTIVE Communication Environment ORB)是一个实时CORBA 平台,基于C++平台开发,符合CORBA2.6 规范。TAO 可以在包括Win32、UNIX 以及VxWorks 等实时操作系统的很多平台上面使用。本文所述综合导航系统采用TAO 进行CORBA C++编程。

2.2 综合导航系统整体结构

针对海上拖缆勘探的作业特点,为综合导航系统设计结构:系统中心为数据服务节点,主要作用是完成所有数据交互服务和系统供应,其他模块围绕数据服务节点,任何类型的数据均可以由围绕数据服务节点为中心的网络的任一模块节点产生,发送到数据服务节点缓存,再转发给其他需要的节点,其他节点可能会要求数据服务节点提供某些数据项给它们。

综合导航系统涉及到数据服务、系统配置、工区与测线管理、数据传输、作业控制、数据记录、监控、实时显示、网络解算、QC 等10 多个模块,20 多个进程,各模块与数据服务模块交互频繁,对数据服务器及进程间通信提出了较高的要求。基于本系统的特点,本文提出了基于Corba 通知服务来构建进程间通信的方法,实际应用表明,此种方法较为容易的实现了多进程间数据的频繁交互,克服了常用通信方式如socket 制定网络协议、频繁数据打包、解析等复杂的通信方式,大大降低了编程难度和复杂度。

2.3 CORBA通知服务在综合导航系统中的应用

CORBA 事件服务[5](Event Service)提供一种异步的、松散的通信机制, 其目标是建立一个通用的分布式事件模型。但是事件服务明显存在不能保证通信的可靠性、不支持服务质量、不提供结构化事件和过滤机制等局限性。因此,CORBA 增加了通知服务[6](Notification Service) ,即在事件服务的基础上进行功能扩展,弥补事件服务的不足, 提高通信过程的可靠性及更多的保障。

在分布式系统中,当一些事件出现后,需要通知相关的系统组件。CORBA 通知服务提供了一个框架来异步发送通信消息(通知)到对象,提醒指定的事件已发生。通知服务体现在服务端的ORB 中,它为客户端和服务端提供事件通道、事件代理,并实现了数据在两端的推拉。CORBA 通知服务使用supplier/consumer 分布式模型,支持多个供应者和多个消费者,支持多对多异步通信。事件通道本身即充当事件的供应者又充当该事件的消费者,通过标准CORBA请求完成通信,当某事件发生改变时,将产生一个事件广播到对该事件感兴趣的一方[7]。通知服务的两种实现结构模型如图1 所示。

如上所述,综合导航系统有原始实时数据、处理过的数据、控制信息等三种类型数据,实时采集到的各种原始数据收集到数据服务器后,各显示模块需要实时更新显示,软件计算模块将解算数据发送到数据服务器,其他模块需要根据数据服务器的数据更新而实时更新,CORBA 通知服务轻松实现了上述过程。遵循CORBA 通知服务的建立过程,将各软件模块与数据服务器建立通知服务关系,通过push 模型,当有新数据产生时,数据服务器将结果“推送”到各模块。此过程跟CORBA 事件服务类似,但通知服务客服了命名服务缺乏消息过滤机制,缺乏QoS 机制,Consumer 不知道存在的Supplier,也不知道Supplier 提供何种Event,Event 以Any 形式发送,缺乏结构化的数据等缺点。

通知服务的使用方法和事件服务类似,第一步是获取事件通道对象, 生成管理对象,第二步生成代理对象,最后,提供者和消费者就可以注册在这个通道上,供应者获取消费者代理,通过消费者代理往事件通道推送数据。具体可以分为两个步骤:

步骤一:建立事件通道,供应者获取事件通道对象, 初始化管理对象和代理对象,供应者注册通道并向通道推送数据。

pIMainServant->init( ptrORB, ptrPOA, ptrSubPOA, "DSN","MainNetSolution", "MainNetSolutionChannel", "NCN", "Main" )// 初始化Corba,

其中参数MainNetSolutionChannel 为通道名。

(1)初始化事件通道。

通过调用事件通道工厂EventChannelFactory_var 的指针m_varEcf,获取通道:

(2)初始化供应者管理。

通过通道指针varEc 获取提供者管理:

(3)初始化消费者代理并赋值。

供应者通过消费代理推送数据

步骤二:消费者从事件通道获取推送数据。

从事件通道获取数据比较简单,客户端类似建立与事件通道的连接后,实现push_structed_event()函数,获取数据更新:

push_structed_event(const CosNotification::StructdEvent &event)

{

SDnMainDatas *ptemp;

event.remainder_of_body >>= ptemp;//从通道获取数据

*m_pSDnMainDatas = *ptemp;//结构化数据赋值

emit signalNodeDataUpdated();//更新信号

}

SDnMainDatas* mainData = m_pSDnMainDatas;

int iLength = mainData->networkList.length();//获取网络数据长度并赋值

SNetworkNode node = mainData->networkList[i]; //获取到的网络节点数并赋值

至此,客户端即可本地“透明”获取从服务器端推送来的数据,当有数据改变时,实时更新推送来的数据。注意此处用到了Qt 自定义更新信号signalNodeDataUpdated()。

3 结束语

本文利用CORBA 技术搭建了拖缆综合导航系统的通信架构,该系统支持跨平台,可快捷方便的在Windows 及Linux 平台下进行部署;利用CORBA 通知服务满足了多进程间频繁的数据交互要求,且大大降低了多进程间通信的编程实现复杂度。在实时数据传输、多进程交互等大型石油装备系统应用中,通知服务体现出强大的生命力,为同类系统的构建提供了一种有益借鉴。

猜你喜欢
拖缆数据服务导航系统
地理空间大数据服务自然资源调查监测的方向分析
拖缆引绳的设计改进
拖缆对水下航行器的操纵性能影响
潜水器水下拖带航行运动响应数值计算与性能分析
一种GNSS/SINS容错深组合导航系统设计
如何运用税收大数据服务供给侧结构性改革
解读全球第四大导航系统
基于频繁子图挖掘的数据服务Mashup推荐
海洋平台工作船深水大型拖缆机选型分析
一种基于数据服务超链进行情景数据集成的方法*