• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    CORBA通知服務(wù)在海上拖纜綜合導(dǎo)航系統(tǒng)中的應(yīng)用

    2020-03-15 02:44:32張昊楠胡廣浩阮福明崔世峰閆佳琛
    電子技術(shù)與軟件工程 2020年23期
    關(guān)鍵詞:拖纜數(shù)據(jù)服務(wù)導(dǎo)航系統(tǒng)

    張昊楠 胡廣浩 阮福明 崔世峰 閆佳琛

    (中海油田服務(wù)股份有限公司物探事業(yè)部 天津市 300451)

    拖纜地震勘探是海上油氣勘探的主要作業(yè)方式之一,在其作業(yè)過程中,拖纜綜合導(dǎo)航系統(tǒng)處于指揮和控制中心地位[1]?;诤Q笸侠|地震勘探施工過程復(fù)雜,方式多樣,涉及測(cè)繪、地球物理、計(jì)算機(jī)等多個(gè)學(xué)科且專業(yè)性強(qiáng),并需要多種船載控制及采集等系統(tǒng)配合作業(yè),因此要求綜合導(dǎo)航系統(tǒng)的軟件功能全面、軟硬件穩(wěn)定性高,實(shí)時(shí)導(dǎo)航及水下設(shè)備定位精準(zhǔn)穩(wěn)定,系統(tǒng)研發(fā)具有一定難度。中海油田服務(wù)股份有限公司從十二五863 計(jì)劃項(xiàng)目開始,對(duì)海上拖纜勘探綜合導(dǎo)航系統(tǒng)的業(yè)務(wù)流程軟件架構(gòu)及功能、硬件平臺(tái)設(shè)計(jì)、導(dǎo)航及網(wǎng)絡(luò)定位算法等方面進(jìn)行研究,形成了海途HQI-Navi?拖纜綜合導(dǎo)航系統(tǒng)系列產(chǎn)品[2]。本文提出了一種基于CORBA 通知服務(wù)來構(gòu)建綜合導(dǎo)航系統(tǒng)數(shù)據(jù)交互的方法,實(shí)際應(yīng)用表明,該方法能很好的滿足綜合導(dǎo)航系統(tǒng)及其他系統(tǒng)間多進(jìn)程交互及通信的要求。

    1 綜合導(dǎo)航系統(tǒng)作業(yè)方式及數(shù)據(jù)流程

    1.1 綜合導(dǎo)航系統(tǒng)作業(yè)方式

    海上拖纜地震勘探作業(yè)時(shí),物探船拖曳一條或多條采集電纜,由導(dǎo)航系統(tǒng)控制氣槍震源激發(fā)地震波,并同步控制電纜采集地震波的反射信號(hào),接入船載定位導(dǎo)航數(shù)據(jù)并實(shí)時(shí)進(jìn)行導(dǎo)航及拖曳電纜等水下設(shè)備的定位解算。導(dǎo)航系統(tǒng)將全部的傳感器及設(shè)備的原始導(dǎo)航定位數(shù)據(jù)記錄記錄在UKOOA P2/94 或OGP P211 格式原始文件中,將所有網(wǎng)絡(luò)節(jié)點(diǎn)、檢波點(diǎn)等平差定位后的坐標(biāo)數(shù)據(jù)記錄在UKOOA P1/90 或OGP P111 格式文件中[3]。導(dǎo)航系統(tǒng)通過特定的時(shí)序,控制各系統(tǒng)協(xié)同工作,起到實(shí)時(shí)導(dǎo)航、導(dǎo)航數(shù)據(jù)記錄、坐標(biāo)解算、作業(yè)控制的作用。

    1.2 數(shù)據(jù)與命令控制

    輸出到綜合導(dǎo)航系統(tǒng)導(dǎo)航控制平臺(tái)的傳感器及設(shè)備有十多種,主要包括:DGNSS、RGNSS、EchoSounder、Gyro、雷達(dá)、槍控、以及拖纜控制系統(tǒng)數(shù)據(jù)(包括羅經(jīng)鳥、聲速鳥、聲學(xué)鳥、水平鳥等)等;導(dǎo)航系統(tǒng)輸出到外部系統(tǒng)的數(shù)據(jù)主要包括:儀器頭段、槍控頭段、水平鳥控制數(shù)據(jù)等,各數(shù)據(jù)的輸入輸出可通過串口遵循相應(yīng)的通信參數(shù)或網(wǎng)絡(luò)等形式進(jìn)行。導(dǎo)航控制平臺(tái)通過導(dǎo)航系統(tǒng)軟件計(jì)算得出的響炮時(shí)序,對(duì)采集系統(tǒng)、數(shù)字槍控系統(tǒng)、拖纜控制與定位系統(tǒng)等進(jìn)行觸發(fā)時(shí)序控制,協(xié)同工作完成勘探作業(yè)流程。

    2 CORBA通知服務(wù)在綜合導(dǎo)航系統(tǒng)中的應(yīng)用

    2.1 CORBA簡(jiǎn)介

    CORBA(Common Object Request Broker Architecture 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)),是一個(gè)為簡(jiǎn)化跨平臺(tái)應(yīng)用而提出的規(guī)范,其獨(dú)立于軟硬件平臺(tái)、網(wǎng)絡(luò)協(xié)議和編程語言,支持異構(gòu)的分布式計(jì)算環(huán)境和不同編程語言間的對(duì)象重用。CORBA 可以作為不同平臺(tái)應(yīng)用間信息傳遞的中間件,通過引入經(jīng)過充分驗(yàn)證的有效的框架結(jié)構(gòu)和通信手段,使應(yīng)用者聚焦業(yè)務(wù)邏輯方面的實(shí)現(xiàn),而無需關(guān)注通信的細(xì)節(jié)。CORBA 在銀行、航空、制造、軍事和電信等領(lǐng)域應(yīng)用廣泛[4]。

    圖1:通知服務(wù)的兩種實(shí)現(xiàn)結(jié)構(gòu)

    TAO(TheADAPTIVE Communication Environment ORB)是一個(gè)實(shí)時(shí)CORBA 平臺(tái),基于C++平臺(tái)開發(fā),符合CORBA2.6 規(guī)范。TAO 可以在包括Win32、UNIX 以及VxWorks 等實(shí)時(shí)操作系統(tǒng)的很多平臺(tái)上面使用。本文所述綜合導(dǎo)航系統(tǒng)采用TAO 進(jìn)行CORBA C++編程。

    2.2 綜合導(dǎo)航系統(tǒng)整體結(jié)構(gòu)

    針對(duì)海上拖纜勘探的作業(yè)特點(diǎn),為綜合導(dǎo)航系統(tǒng)設(shè)計(jì)結(jié)構(gòu):系統(tǒng)中心為數(shù)據(jù)服務(wù)節(jié)點(diǎn),主要作用是完成所有數(shù)據(jù)交互服務(wù)和系統(tǒng)供應(yīng),其他模塊圍繞數(shù)據(jù)服務(wù)節(jié)點(diǎn),任何類型的數(shù)據(jù)均可以由圍繞數(shù)據(jù)服務(wù)節(jié)點(diǎn)為中心的網(wǎng)絡(luò)的任一模塊節(jié)點(diǎn)產(chǎn)生,發(fā)送到數(shù)據(jù)服務(wù)節(jié)點(diǎn)緩存,再轉(zhuǎn)發(fā)給其他需要的節(jié)點(diǎn),其他節(jié)點(diǎn)可能會(huì)要求數(shù)據(jù)服務(wù)節(jié)點(diǎn)提供某些數(shù)據(jù)項(xiàng)給它們。

    綜合導(dǎo)航系統(tǒng)涉及到數(shù)據(jù)服務(wù)、系統(tǒng)配置、工區(qū)與測(cè)線管理、數(shù)據(jù)傳輸、作業(yè)控制、數(shù)據(jù)記錄、監(jiān)控、實(shí)時(shí)顯示、網(wǎng)絡(luò)解算、QC 等10 多個(gè)模塊,20 多個(gè)進(jìn)程,各模塊與數(shù)據(jù)服務(wù)模塊交互頻繁,對(duì)數(shù)據(jù)服務(wù)器及進(jìn)程間通信提出了較高的要求。基于本系統(tǒng)的特點(diǎn),本文提出了基于Corba 通知服務(wù)來構(gòu)建進(jìn)程間通信的方法,實(shí)際應(yīng)用表明,此種方法較為容易的實(shí)現(xiàn)了多進(jìn)程間數(shù)據(jù)的頻繁交互,克服了常用通信方式如socket 制定網(wǎng)絡(luò)協(xié)議、頻繁數(shù)據(jù)打包、解析等復(fù)雜的通信方式,大大降低了編程難度和復(fù)雜度。

    2.3 CORBA通知服務(wù)在綜合導(dǎo)航系統(tǒng)中的應(yīng)用

    CORBA 事件服務(wù)[5](Event Service)提供一種異步的、松散的通信機(jī)制, 其目標(biāo)是建立一個(gè)通用的分布式事件模型。但是事件服務(wù)明顯存在不能保證通信的可靠性、不支持服務(wù)質(zhì)量、不提供結(jié)構(gòu)化事件和過濾機(jī)制等局限性。因此,CORBA 增加了通知服務(wù)[6](Notification Service) ,即在事件服務(wù)的基礎(chǔ)上進(jìn)行功能擴(kuò)展,彌補(bǔ)事件服務(wù)的不足, 提高通信過程的可靠性及更多的保障。

    在分布式系統(tǒng)中,當(dāng)一些事件出現(xiàn)后,需要通知相關(guān)的系統(tǒng)組件。CORBA 通知服務(wù)提供了一個(gè)框架來異步發(fā)送通信消息(通知)到對(duì)象,提醒指定的事件已發(fā)生。通知服務(wù)體現(xiàn)在服務(wù)端的ORB 中,它為客戶端和服務(wù)端提供事件通道、事件代理,并實(shí)現(xiàn)了數(shù)據(jù)在兩端的推拉。CORBA 通知服務(wù)使用supplier/consumer 分布式模型,支持多個(gè)供應(yīng)者和多個(gè)消費(fèi)者,支持多對(duì)多異步通信。事件通道本身即充當(dāng)事件的供應(yīng)者又充當(dāng)該事件的消費(fèi)者,通過標(biāo)準(zhǔn)CORBA請(qǐng)求完成通信,當(dāng)某事件發(fā)生改變時(shí),將產(chǎn)生一個(gè)事件廣播到對(duì)該事件感興趣的一方[7]。通知服務(wù)的兩種實(shí)現(xiàn)結(jié)構(gòu)模型如圖1 所示。

    如上所述,綜合導(dǎo)航系統(tǒng)有原始實(shí)時(shí)數(shù)據(jù)、處理過的數(shù)據(jù)、控制信息等三種類型數(shù)據(jù),實(shí)時(shí)采集到的各種原始數(shù)據(jù)收集到數(shù)據(jù)服務(wù)器后,各顯示模塊需要實(shí)時(shí)更新顯示,軟件計(jì)算模塊將解算數(shù)據(jù)發(fā)送到數(shù)據(jù)服務(wù)器,其他模塊需要根據(jù)數(shù)據(jù)服務(wù)器的數(shù)據(jù)更新而實(shí)時(shí)更新,CORBA 通知服務(wù)輕松實(shí)現(xiàn)了上述過程。遵循CORBA 通知服務(wù)的建立過程,將各軟件模塊與數(shù)據(jù)服務(wù)器建立通知服務(wù)關(guān)系,通過push 模型,當(dāng)有新數(shù)據(jù)產(chǎn)生時(shí),數(shù)據(jù)服務(wù)器將結(jié)果“推送”到各模塊。此過程跟CORBA 事件服務(wù)類似,但通知服務(wù)客服了命名服務(wù)缺乏消息過濾機(jī)制,缺乏QoS 機(jī)制,Consumer 不知道存在的Supplier,也不知道Supplier 提供何種Event,Event 以Any 形式發(fā)送,缺乏結(jié)構(gòu)化的數(shù)據(jù)等缺點(diǎn)。

    通知服務(wù)的使用方法和事件服務(wù)類似,第一步是獲取事件通道對(duì)象, 生成管理對(duì)象,第二步生成代理對(duì)象,最后,提供者和消費(fèi)者就可以注冊(cè)在這個(gè)通道上,供應(yīng)者獲取消費(fèi)者代理,通過消費(fèi)者代理往事件通道推送數(shù)據(jù)。具體可以分為兩個(gè)步驟:

    步驟一:建立事件通道,供應(yīng)者獲取事件通道對(duì)象, 初始化管理對(duì)象和代理對(duì)象,供應(yīng)者注冊(cè)通道并向通道推送數(shù)據(jù)。

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

    其中參數(shù)MainNetSolutionChannel 為通道名。

    (1)初始化事件通道。

    通過調(diào)用事件通道工廠EventChannelFactory_var 的指針m_varEcf,獲取通道:

    (2)初始化供應(yīng)者管理。

    通過通道指針varEc 獲取提供者管理:

    (3)初始化消費(fèi)者代理并賦值。

    供應(yīng)者通過消費(fèi)代理推送數(shù)據(jù)

    步驟二:消費(fèi)者從事件通道獲取推送數(shù)據(jù)。

    從事件通道獲取數(shù)據(jù)比較簡(jiǎn)單,客戶端類似建立與事件通道的連接后,實(shí)現(xiàn)push_structed_event()函數(shù),獲取數(shù)據(jù)更新:

    push_structed_event(const CosNotification::StructdEvent &event)

    {

    SDnMainDatas *ptemp;

    event.remainder_of_body >>= ptemp;//從通道獲取數(shù)據(jù)

    *m_pSDnMainDatas = *ptemp;//結(jié)構(gòu)化數(shù)據(jù)賦值

    emit signalNodeDataUpdated();//更新信號(hào)

    }

    SDnMainDatas* mainData = m_pSDnMainDatas;

    int iLength = mainData->networkList.length();//獲取網(wǎng)絡(luò)數(shù)據(jù)長(zhǎng)度并賦值

    SNetworkNode node = mainData->networkList[i]; //獲取到的網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)并賦值

    至此,客戶端即可本地“透明”獲取從服務(wù)器端推送來的數(shù)據(jù),當(dāng)有數(shù)據(jù)改變時(shí),實(shí)時(shí)更新推送來的數(shù)據(jù)。注意此處用到了Qt 自定義更新信號(hào)signalNodeDataUpdated()。

    3 結(jié)束語

    本文利用CORBA 技術(shù)搭建了拖纜綜合導(dǎo)航系統(tǒng)的通信架構(gòu),該系統(tǒng)支持跨平臺(tái),可快捷方便的在Windows 及Linux 平臺(tái)下進(jìn)行部署;利用CORBA 通知服務(wù)滿足了多進(jìn)程間頻繁的數(shù)據(jù)交互要求,且大大降低了多進(jìn)程間通信的編程實(shí)現(xiàn)復(fù)雜度。在實(shí)時(shí)數(shù)據(jù)傳輸、多進(jìn)程交互等大型石油裝備系統(tǒng)應(yīng)用中,通知服務(wù)體現(xiàn)出強(qiáng)大的生命力,為同類系統(tǒng)的構(gòu)建提供了一種有益借鑒。

    猜你喜歡
    拖纜數(shù)據(jù)服務(wù)導(dǎo)航系統(tǒng)
    地理空間大數(shù)據(jù)服務(wù)自然資源調(diào)查監(jiān)測(cè)的方向分析
    拖纜引繩的設(shè)計(jì)改進(jìn)
    說說“北斗導(dǎo)航系統(tǒng)”
    拖纜對(duì)水下航行器的操縱性能影響
    潛水器水下拖帶航行運(yùn)動(dòng)響應(yīng)數(shù)值計(jì)算與性能分析
    船海工程(2018年5期)2018-11-01 09:15:16
    “北斗”導(dǎo)航系統(tǒng)是怎樣煉成的
    一種GNSS/SINS容錯(cuò)深組合導(dǎo)航系統(tǒng)設(shè)計(jì)
    如何運(yùn)用稅收大數(shù)據(jù)服務(wù)供給側(cè)結(jié)構(gòu)性改革
    解讀全球第四大導(dǎo)航系統(tǒng)
    基于頻繁子圖挖掘的數(shù)據(jù)服務(wù)Mashup推薦
    信丰县| 广德县| 忻州市| 台江县| 洪洞县| 微博| 金湖县| 乾安县| 翁牛特旗| 沐川县| 兴和县| 博湖县| 五峰| 阿拉善盟| 富民县| 昆明市| 清河县| 阿巴嘎旗| 塔河县| 康乐县| 镇沅| 金寨县| 唐海县| 黄龙县| 吴川市| 鹤岗市| 贵德县| 中江县| 呼伦贝尔市| 福建省| 子洲县| 双牌县| 梁河县| 静安区| 韶山市| 呼伦贝尔市| 徐水县| 昭通市| 三原县| 天气| 左权县|