国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Qt多線程多串口的綜合導(dǎo)航模擬系統(tǒng)研究與應(yīng)用

2014-08-07 12:02:41阮福明朱耀強(qiáng)
天津科技 2014年10期
關(guān)鍵詞:羅經(jīng)模擬系統(tǒng)線程

王 斌,阮福明,朱耀強(qiáng)

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

基于Qt多線程多串口的綜合導(dǎo)航模擬系統(tǒng)研究與應(yīng)用

王 斌,阮福明,朱耀強(qiáng)

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

提出了一種基于Qt多線程多串口的綜合導(dǎo)航模擬系統(tǒng)的數(shù)據(jù)交互及實(shí)現(xiàn)方法,詳細(xì)論述了Qt多線程技術(shù)以及多串口通信,通過(guò)數(shù)據(jù)提取、時(shí)間間隔提取、多線程多串口通信、網(wǎng)絡(luò)通信等 4個(gè)步驟實(shí)現(xiàn)了綜合導(dǎo)航系統(tǒng)的室內(nèi)模擬,再現(xiàn)了一線作業(yè)場(chǎng)景。為保持槍控?cái)?shù)據(jù)和鳥控?cái)?shù)據(jù)的同步性,提出了基于網(wǎng)絡(luò)的同步方法,能較好地滿足綜合導(dǎo)航系統(tǒng)室內(nèi)數(shù)據(jù)模擬、數(shù)據(jù)交互、再現(xiàn)實(shí)際作業(yè)以及人員培訓(xùn)等需求,且其跨平臺(tái)技術(shù)使得該模擬系統(tǒng)能支持多平臺(tái)、國(guó)產(chǎn)綜合導(dǎo)航系統(tǒng)以及進(jìn)口導(dǎo)航系統(tǒng),具有較好的通用性。

Qt 多線程 多串口 綜合導(dǎo)航系統(tǒng) 數(shù)據(jù)模擬 INSP

0 引 言

海上油氣勘探離不開導(dǎo)航定位。綜合導(dǎo)航系統(tǒng)是海上地震勘探作業(yè)中的控制和指揮中心,導(dǎo)航資料對(duì)地震數(shù)據(jù)處理以及后期的鉆井定位起著至關(guān)重要的作用。由于海洋地震勘探作業(yè)流程復(fù)雜,行業(yè)性較強(qiáng),涉及到多種軟、硬件系統(tǒng)協(xié)同工作,軟件模塊多、功能復(fù)雜,對(duì)系統(tǒng)穩(wěn)定性、導(dǎo)航定位精度等方面提出了較高的要求,軟件開發(fā)難度大。目前我國(guó)在海洋石油勘探領(lǐng)域,綜合導(dǎo)航系統(tǒng)基本依賴進(jìn)口,如美國(guó)ION公司的Spectra和Orca系統(tǒng),被廣泛應(yīng)用于海上石油地震勘探作業(yè)中。[1]我國(guó)在勘探作業(yè)新方法、新技術(shù)等方面受制于人,國(guó)際競(jìng)爭(zhēng)力不強(qiáng)。

中國(guó)海洋石油總公司在20世紀(jì)八九十年代就引進(jìn)了綜合導(dǎo)航系統(tǒng),公司從“十二五”“863”項(xiàng)目“深水高精度地震勘探系統(tǒng)成套化研制”子課題《海上地震勘探拖纜控制與綜合導(dǎo)航系統(tǒng)研制》開始進(jìn)行海上地震勘探綜合導(dǎo)航系統(tǒng)研制,在軟件開發(fā)、導(dǎo)航定位等方面取得了一系列可喜的成果,目前已研制出二維綜合導(dǎo)航系統(tǒng),經(jīng)幾次海試后初步具備作業(yè)能力。[2]

