?

基于差分GPS定位的深海采礦車運動軌跡監控軟件開發*

2017-12-29 06:15
網絡安全與數據管理 2017年24期
關鍵詞:車體差分基站

侯 奔

(長沙礦冶研究院有限責任公司深海礦產資源開發利用研究所,湖南 長沙 410012)

基于差分GPS定位的深海采礦車運動軌跡監控軟件開發*

侯 奔

(長沙礦冶研究院有限責任公司深海礦產資源開發利用研究所,湖南 長沙410012)

深海采礦車的行進軌跡對于采集效率非常重要,而現有的商業組態軟件難以滿足對采礦車軌跡監控的要求。針對這種現狀,提出以VisualC++軟件為平臺、基于差分GPS定位的深海采礦車運動軌跡監控軟件。根據需求分析,設計了實時通信、數據處理、圖形顯示和數據庫四個軟件模塊。根據實驗結果和保存的數據,對差分GPS定位的精度進行了分析。運行結果表明,該軟件實現了設計目標且具有很強的適應性。

差分GPS;軌跡監控;OPC;ADO

0 引言

深海采礦車是一種履帶式海底作業車輛,一般采用車體自行走方式采礦。車體上部用電纜和輸送管道與海面上的船體相連接,船體為車體供電產生動力,因此車體作業的區域和船體之間有相應的約束關系。為了保證采集效率和采集系統的安全運行,深海采礦車的采集作業必須在規定的海域進行。因此,務必對采礦車的運動軌跡進行實時監控,并隨時做相應調整。同時,運動軌跡監控軟件對于深入研究采礦車本身的運動和控制模型提供了理論和實驗依據,對于后續的采礦車按指定路徑運行的自動控制算法的研究同樣具有指導意義。

1 差分GPS定位系統整體設計

監控系統由GPS接收機、Opto22控制器和PC組成,如圖1所示。

圖1 差分GPS定位系統整體組成

本研究所用的海洋采礦試驗場地為長40 m,寬10 m,深5 m的水池,普通的GSP定位誤差為10 m以內,顯然不符合定位精度要求。本文采用差分定位的方式獲取更高的精度,由兩臺GPS組成差分定位系統,一臺基站和一臺移動站。差分信號由基站輸出到移動站,移動站根據差分信號進行定位修正,使定位精度達到厘米級。使用時基站固定不動,移動站安裝于運動體上。

Opto22控制器裝在車體中,用于采集車體各種傳感器的模擬信號和數字信號,同時接收GPS移動站的數據輸出。

PC是運動軌跡監控軟件的載體,與Opto22控制器處于同一局域網絡中,對Opto22的相關變量進行處理。監控軟件對車體的運動軌跡進行實時的圖形顯示、計算車體的速度等參數,并對所有運動參數進行保存,以便日后分析。

2 監控平臺軟件設計

運動軌跡監控軟件與Opto22控制器實時通信,接收其中需要進行顯示和進一步處理的變量。對從控制器中獲取的變量進行分析計算,將車體的平面直角坐標運動軌跡以圖形的方式實時刷新顯示;對重要數據進行保存,以供理論分析所用。綜上所述,監控軟件由實時通信、數據處理、圖形顯示和數據庫四個模塊組成。

2.1 實時通信模塊設計

圖2 實時通信模塊工作流程

本模塊采用OPC接口的方式進行設計。OPC是基于微軟的COM技術實現,被眾多PLC廠家支持的一種通用通信方式。其分為Server和Client端,Server端供應數據,Client端則使用數據。在本系統中,Opto22控制器就是OPC的Server端,而監控軟件就是Client端[1-5]。實時通信模塊的工作流程如圖2所示。

實時通信模塊的關鍵接口設計如下:

(1) 初始化一個服務器實例

IOPCServer

*InstantiateServer(wchar_t ServerName[]){

HRESULThr;

CLSIDclsid;

IOPCServer *opcServer;

hr = CLSIDFromProgID(ServerName,&clsid);

//獲取CLSID結構

……

hr = CoCreateInstance(clsid,

NULL,CLSCTX_LOCAL_SERVER,IID_IOPCServer,(void **)&opcServer);

//返回服務器實例

……

}

本監控軟件的服務端是Opto22控制器,因此ServerName這個參數填寫“Opto22.OpcServer.2”,調用后返回一個IOPCServer類型的指針,隨后針對數據組的操作都在這個指針上進行。

(2) 添加一個數據組

int AddTheGroup(IOPCServer* pIOPCServer,

IOPCItemMgt* &pIOPCItemMgt,wchar_t

*pGrpName,OPCHANDLE& hServerGroup){

……

HRESULThr =

pIOPCServer->AddGroup(……)

//添加數據組

……

}

