波浪是海洋監(jiān)測中的重要監(jiān)測參數(shù)。SZF型波浪浮標(biāo)通過GSM通信將監(jiān)測的海浪參數(shù)上傳到岸站接收系統(tǒng),通過上位機(jī)軟件進(jìn)行數(shù)據(jù)的存儲、顯示、二次處理來進(jìn)行預(yù)定海域的海浪參數(shù)監(jiān)測。本文正是基于Microsoft Visual C++強(qiáng)大的可視化編程環(huán)境來開發(fā)接收系統(tǒng),完成友好的人機(jī)交互操作界面。
1 SZF型波浪浮標(biāo)簡介
SZF型波浪浮標(biāo)是國家863計劃海洋監(jiān)測技術(shù)成果標(biāo)準(zhǔn)化定型產(chǎn)品,自定型以來已在我國海洋臺站、海洋工程、海洋調(diào)查等領(lǐng)域應(yīng)用。
SZF型波浪浮標(biāo)采用重力加速度原理進(jìn)行波浪測量,當(dāng)波浪浮標(biāo)隨波面變化作升沉運動時,安裝在浮標(biāo)內(nèi)的垂直加速度計輸出一個反映波面升沉運動加速度的變化信號,對該信號做二次積分處理后,即可得到對應(yīng)于波面升沉運動高度變化的電壓信號,將該信號做模/數(shù)轉(zhuǎn)換和計算處理后可以得到波高的各種特征值及其對應(yīng)的波周期。利用波高傾斜一體化傳感器、方位傳感器除可以測得波高的各種特征值和對應(yīng)的波周期外,還可以測得浮標(biāo)隨波面縱傾、橫傾和浮標(biāo)方位的三組參數(shù),通過計算處理,得到波浪的傳播方向。浮標(biāo)測得的波浪各特征值,由浮標(biāo)上的通信機(jī)實現(xiàn)測量數(shù)據(jù)的發(fā)送傳遞,并對測量數(shù)據(jù)進(jìn)行存貯。
原本的數(shù)據(jù)接收處理機(jī)外型為一臺式機(jī)箱,尺寸不大于400 mm×400 mm×160 mm,重量不大于15 kg。起著接收、處理浮標(biāo)發(fā)送數(shù)據(jù)的作用。其中安裝了數(shù)據(jù)處理和控制板、數(shù)據(jù)接收機(jī)、接收天線、微型打印機(jī)和數(shù)據(jù)存儲器。另外具備與計算機(jī)通信的RS 232接口,可將數(shù)據(jù)實時傳送給計算機(jī)。由于體積小重量輕攜帶方便,可以適合野外等場合作業(yè)。但在岸站接收數(shù)據(jù)的情況下,需要配備一臺PC機(jī)以進(jìn)行上傳數(shù)據(jù)給上一級數(shù)據(jù)中心。在此基礎(chǔ)上,使用PC機(jī)來進(jìn)行數(shù)據(jù)接收,就可以實現(xiàn)數(shù)據(jù)接收和上傳兩種功能,節(jié)省了不必要的開支。
2 GSM通信接口設(shè)計
GSM是全球性標(biāo)準(zhǔn)的蜂窩無線電通信系統(tǒng),具有防盜拷能力佳、網(wǎng)絡(luò)容量大、手機(jī)號碼資源豐富、穩(wěn)定性強(qiáng)不易受干擾、信息靈敏等特點。適合作為近海海域通信系統(tǒng)媒介。
SZF型波浪浮標(biāo)通過GSM模塊來進(jìn)行數(shù)據(jù)通信。數(shù)據(jù)以短信形式發(fā)送至短信中心,短信中心再轉(zhuǎn)發(fā)給岸站接收模塊。由于網(wǎng)絡(luò)原因,網(wǎng)絡(luò)中心短信可能出現(xiàn)延發(fā)現(xiàn)象,接收模塊可能同時接收到多包數(shù)據(jù),數(shù)據(jù)包中數(shù)據(jù)信息包含浮標(biāo)處理器時鐘的發(fā)送時間,這樣接收包中解析數(shù)據(jù)不會造成數(shù)據(jù)的混亂。
本文采用的GSM模塊接口為五芯TTL電平,上位機(jī)接口為RS 232接口,在模塊和上位機(jī)之間使用電平轉(zhuǎn)換線連接以適應(yīng)上位機(jī)的接口電平。接口設(shè)計如圖1,圖2所示。電源使用10 V直流電源。
3 接收系統(tǒng)設(shè)計
SZF型波浪浮標(biāo)通過發(fā)射模塊發(fā)送數(shù)據(jù)包,上位機(jī)通過接收模塊接收數(shù)據(jù)包,再通過串口連接到PC機(jī)上,在PC機(jī)上進(jìn)行數(shù)據(jù)的二次處理。上位機(jī)接收軟件使用可視化開發(fā)環(huán)境VC++進(jìn)行開發(fā)。數(shù)據(jù)處理流程如圖3所示。
3.1 數(shù)據(jù)接收
由于是通過串口與PC機(jī)進(jìn)行通信,所以在程序設(shè)計時選用了Windows下的MSComm控件來進(jìn)行串口數(shù)據(jù)接收處理。MSComm控件通過串口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能,MSComm控件在串口編程時非常方便,本文使用其事件驅(qū)動方法,接收串口數(shù)據(jù)。為事件添加驅(qū)動函數(shù)程序如下:
ON_EVENT(CSZFRevSysDlg,IDC_MSCOMM1,1,CSZFRevSysDlg::OnCommMscomml,VTS_NONE)
對串口進(jìn)行初始化設(shè)置程序如下:
m_mscom.put_RThreshold(1);
m_mscom.put_InputMode(1);
其中特別注意的是:第一條設(shè)置表示串口接收到一個字符就觸發(fā)處理函數(shù),第二條設(shè)置表示設(shè)置輸入方式為二進(jìn)制,這樣才能對COle Sa leArray變量進(jìn)行操作,否則COleSafeArray默認(rèn)為test格式,不方便后面對數(shù)據(jù)進(jìn)行解析。
由于本系統(tǒng)Windows開發(fā)環(huán)境為Vista,所以為了保證在其他Windows環(huán)境下也可以運行程序,需要為MSComm添加注冊,注冊過程如圖4所示。
3.2 實時顯示
系統(tǒng)根據(jù)浮標(biāo)不同工作方式(定時測量方式,連續(xù)測量方式和檢測工作方式),以不同方式啟動/關(guān)閉串口。
浮標(biāo)一般工作在定時測量狀態(tài),串口是接收整點前6 min打開,準(zhǔn)備接收數(shù)據(jù),接收到數(shù)據(jù)包后,根據(jù)通信協(xié)議對數(shù)據(jù)包進(jìn)行解析,再分別顯示在界面相應(yīng)位置,如圖5所示,可供監(jiān)測人員實時的檢測數(shù)據(jù)。接收整點后10 min關(guān)閉串口,進(jìn)入休眠狀態(tài),如果關(guān)閉串口時有數(shù)據(jù)接收中,延時10 s再關(guān)閉串口。
此外,顯示界面還提供了加密門限值和安全距離設(shè)置操作。加密門限值以“十分之一大波波高”特征值作為比較參數(shù),當(dāng)標(biāo)準(zhǔn)測量測得的十分之一大波波高大于加密門限值時,自動轉(zhuǎn)為加密狀態(tài);安全距離設(shè)置可以選擇5種報警距離,一旦浮標(biāo)相鄰2次測量時間內(nèi),浮標(biāo)移動距離超過設(shè)置距離,超位報警燈會顯示紅色以示報警。
3.3 數(shù)據(jù)存儲
數(shù)據(jù)接收后存儲選擇Windows的access數(shù)據(jù)庫,access數(shù)據(jù)庫是一種桌面數(shù)據(jù)庫,適合中小型數(shù)據(jù)量的處理,在處理中小量數(shù)據(jù)時效率很高,而且簡潔方便?紤]到SZF型波浪浮標(biāo)作為一種小型海洋監(jiān)測儀器,數(shù)據(jù)量比較小,所以選用access數(shù)據(jù)庫能更好更快的存儲/查詢數(shù)據(jù)。
本文采用ADO方式方式訪問access數(shù)據(jù)庫,ADO使用存取數(shù)據(jù)源的COM組件,它提供了編程語言和統(tǒng)一數(shù)據(jù)訪問方式OLEDB的一個中間層。允許開發(fā)人員直接編寫訪問數(shù)據(jù)的代碼,降低了開發(fā)難度。
為了使用COM組件,必須在CWinAPP::InitInstance()函數(shù)中初始化COM庫:
CWinApp::InitInstance()
{
…
AfxOleInit();
…
}
然后需要引入ADO類型庫,需要在stdafx.h文件中加入:
# import”c:\program files\common files\system\ado\msado15.dll”
no_namespace rename(“EOF”,“adoEOF”)
這樣就可以連接數(shù)據(jù)源了,再對access數(shù)據(jù)庫使用SQL語言操作來進(jìn)行存儲數(shù)據(jù)。
3.4 數(shù)據(jù)查詢
本系統(tǒng)提供月查詢,在實時顯示界面點擊“數(shù)據(jù)查詢”,會出現(xiàn)數(shù)據(jù)查詢對話框,可選擇一個月份進(jìn)行數(shù)據(jù)查詢,包含所有的檢測數(shù)據(jù),界面如圖6所示。
4 結(jié)語
本系統(tǒng)經(jīng)過實踐測試證明,MSComm控件能良好的接收模塊發(fā)送的串行口數(shù)據(jù),通信信號良好,存儲數(shù)據(jù)完整。使用VC++編寫的上位機(jī)接收界面友好,方便監(jiān)測人員實時觀測數(shù)據(jù)和查詢歷史數(shù)據(jù)。通過一段時間的運行使用,很好的達(dá)到浮標(biāo)岸站接收系統(tǒng)要求,并預(yù)留了上傳通信接口,以后可以方便的擴(kuò)展數(shù)據(jù)向高一級數(shù)據(jù)中心傳輸?shù)墓δ,提高了系統(tǒng)的使用壽命。
作者:唐原廣 胡斌 來源:現(xiàn)代電子技術(shù)