在導(dǎo)航系統(tǒng)的研制過(guò)程中,由于接入的導(dǎo)航定位設(shè)備種類眾多,如 DGPS、RGPS、電羅經(jīng)、測(cè)深儀、羅經(jīng)鳥、水平鳥、槍陣、水速鳥等,有些設(shè)備可能接入多個(gè),如 DGPS、電羅經(jīng)等,設(shè)備分布于勘探船或者掛載于水下拖曳電纜,接口方式主要是 RS232。在離岸的導(dǎo)航系統(tǒng)日常調(diào)試中,難以做到將各種導(dǎo)航設(shè)備接入數(shù)據(jù)采集箱體,也就難以實(shí)時(shí)獲取各類原始導(dǎo)航定位數(shù)據(jù),在對(duì)導(dǎo)航數(shù)據(jù)采集平臺(tái)(INSP,integrated navigation system platform)的數(shù)據(jù)采集調(diào)試以及導(dǎo)航系統(tǒng)軟件與導(dǎo)航數(shù)據(jù)采集平臺(tái)的調(diào)試中都比較困難和難以驗(yàn)證;傳統(tǒng)的調(diào)試工具在發(fā)送數(shù)據(jù)格式上、并發(fā)性、發(fā)送時(shí)序等方面不能滿足日常調(diào)試要求,不能做到有效控制;在人員培訓(xùn)中,也不夠直觀和真實(shí),作業(yè)時(shí)不能立即上手;在物探船的設(shè)備連接、接線時(shí)由于儀器房設(shè)備眾多、接口各異,線路某段經(jīng)常做錯(cuò)或做反,數(shù)據(jù)收不到時(shí)不方便查找問題,需要有數(shù)據(jù)源驗(yàn)證;在作業(yè)時(shí)出現(xiàn)的問題,僅憑導(dǎo)航記錄文件P2、P1文件也無(wú)法在室內(nèi)形象地重現(xiàn)。因此,一套能按照時(shí)序發(fā)送各種導(dǎo)航定位數(shù)據(jù),能模擬實(shí)際海上作業(yè)的室內(nèi)導(dǎo)航模擬系統(tǒng)極為迫切。

本文提出了一種基于Qt多線程的多串口通信仿真設(shè)計(jì)方法,通過(guò)數(shù)據(jù)提取、時(shí)間間隔提取、多線程多串口通信、網(wǎng)絡(luò)通信等4個(gè)步驟實(shí)現(xiàn)了綜合導(dǎo)航系統(tǒng)的室內(nèi)模擬,再現(xiàn)了一線作業(yè)場(chǎng)景。

1 綜合導(dǎo)航系統(tǒng)作業(yè)流程

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

海洋地震勘探中,地震勘探船拖曳一條或多條電纜,隨著槍陣激發(fā),拖曳電纜采集地震波反射數(shù)據(jù),船載定位設(shè)備采集導(dǎo)航定位數(shù)據(jù)。船載定位設(shè)備主要有 DPGS、RGPS、電羅經(jīng),測(cè)深儀等;槍陣定位設(shè)備主要有槍陣聲學(xué)鳥、RGPS等;拖曳電纜定位設(shè)備主要有頭標(biāo)、尾標(biāo)、羅經(jīng)鳥、聲學(xué)鳥、深度傳感器等;輸出數(shù)據(jù)主要有導(dǎo)航頭段、槍控頭段等。各設(shè)備數(shù)據(jù)通過(guò)綜合導(dǎo)航系統(tǒng)數(shù)據(jù)采集平臺(tái)發(fā)送給導(dǎo)航系統(tǒng)軟件。各設(shè)備的導(dǎo)航定位原始數(shù)據(jù)記錄在原始導(dǎo)航數(shù)據(jù)文件中,以 UKOOA P2/94格式存儲(chǔ),將 P2/94格式的原始定位數(shù)據(jù)文件進(jìn)行解算,解算后的定位數(shù)據(jù)以P1/90格式存儲(chǔ)。勘探作業(yè)中導(dǎo)航系統(tǒng)的定位信號(hào)及各系統(tǒng)關(guān)系如圖1所示。

1.2 綜合導(dǎo)航系統(tǒng)數(shù)據(jù)流程及時(shí)間特性