pIOPCServer參數填入初始化服務器實例得到的IOPCServer指針參數,pIOPCItemMgt是一個返回的指向數據組的指針參數,針對數據組的操作都針對這個指針進行。pGrpName可以傳入任何名字,用來表示這個組。

(3)添加數據項

int AddTheItem(IOPCItemMgt* pIOPCItemMgt,

int numItems,OPCITEMDEF *opcItems,

OPCHANDLE *hServerItems){

OPCITEMRESULT*pAddResult=NULL;

HRESULT*pErrors = NULL;

HRESULThr =

pIOPCItemMgt->AddItems(numItems,

opcItems,&pAddResult,&pErrors);

//添加數據項

……

}

pIOPCItemMgt是添加數據組接口得到的指針,opcItems是實際需要添加到組中的數據項,numItems是數據項的個數。

(4)讀取數據接口

int ReadItems(IUnknown* pGroupIUnknown,

int num,OPCItems *pOPCItems)

pGroupIUnknown是添加數據組接口得到的指針,pOPCItems指向的數組用來保存獲取的數據,num是數組長度。

(5)寫入數據接口

int WriteItem(IUnknown* pGroupIUnknown,

OPCHANDLEhServerItem,VARIANT& varValue)

pGroupIUnknown是添加數據組接口得到的指針,hServerItem是添加數據項返回的句柄,varValue用來容納需要寫入Opto22控制器的具體數據。

2.2 數據處理模塊設計

本模塊從實時通信模塊中獲取的數據分為顯示類和計算類兩種數據,顯示類只需在軟件上簡單顯示車體各類傳感器信號、各類開關量檢測信號等信息;計算類則需進一步處理如車體的經度、緯度、時間數據,并從這些數據中算出車體當前相對于GPS基站的平面坐標、車體的運動速度等參數。

移動站的數據輸出格式為GPGGA語句,格式如下:

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx

其中幾個重要字段含義如表1所示。

表1 GPGGA語句各字段含義

從移動站GPS數據中得到的經緯度是WGS-84坐標,屬于大地坐標系。在實際的定位應用中,通常需要將WGS-84坐標轉換為高斯平面直角坐標系統。高斯坐標適合于大區域的展開,但是運算復雜;而采礦車通常只在較小范圍內運動,運動的區域可以近似為一個平面,因此宜采用一種較簡單的算法。本文定義GPS基站所處的位置作為直角坐標系的原點,X軸正方向定義沿緯度線圈向東,Y軸正方向定義經度線圈向北。則移動站所處位置相對于基站的平面坐標(X,Y)計算方法[6-7]如式(1)~式(6)所示。

(1)

(2)

(3)

(4)

(5)

Y=Xo×Log

(6)

式中,a為地球橢球長半軸;b為地球橢球短半軸;Lato為原點的緯度;Xo、Yo為原點的直角坐標;xA、yA為移動站沿緯線與過原點之經線交點的直角坐標;Log為過原點的緯線圈與移動站沿經線與之交點的經度差。

車體的運動速度計算如式(7)所示:

(7)

其中X1、X2、Y1、Y2為移動站相鄰兩點的X,Y直角坐標。

本模塊計算直角坐標的接口設計如下:

double calc_xy_log(double log1,double lat1,double

log2,double lat2,double *x,double *y){

基站直角坐標計算

移動站直角坐標計算

*x=移動站X坐標

*y=移動站Y坐標

}

其中,log1為GPS基站的經度;lat1為GPS基站的緯度;log2為GPS移動站的經度;lat2為GPS移動站的緯度;x為計算得出的移動站X坐標;y為計算得出的移動站Y坐標。

2.3 圖形顯示模塊設計

在計算處理模塊得出車體的(X,Y)坐標后,需要以圖形的形式進行實時顯示,本模塊主要的技術難點在于以下幾點:需要高速、實時顯示,同時要避免圖形的閃爍;繪圖效率要高,避免影響其他模塊工作;需要大數據量的保存,確保實驗中的每個軌跡點都有顯示。

根據以上要求,本模塊采用基于繼承的方式繪圖。原理是從CStatic類繼承出一個自定義的圖像類,在該類中進行數據的保存和繪制[8-9]。通過雙緩存的機制,提高繪圖的效率;重寫本類的OnPaint接口[10],解決圖形的閃爍問題;定義出適當的數據結構,保證每個運動軌跡點都能繪制出來。

該類的關鍵設計如下:

