摘 要: 針對高速公路結(jié)冰檢測系統(tǒng),設(shè)計和開發(fā)了實現(xiàn)數(shù)據(jù)采集和處理的上位機軟件。上位機軟件集成了多傳感器節(jié)點的邏輯判斷和數(shù)據(jù)融合機制,實現(xiàn)了整個系統(tǒng)的通信、數(shù)據(jù)采集、曲線顯示、數(shù)據(jù)庫存儲等功能。實際應(yīng)用結(jié)果表明:該上位機軟件具有操作簡單、功能完善、穩(wěn)定性高和實時性強等優(yōu)點,能實時準確地實現(xiàn)對高速公路路面結(jié)冰狀態(tài)的實時檢測和預(yù)警。
關(guān)鍵詞: 路面結(jié)冰;結(jié)冰傳感器;上位機;實時監(jiān)控技術(shù)
0 引言
高速公路交通氣象觀測主要包括能見度觀測、路面氣象條件觀測、氣象環(huán)境觀測、視頻實景觀測4個主要方面。路面氣象條件觀測內(nèi)容主要包括路溫、路面狀況、冰點溫度以及融雪劑濃度等方面。路面狀況泛指路面處于干燥、(潮)濕、積水、積雪(霜)、結(jié)冰等狀態(tài),也包括水層、雪層、冰層的厚度情況。
結(jié)冰造成路面抗滑能力顯著降低,增加了汽車制動距離,容易使車輛發(fā)生打滑和側(cè)翻。據(jù)統(tǒng)計,在所有的交通安全事故中,路面結(jié)冰時的事故是干燥路面的10倍[1]。因此,路面結(jié)冰自動監(jiān)測和及時預(yù)警對于保障行車安全、減少交通事故具有重要意義。
從20世紀50年代開始,歐美一些發(fā)達國家開始進行結(jié)冰傳感器的研究。目前,國外結(jié)冰探測的方法以及相應(yīng)的結(jié)冰傳感器已發(fā)展到十幾種,包括壓差式、障礙式、振動式、潛熱式等[2-4]。國內(nèi)方面對結(jié)冰檢測技術(shù)的研究起步比較晚,資料顯示只有少數(shù)的高校與研究機構(gòu)在研究相關(guān)的結(jié)冰檢測技術(shù),如華中科技大學(xué)的光纖式結(jié)冰傳感器[5-6]。
為適應(yīng)高速公路氣象觀測系統(tǒng)自動化、智能化和網(wǎng)絡(luò)化的發(fā)展趨勢,作者所在的團隊設(shè)計和開發(fā)了基于多傳感器數(shù)據(jù)融合的高速公路結(jié)冰檢測預(yù)警系統(tǒng)。
結(jié)冰檢測系統(tǒng)總體結(jié)構(gòu)示意圖如圖1所示。該系統(tǒng)主要由傳感器網(wǎng)絡(luò)、數(shù)據(jù)采集傳輸模塊、光纖通信鏈路和軟件組成,實現(xiàn)了區(qū)域路面結(jié)冰狀態(tài)的檢測和預(yù)警。
圖1所示為常見的雙向四車道高速公路中單側(cè)車道。圖中虛線箭頭所指示方向即為相應(yīng)車道的行車方向。為了不影響正常的行車,減小行車中產(chǎn)生的灰塵等因素對傳感器產(chǎn)生的不利影響,同時又能夠獲得相對準確的結(jié)冰信息,傳感器安裝在行車較少的硬路肩與無行車的路緣帶交界處。
傳感機箱在獲取攝像機視頻信號的同時,獲取各點傳感器的信號值,并采用TCP/IP網(wǎng)絡(luò)傳輸協(xié)議將經(jīng)過處理的編碼信號發(fā)送至高速公路監(jiān)控中心,由專用的上位機軟件完成解析處理和實時顯示。
為了實現(xiàn)對傳感器的工作狀態(tài)進行實時監(jiān)測、傳感器數(shù)據(jù)的采集、組織和處理,以及路面結(jié)冰狀態(tài)的檢測和預(yù)警,在Windows操作系統(tǒng)下Microsoft Visual Studio 2010編程環(huán)境中設(shè)計和開發(fā)了高速公路結(jié)冰檢測系統(tǒng)的上位機軟件。
1 上位機軟件的架構(gòu)和功能
上位機和下位機通信,進行系統(tǒng)的參數(shù)設(shè)置、數(shù)據(jù)采集、顯示、存儲、查詢以及視頻監(jiān)控等功能。上位機軟件初始界面如圖2所示。
2 上位機軟件功能的實現(xiàn)
從架構(gòu)上講,上位機軟件主要由圖形用戶界面、數(shù)據(jù)分析與處理、數(shù)據(jù)庫和后臺軟件4部分組成。
從功能上講,上位機軟件主要包含5個功能模塊,分別為參數(shù)設(shè)置模塊、數(shù)據(jù)通信模塊、數(shù)據(jù)管理模塊、視頻監(jiān)控模塊和控制輸出模塊,如圖3所示。
2.1 通信處理模塊
通信建立上下位機之間的連接,連接成功后,上位機方可進行實時檢測、數(shù)據(jù)傳輸和視頻監(jiān)控等操作。高速公路結(jié)冰檢測系統(tǒng)中采用網(wǎng)絡(luò)通信的方式,實現(xiàn)遠距離的數(shù)據(jù)傳輸。
套接字(Socket)是為了方便網(wǎng)絡(luò)編程開發(fā)的程序接口,Socket是在應(yīng)用層和傳輸層之間的一個抽象層,將TCP/IP層復(fù)雜的操作抽象為幾個簡單的接口供應(yīng)用層調(diào)用以實現(xiàn)進程在網(wǎng)絡(luò)中通信[7]。
上下位機的以太網(wǎng)通信是基于異步非阻塞Socket封裝類中的函數(shù)實現(xiàn)的。上位機以客戶端的身份向服務(wù)端(下位機)發(fā)送數(shù)據(jù)請求,當服務(wù)器確認數(shù)據(jù)請求后返回數(shù)據(jù),客戶端讀取下位機返回的數(shù)據(jù),具體流程如圖4所示。
2.2 數(shù)據(jù)管理模塊
數(shù)據(jù)管理模塊主要實現(xiàn)上位機收到數(shù)據(jù)的解析,邏輯判斷,實時的數(shù)值顯示和曲線繪制,數(shù)據(jù)庫存儲和歷史數(shù)據(jù)查詢等功能。
上位機軟件將收到的數(shù)據(jù)按照指定的規(guī)則解析為傳感器的實時數(shù)據(jù),即電流、電壓、溫度等,然后通過傳感器的冰厚模型計算當前傳感器的冰厚。上位機界面上將顯示實時的冰厚值并繪制冰厚曲線,同時將數(shù)據(jù)存儲在數(shù)據(jù)庫中。
2.2.1 曲線繪制
上位機軟件中采用TeeChart控件實現(xiàn)實時冰厚、電壓、溫度曲線的顯示功能。TeeChart Pro是一款圖表圖形組件,支持Windows和Linux系統(tǒng)平臺,使用方便,有利于產(chǎn)品集成。
Teechart控件的操作流程包括:注冊控件、添加控件、初始化控件和刷新數(shù)據(jù)。初始化控件時,主要使用AddSeries()函數(shù)添加曲線系列,設(shè)置坐標軸的范圍、曲線的樣式、顏色等。在定時器中刷新數(shù)據(jù),根據(jù)實際需求選擇刷新數(shù)據(jù)的時間間隔,本上位機中采用500 ms。將實時數(shù)據(jù)存儲在CList中,在繪制曲線時,使用AddXY()函數(shù)刷新數(shù)據(jù)。
TeeChart控件除了完成基本的圖形曲線繪制外,用戶可根據(jù)需要開發(fā)注釋、多Y軸多量程、Y軸量程實時自適應(yīng)等功能。
2.2.2 數(shù)據(jù)存儲
上位機軟件將傳感器原始數(shù)據(jù)和處理后的數(shù)據(jù)存儲在Access數(shù)據(jù)庫中,為后期數(shù)據(jù)維護、查詢和分析以及故障分析等提供真實可靠的數(shù)據(jù)。VC++通過ADO(ActiveX數(shù)據(jù)對象)的方式來訪問Access數(shù)據(jù)庫,實現(xiàn)對數(shù)據(jù)的存儲和查詢等操作。在VC中,使用ADO之前必須在工程stdafx.h里添加對ADO的支持代碼,使用#import指令引入ADO動態(tài)鏈接庫文件,編譯器才能正確編譯。
ADO訪問數(shù)據(jù)庫,首先要創(chuàng)建數(shù)據(jù)庫(Connection)對象建立與數(shù)據(jù)源的連接,然后創(chuàng)建記錄集(Recordest)對象,實現(xiàn)對數(shù)據(jù)庫的訪問。向數(shù)據(jù)庫中的數(shù)據(jù)表寫入數(shù)據(jù)的代碼如下:
_RecordsetPtr m_pRecordset;//記錄
String strSQL;
m_pRecordset->Open("SELECT*FROM數(shù)據(jù)",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
strSQL.Format(_T("INSERT INTO數(shù)據(jù)(日期,時間,冰厚,溫度1,溫度2,溫度3))VALUES(′%s′,′%s′,′%.2f′,′%.2f′,′%.2f′,′%.2f′)"),strDay,strTime,IceThick,dTemp1,dTemp2,dTemp3);//創(chuàng)建數(shù)據(jù)表
m_pConnection->Execute((_bstr_t)strSQL,&value,adCmdText);//寫入數(shù)據(jù)庫
m_pRecordset->Close();
2.2.3 歷史數(shù)據(jù)查詢
歷史數(shù)據(jù)查詢的結(jié)果以曲線和列表兩種形式顯示。曲線顯示通過TeeChart控件實現(xiàn),直觀抽象,如圖5所示。列表顯示通過List Control控件實現(xiàn),具體詳細。二者都是通過ADO方式對數(shù)據(jù)庫進行操作,查詢符合條件的目標數(shù)據(jù),獲取數(shù)據(jù)結(jié)果在界面上呈現(xiàn)。
2.3 視頻監(jiān)控模塊
系統(tǒng)中為了實時監(jiān)測傳感器工作的路面狀態(tài),在應(yīng)用現(xiàn)場安裝??低暰W(wǎng)絡(luò)攝像機。上位機軟件中對??低昐DK進行二次開發(fā),集成了網(wǎng)絡(luò)攝像機圖像的實時預(yù)覽、錄像存儲、錄像回放和云臺控制等功能。
利用??低昐DK實現(xiàn)視頻監(jiān)控模塊的功能調(diào)用順序如圖6所示,視頻預(yù)覽和錄像功能調(diào)用的具體流程如圖7所示。
在上位機界面上添加一個靜態(tài)文本框作為視頻預(yù)覽窗口,此靜態(tài)文本框的句柄作為視頻預(yù)覽接口NET_DVR_RealPlay中預(yù)覽參數(shù)的播放窗口句柄。
在預(yù)覽成功的前提下,調(diào)用錄像存儲模塊實現(xiàn)網(wǎng)絡(luò)攝像機實時數(shù)據(jù)流的存儲。開發(fā)過程中主要涉及錄像存儲路徑、錄像文件的命名格式、錄像文件的時長、循環(huán)錄像等,可根據(jù)需求自由選擇。
調(diào)用??低昐DK中的接口錄制的視頻文件,必須使用??低暤慕獯a器解碼后才能播放。本文利用系統(tǒng)控件和??低暡シ艓霺DK中的播放函數(shù),開發(fā)了一個視頻播放器實現(xiàn)錄像的回放。
云臺控制模塊實現(xiàn)云臺轉(zhuǎn)動、調(diào)焦、調(diào)整光圈等基本操作。用戶可以在監(jiān)控中心操作云臺來遠程控制攝像機來觀察傳感器的工作狀態(tài)和路面的結(jié)冰狀態(tài)。
3 結(jié)論
本文介紹了高速公路結(jié)冰檢測系統(tǒng)上位機軟件的開發(fā)。上位機軟件在高速公路監(jiān)管部門監(jiān)控中心長時間不間斷運行,界面友好,操作簡便,數(shù)據(jù)傳輸穩(wěn)定;實現(xiàn)了傳感器數(shù)據(jù)和監(jiān)控圖像的采集、顯示、存儲和查詢功能,能準確地判斷路面是否結(jié)冰,若結(jié)冰能及時預(yù)警。本方法對其他實時測控系統(tǒng)的上位機軟件編寫具有一定的借鑒意義。
參考文獻
[1] 張愛英,丁德平,李迅,等.相似離度在北京市道面結(jié)冰預(yù)報中的初步應(yīng)用[J].氣象科技進展,2012,2(1):36-38.
[2] 馮金龍.高度公路路面結(jié)冰檢測系統(tǒng)的研究[D].南京:南京信息工程大學(xué),2011.
[3] 歐彥.路面結(jié)冰監(jiān)測技術(shù)研究進展[J].公路,2013(4):191-195.
[4] 孟遂珍.國外高速公路的管理和氣象信息[J].氣象科技,2000(4):60-62.
[5] 鄒建紅,葉林,葛俊鋒,等.一種用于氣象觀測的的光纖結(jié)冰探測儀的研制[J].儀表技術(shù)與傳感器,2012(4):15-18.
[6] 禹迅,葉林.機場地面結(jié)冰檢測系統(tǒng)的上位機軟件實現(xiàn)[J].計算機與數(shù)字工程,2013,41(6):993-995.
[7] 孫海民.精通Windows Sockets網(wǎng)絡(luò)開發(fā):基于Visual C++實現(xiàn)[M].北京:人民郵電出版社,2008.