導(dǎo)航定位設(shè)備具有各自的時(shí)間特性,如 DGPS數(shù)據(jù)一般 1,s一次,槍控?cái)?shù)據(jù)一炮一次,電羅經(jīng)數(shù)據(jù)約 0.2~0.4,s一次,因此導(dǎo)航模擬系統(tǒng)發(fā)送數(shù)據(jù)時(shí)要按照真實(shí)作業(yè)時(shí)序發(fā)送。在抽取 P2數(shù)據(jù)時(shí),不但抽取了各原始定位數(shù)據(jù),還抽取了時(shí)間間隔數(shù)據(jù),發(fā)送時(shí),讀取間隔數(shù)據(jù)文件發(fā)送。如丟炮時(shí),此炮數(shù)據(jù)標(biāo)記為-1(見表1)。

圖1 地震勘探船定位信號(hào)及各系統(tǒng)關(guān)系圖Fig.1 Positioning signals of a seismic survey vessel and the relations of various systems

表1 導(dǎo)航定位數(shù)據(jù)的時(shí)間特性Tab.1 Time responses of navigation positioning data

2 Qt及Qt多線程技術(shù)

2.1 Qt技術(shù)

Qt工具包是一個(gè)跨平臺(tái)的C++類庫(kù),并且是使用“一次編寫,隨處編譯”的方式用于構(gòu)建多平臺(tái)圖形用戶界程序的一套工具。由于 Qt是一個(gè)跨平臺(tái)的工具箱,可方便軟件應(yīng)用于絕大多數(shù)操作系統(tǒng)。目前,Qt支持的操作系統(tǒng)包括[3-6]:MS Windows各個(gè)系列版本;Macintosh-Max OS X;Unix/X11-Linux,IBM AIX,HP-UX,Sun Solaris,SGI IRIX 等 UNIX 或類UNIX系統(tǒng)。

另外,在地震數(shù)據(jù)處理中,剖面圖、曲線、三維圖形等都是常見的形態(tài),而 Qt的強(qiáng)大圖形處理機(jī)制使其能廣泛應(yīng)用于油氣勘探領(lǐng)域。

2.2 Qt多線程技術(shù)

Qt通過(guò) 3種形式提供了對(duì)線程的支持。它們分別是:平臺(tái)無(wú)關(guān)的線程類;線程安全的事件投遞;跨線程的信號(hào)槽連接。這使得開發(fā)輕巧的多線程 Qt程序更為容易,并能充分利用多處理器機(jī)器的優(yōu)勢(shì)。多線程編程也是一個(gè)有用的模式,它用于解決執(zhí)行較長(zhǎng)時(shí)間的操作而不至于用戶界面失去響應(yīng)。

2.3 Qt線程可重入性及線程與界面的響應(yīng)

在 Qt文檔中,術(shù)語(yǔ)“可重入”與“線程安全”被用來(lái)說(shuō)明一個(gè)函數(shù)如何用于多線程程序。假如一個(gè)類的任何函數(shù)在此類的多個(gè)不同實(shí)例上可以被多個(gè)線程同時(shí)調(diào)用,那么這個(gè)類被稱為是“可重入”的。假如不同的線程作用在同一個(gè)實(shí)例上仍可以正常工作,那么稱之為“線程安全”的。大多數(shù) C++類天生就是可重入的,因?yàn)樗鼈儍H僅引用成員數(shù)據(jù)[7]它的大多數(shù)非 GUI子類,如 QTimer、QTcpSocket、QUdpSocket、QProcess都是可重入的,因而這些類可以同時(shí)用于多線程。但GUI類,特別是QWidget與它的所有子類都是不可重入的,它們僅用于主線程。在實(shí)際應(yīng)用中,不能在非主線程中調(diào)用GUI類,常用方法是將耗時(shí)的操作放在獨(dú)立的線程中,將輸出結(jié)果放到主線程中顯示,可以通過(guò)跨線程的信號(hào)和槽實(shí)現(xiàn)。

3 基于 Qt多線程的多串口綜合導(dǎo)航模擬系統(tǒng)實(shí)現(xiàn)

3.1 串口擴(kuò)展