class Trace : public CStatic{

(Construction)

public:

CurveDevice(CWnd * parent,CRect

&rectBorder,int type);

void m_LoadData

(vector&rec);

virtual ~CurveDevice();

//加載所有數據

private:

vectorm_VecRecord;

//存儲所有的運動軌跡點

DWORDm_RecordStartPos;

//數組的當前起始位置

void Draw_XY(void);

//繪制X-Y直角坐標軌跡圖

};

本類中兩個結構體Coordinate、 CoordinateFloat分別是屏幕像素點和GPS移動站的(X,Y)坐標。將GPS坐標對應于屏幕的像素點通過m_LoadData接口完成。

void CurveDevice::CD_LoadData

(vector&rec){

int i;

Coordinate Coordinate_data;

for (i=0; i

{

(坐標變換公式,代碼略)

}

Draw_XY();

//繪制出軌跡圖

}

如果在窗口上直接繪圖,則會不斷產生WM_PAINT消息,導致閃爍的現象。本模塊采用雙緩存的方式繪圖,原理是在內存位圖中繪制圖形,然后一次性粘貼到需要顯示的窗口,其接口設計如下:

void Draw_XY(void){

CBitmap bmp;

//內存中承載臨時圖象的位圖

dcMem.CreateCompatibleDC(pDC);

//創建兼容內存DC

//創建兼容位圖

bmp.CreateCompatibleBitmap(&dcMem,rect.Width(),rect.Height());

……

pDC->BitBlt(0,0,rect.Width(),rect.Height(),&d

cMem,0,0,SRCCOPY);

//將內存DC上的圖象拷貝到前臺

}

2.4 數據庫模塊設計

在計算處理模塊得出結果后,同時要將數據保存到數據庫中,以便試驗后進行理論分析。本文采用ACCESS數據庫完成,其優點是小巧、速度快且安裝方便,作為Office辦公軟件的一部分,在大多數計算機中都有安裝。本監控軟件的數據庫表設計如表2所示。

表2 數據庫表設計

數據庫的操作接口有ODBC、DAO和ADO幾種,其中ADO[11-12]是速度最快的一種方式,滿足本系統的快速處理需求。使用ADO之前需要引入系統的ADO動態庫,在stdafx.h中加入如下代碼:

#import "C:Program FilesCommon FilesSystem

adomsado15.dll"no_namespace

rename("EOF","rsEOF")

關鍵接口設計如下:

(1)數據庫連接

BOOLADO_GetConn(_ConnectionPtr &pConn){

CString strSRC="Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=";

……

strSRC += "\vehicle.mdb";

//數據庫名稱

……

pConn->Open(……)

}

(2)數據庫寫入

int ADO_AddRecord

(_ConnectionPtr pConn,_RecordsetPtr pRst,void *DataBuf,int FileType,int flag){

ADO_GetRecordSet(pConn,pRst,FileType)

//獲取記錄集

pRst->AddNew();

pRst->PutCollect("Time",(_variant_t)str);

……

}

3 運行結果

3.1 定點定位實驗

根據GPS信號好壞進行兩次長時間定點運行實驗,每次運行6 h?;疚恢貌蛔?,移動站處于基站東北角1.4 m處,手工測量沿緯線距離基站約1.05 m,沿經線距離基站約0.95 m。作為動態定位實驗的基礎,定點實驗的目的在于檢測差分GPS定位的實際精度。

(1) GPS信號無遮擋

GPS信號無遮擋,實驗結果如表3所示,軌跡點分布如圖3所示。

表3 移動站直角坐標

(2)GPS信號有遮擋

GPS信號不能持續良好,有時出現遮擋情況,實驗結果如表4所示。軌跡點分布如圖4所示。

表4 移動站直角坐標

(3)移動站軌跡

圖3 實驗1軌跡圖

圖4 實驗2軌跡圖

表3、表4的極值數據是原始數據的統計值,實驗的原始數據記錄在本軟件的數據庫中。

3.2 采礦車運動定位實驗

在實驗水池中進行采礦車的行駛實驗,在監控軟件中得到實際運動軌跡如圖5所示,圖中曲線代表車體運動軌跡。

圖5 采礦車運動軌跡界面

實驗結果表明,差分GPS的定位精度與信號強度直接相關,不能出現遮擋的情況,否則將出現較大的誤差。因此在實際使用中,必須再引入其他輔助定位手段或一些處理算法來保證定位的可信度,這也是后續研究的重點內容。

4 結論

本文介紹了基于差分GPS定位的深海采礦車運動軌跡監控軟件開發,在Vsiual C++軟件平臺上,根據需求實現了實時通信、計算處理、圖形顯示和數據庫保存四個模塊。在作者單位的海洋采礦實驗場地的運行結果表明,軟件實現了運動軌跡跟蹤的功能,完成了車體控制器變量的監控。

在實際的深海采礦中,定位方式會發生改變,將由聲學定位和慣導結合的方式代替GPS。本監控軟件采用清晰的模塊劃分,耦合程度小,由硬件變化導致程序改變,只需改動數據處理模塊,以適應聲學和慣導的算法即可,其他模塊基本不變。

本文的方法創新點在于用低成本和高精度的方案,實現了海洋集礦車運動軌跡的在線監測,為集礦車在實驗階段的軌跡定位研究和控制方法研究提供了可靠的指導,其軟件實現方法適用于集礦車各階段的工程應用。

[1] MAHMOUD M S,SABIH M,ELSHAFEI M. Using OPC technology to support the study of advanced process control[J]. ISA Transactions,2015,55:155-167.

[2] GUERRERO L V,LPEZ V V,MEJA J E. Virtual commissioning with process simulation (tecnomatix)[J]. Computer-Aided Design and Applications,2014,11(S):11-19.

[3] 李勤,黨選舉. 基于COM的OPC技術研究及其接口實現[J]. 電子技術應用,2003,29(2):28-30.

[4] 熊建斌,王欽若,徐維超,等. 基于OPC技術的DPS多傳感器在線實時數據的采集與濾波[J]. 計算機工程與科學,2012,34(11):135-140.

[5] 樊鐳,張天開,葉冬. 加熱爐溫度控制系統的設計[J]. 微型機與應用,2013,32(16):85-86.

[6] 陳紹煒,孟祥祿,任磊. 地面動態跟蹤精度試驗中的坐標系變換研究[J]. 電子設計工程,2014,22(10):144-146.

[7] 肖體瓊,陳怡群,常春. GPS經緯度坐標轉平面坐標的簡化計算方法及精度分析[C].2005年中國農業工程學會學術年會,2005.

[8] 張克涵,張呼和,顧李馮. VC++環境下的電機狀態監測軟件設計[J]. 測控技術,2012,31(2):23-26.

[9] 王潤民,趙祥模,惠飛,等. 基于嵌入式Linux與QT的汽車虛擬儀表設計[J]. 現代電子技術,2012,35(6):1-4.

[10] 王玉菡,曾自強. 基于VC++6.O實現無閃爍連續實時曲線[J]. 重慶理工大學學報:自然科學版,2014,28(4):123-126.

[11] 王曉玲,趙楊. VC++通過ADO訪問數據庫方法擇優[J]. 數字技術與應用,2012,29(4):148.

[12] 孟培超,胡圣波,舒恒,等. 基于ADO數據庫連接池優化策略[J]. 計算機工程與設計,2013,34(5):1706-1710.

The monitoring software developing of moving trajectory of the ocean mining vehiclebased on differential GPS positioning

Hou Ben

(Laboratory of Exploitation and Utilization of Deep-sea Mineral Resourcesof Changsha Research Institute of Mining and Metallurgy Co.,LTD.,Changsha,410012,China)

The trajectory of the deep-sea mining vehicle is very important for the acquisition efficiency. However,the existing commercial configuration software is difficult to meet the requirements of mining vehicle trajectory monitoring. Thus the monitoring software of moving trajectory of the ocean mining vehicle based on differential GPS positioning is developed based on Visual C++ platform. According to requirement analysis,real-time communication module,data processing module,graphic display module and database module are designed. According to the experimental results and the stored data,the accuracy of differential GPS positioning is analyzed. The result shows that this software achieves the designing goal and has strong adaptability.

differential GPS; trajectory monitoring; OPC; ADO

湖南省工業領域技術創新項目(2016GK2031)

TP3

A

10.19358/j.issn.1674-7720.2017.24.004

侯奔.基于差分GPS定位的深海采礦車運動軌跡監控軟件開發J.微型機與應用,2017,36(24):11-15.

2017-06-29)

侯奔(1980-),男,碩士,高級工程師,主要研究方向:嵌入式軟件開發。

猜你喜歡
車體差分基站
RLW-KdV方程的緊致有限差分格式
數列與差分
基于移動通信基站建設自動化探討
可惡的“偽基站”
基于GSM基站ID的高速公路路徑識別系統
KAMAGWIESEL可交換車體運輸車探秘及模型賞析
小基站助力“提速降費”
基于差分隱私的大數據隱私保護
簡析地鐵車輛—鋁合金車體
相對差分單項測距△DOR
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合