由于一般計(jì)算機(jī)很少有3個(gè)以上的串口,而發(fā)送至導(dǎo)航系統(tǒng)的導(dǎo)航數(shù)據(jù)大約需要 10多個(gè)端口,因此需要擴(kuò)展,通常臺(tái)式機(jī)的擴(kuò)展加串口卡實(shí)現(xiàn)較為方便(見圖 2)。

圖2 多串口卡Fig.2 A multi-serial port card

通常筆記本不適合裝多串口卡,可以通過(guò)安裝USB轉(zhuǎn)多串口線來(lái)實(shí)現(xiàn),一般 USB可以轉(zhuǎn)出 4串口,可以用兩條 USB轉(zhuǎn)串口線實(shí)現(xiàn) 8串口,再加上本地計(jì)算機(jī)還有其他 USB口,所以可以實(shí)現(xiàn)9個(gè)以上的串口(見圖3、4)。

圖3 多串口顯示效果Fig.3 Display effect of Multi-serial ports

圖4 USB分線擴(kuò)展器Fig.4 USB junction box

3.2 實(shí)現(xiàn)流程

實(shí)現(xiàn)步驟:數(shù)據(jù)抽取,從 P2文件抽取定位數(shù)據(jù)和時(shí)間間隔數(shù)據(jù);設(shè)置通信參數(shù),設(shè)置波特率、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位、數(shù)據(jù)流控制等;選擇串口,打開串口,如 windows下為“com1”,linux下為“ttyS0”;選擇抽取的導(dǎo)航定位文件和時(shí)間間隔文件;將數(shù)據(jù)和時(shí)間間隔數(shù)據(jù)通過(guò) Qt多線程多串口數(shù)據(jù)發(fā)送給INSP(綜合導(dǎo)航系統(tǒng)平臺(tái));槍數(shù)據(jù)、鳥數(shù)據(jù)的時(shí)間同步設(shè)置及響應(yīng)、數(shù)據(jù)發(fā)送;關(guān)閉串口,關(guān)閉網(wǎng)絡(luò),回放結(jié)束(見圖5)。

圖5 數(shù)據(jù)模擬過(guò)程流程圖Fig.5 Flow chart of the data simulation process

3.3 編程實(shí)現(xiàn)實(shí)現(xiàn)方法

自定義了通信基類 QextSerialBase,繼承了 QIO Device。QIODevice類是輸入/輸出設(shè)備的基類,像QFile、QBuffer和QSocket這些類繼承了 QIODevice,并且適當(dāng)?shù)貙?shí)現(xiàn)了像write()這樣的虛函數(shù)。

自定義類 Win_QextSerialPort繼承自 QextSerial Base,該類定義了設(shè)置波特率、數(shù)據(jù)位、停止位、校驗(yàn)位、停止位等方法。其構(gòu)造函數(shù)以端口名為參數(shù),并提供了事件驅(qū)動(dòng)等查詢方式。端口設(shè)置結(jié)構(gòu)體:

另外,還定義了信號(hào) readyRead();它可以查看串口是否有新的數(shù)據(jù)傳來(lái)。定義了發(fā)送數(shù)據(jù)的write()方法,基于 Qt實(shí)現(xiàn),用于將數(shù)據(jù)通過(guò)串口發(fā)送出去,其參數(shù)為QByteArray類型。

值得注意的是,當(dāng)串口數(shù)大約 9時(shí),windows下打開串口會(huì)出錯(cuò),常用的串口調(diào)試助手等工具也經(jīng)常有這樣的問題,解決方法是前面要加上前綴[8]"\\.\",例如,槍控系統(tǒng)的串口名為 COM24,加上前綴后為\.\COM24。語(yǔ)句:

3.4 多線程多串口數(shù)據(jù)發(fā)送實(shí)現(xiàn)

主界面發(fā)送按鈕的槽函數(shù)響應(yīng)時(shí),啟動(dòng)多線程:

線程的入口函數(shù)run函數(shù)建立輪詢,并調(diào)用發(fā)送各數(shù)據(jù)的函數(shù):

在發(fā)送 DGPS、RGPS等數(shù)據(jù)時(shí),按照上述串口發(fā)送方法,打開串口、設(shè)置通信參數(shù),讀取抽取的數(shù)據(jù),按條讀取發(fā)送,并在每條數(shù)據(jù)后加 ,相應(yīng)代碼:

//讀取數(shù)據(jù)去掉 然后加上 ,其中測(cè)深儀的數(shù)據(jù)后綴是 。

為保證多線程數(shù)據(jù)發(fā)送的完整性,每個(gè)發(fā)送數(shù)據(jù)端要加鎖。

ComDGPS1->write(senddata.toAscii());//發(fā)送串口內(nèi)容,按行發(fā)送,且有回車換行符;

其中 write()為 Qt的 QIODevice的成員函數(shù)。qint64 QIODevice::write(const QByteArray &byteArray),實(shí)現(xiàn)了串口數(shù)據(jù)的發(fā)送,參數(shù)為QbyteArray類型。

3.5 實(shí)際應(yīng)用與軟件運(yùn)行效果

通過(guò)兩個(gè)USB轉(zhuǎn)232分線器以及本地USB口實(shí)現(xiàn)多個(gè)串口,然后通過(guò)RT45轉(zhuǎn)232轉(zhuǎn)換頭將數(shù)據(jù)以RJ45形式接入綜合導(dǎo)航采集平臺(tái)(見圖6)。

經(jīng)測(cè)試,模擬系統(tǒng)運(yùn)行穩(wěn)定,數(shù)據(jù)解析、發(fā)送時(shí)序正確,導(dǎo)航數(shù)據(jù)能收到模擬系統(tǒng)發(fā)送的各導(dǎo)航定位數(shù)據(jù),滿足調(diào)試要求。

圖6 通過(guò)RJ45轉(zhuǎn)232接頭接入串口數(shù)據(jù)Fig.6 232 joint serial data via RJ45

4 結(jié) 語(yǔ)

本文利用Qt多線程技術(shù)完成了多串口的導(dǎo)航數(shù)據(jù)模擬與發(fā)送,再現(xiàn)了作業(yè)場(chǎng)景,通過(guò)網(wǎng)絡(luò)通信獲取預(yù)測(cè)炮號(hào),使得炮數(shù)據(jù)和鳥數(shù)據(jù)保持了正確的作業(yè)時(shí)序。本系統(tǒng)滿足室內(nèi)系統(tǒng)聯(lián)調(diào)、測(cè)試,以及人員培訓(xùn)等需求,且支持國(guó)產(chǎn)及進(jìn)口導(dǎo)航系統(tǒng)的調(diào)試。其跨平臺(tái)特征使得系統(tǒng)能運(yùn)行于 windows和 linux等常見平臺(tái),部署快捷方便,大大降低了傳統(tǒng) windows下C++多線程以及串口通信的實(shí)現(xiàn)復(fù)雜性。

繼續(xù)需要改進(jìn)的幾個(gè)方面有:時(shí)序觸發(fā)的精度有待進(jìn)一步提高,可以通過(guò)硬件觸發(fā)板來(lái)實(shí)現(xiàn),通過(guò)配置觸發(fā)時(shí)序,正確返回 TB,更接近實(shí)際作業(yè)效果;另外,鳥數(shù)據(jù)的發(fā)送目前是串口,三維作業(yè)的羅經(jīng)鳥數(shù)據(jù)、聲學(xué)鳥數(shù)據(jù)等都是基于網(wǎng)絡(luò)傳輸,下一步需將聲學(xué)鳥數(shù)據(jù)和羅經(jīng)鳥數(shù)據(jù)按照網(wǎng)絡(luò)數(shù)據(jù)重新抽取、解析、模擬發(fā)送,使得三維綜合導(dǎo)航作業(yè)得以更新。

[1]楊世學(xué),劉宇明. SPECTRA綜合導(dǎo)航系統(tǒng)中海洋勘探中的應(yīng)用[J]. 海洋測(cè)繪,2002,22(6):22-25.

[2]朱偉林. 中國(guó)近海找油的勘探戰(zhàn)略[J]. 中國(guó)海上油氣(地質(zhì)),1997,11(6):407-414.

[3]蔡志明,李立夏. 精通 Qt4編程[M]. 北京:電子工業(yè)出版社,2008.

[4]萬(wàn)長(zhǎng)勝. 用 Qt進(jìn)行面向?qū)ο筌浖脑O(shè)計(jì)與開發(fā)[J].核電子學(xué)與探測(cè)技術(shù),2004(3):311-313.

[5]李全虎. 交互界面開發(fā)工具——Qt[J]. 中國(guó)科技信息,2005(5):33.

[6]王愛文. Linux平臺(tái)下基于Qt的電子海圖的研究與實(shí)現(xiàn)[D]. 黑龍江:哈爾濱工程大學(xué),2004.

[7]胡雙炎. 一種多串口多線程數(shù)據(jù)采集方法的設(shè)計(jì)與應(yīng)用[J]. 職教與經(jīng)濟(jì)研究,2011(2):54-58.

Research and Application of an Integrated Navigation System based on Qt Multi-thread and Multi-serial Technologies

WANG Bin,RUAN Fuming,ZHU Yaoqiang
(Geophysical Technology Lab,R&D Centre,China Oilfield Services Limited,Tianjin 300451,China)

This paper proposed a method of data intercommunication for an Integrated Navigation System which is based on multi-thread and multi-serial of Qt,discussed the Qt multi-threading technology and the multi-serial communication and achieved a laboratory simulation of the integrated navigation system through data extraction,interval time extraction,multi-thread and multi-serial communication and network communication. Practical applications showed that the method was effective in the multi-process communication and data intercommunication of the system.The cross-platform technology allowed the simulation system to support the multi-platform,and support the domestic and import navigation system and its versatility was good.

Qt;multi-thread;multi-serial;integrated navigation system;data simulation;INSP

TP319

A

1006-8945(2014)10-0066-04

國(guó)家863計(jì)劃資助項(xiàng)目(2012AA09A211)。

2014-09-10

猜你喜歡
羅經(jīng)模擬系統(tǒng)線程
磁羅經(jīng)北極高緯海區(qū)航向誤差分析與補(bǔ)償
船海工程(2021年1期)2021-03-02 05:32:02
船上磁羅經(jīng)自差表相關(guān)要求
基于STM32單片機(jī)的微電網(wǎng)模擬系統(tǒng)設(shè)計(jì)
電子制作(2018年1期)2018-04-04 01:48:22
隨機(jī)游走對(duì)羅經(jīng)方位對(duì)準(zhǔn)的精度影響分析
粒子群算法優(yōu)化的捷聯(lián)羅經(jīng)初始對(duì)準(zhǔn)方法
淺談linux多線程協(xié)作
基于ARM和Zigbee 的變壓器試驗(yàn)培訓(xùn)模擬系統(tǒng)
電子制作(2017年23期)2017-02-02 07:16:50
虛擬現(xiàn)實(shí)焊接培訓(xùn)模擬系統(tǒng)在焊工培訓(xùn)中的應(yīng)用
焊接(2015年1期)2015-07-18 11:07:32
紅外通信模擬系統(tǒng)的設(shè)計(jì)
河南科技(2014年24期)2014-02-27 14:19:37
Linux線程實(shí)現(xiàn)技術(shù)研究
长岛县| 凯里市| 定州市| 宜春市| 绥滨县| 通州区| 永清县| 筠连县| 泰兴市| 精河县| 化州市| 高淳县| 澄迈县| 应用必备| 武定县| 安远县| 蒙自县| 康保县| 长乐市| 瑞昌市| 连城县| 富裕县| 张家口市| 宁武县| 新民市| 瓦房店市| 高邑县| 革吉县| 个旧市| 丘北县| 缙云县| 广南县| 鹿邑县| 沁源县| 台江县| 无锡市| 宁夏| 洪泽县| 铜川市| 尚志市| 莱西市|