引言
隨著鐵路信息化數字化的發展,提出了機車的在線實時監控,要求對車載設備的相關數據進行實時采集和存儲。這對為技術人員提供及時準確的機車信息,保證列車運行的安全有著重要的意義。
本文介紹一種基于VC++的機車實時監控系統,是由后臺控制監控系統和前臺采集系統所組成的一個分布式集成網絡。當控制監控系統與內燃機車進行通訊,則后臺控制監控系統顯示計算機顯示的就是機車數據記錄儀采集到的各種機車數據。
2 功能分析
2.1 上位機的軟件功能主要有以下幾點:
1)與下位機(機車數據儀)進行通信,完成對下位機的讀寫;
2)能夠對數據進行有效的識別,提取數據中的有用信息(如機車型號,機車編號,機車標稱功率等);
3)對有效數據進行處理,能夠以曲線或圖表形式顯示車輛運行狀況;
4)為數據的查找與定位提供方便的手段,便于局部數據分析;
5)具有存檔、打印功能。
2.2 上位機主控程序功能劃分:
3 軟件實現
3.1 通訊協議
所謂通訊協議就是通訊雙方為了達到正確傳送和接收數據而達成的一組通訊規定。它包括發送/接收數據的格式、數據編寫與解讀方法以及通訊參數的設定。在通訊協議中,通訊參數的設定是通訊的前提,包括串口的選取,波特率設定,有無奇偶校驗,數據位的位數,以及停止位的位數。下面介紹一下數據的格式和數據傳送。
數據格式: 定位數據從0開始。第0-第3字節=0x57, 0x77, 0x44, 0x4C為當量里程記錄儀轉儲數據文件類型標識頭;累計數據共176字節,占數據文件中的第24字節到第199字節;瞬時數據從第256字節開始,一直到結束,數據長度=瞬時數據的數據幀數×數據幀長;瞬時數據幀長包含幀校驗碼。文件尾占3字節=0x45, 0x4e, 0x44。
數據傳送:累積數據每176個字節數據為一個數據塊;瞬時數據的數據長度=瞬時數據的數據幀數×數據幀長;瞬時數據幀長包含幀校驗碼。
下位機每發送一個數據塊,隨即就發該數據塊的校驗和,如果檢驗和有誤,就重發該數據塊;如果數據未讀完,重復本操作,直到數據讀完。 命令中的校驗占一個字節,[校驗]=([命令]+[目標代碼]+[數據].字節1+…+[數據].字節n)mod 0x100。執行結果返回值中的校驗也占一個字節,[校驗]=([執行結果代碼]+[數據].字節1+…+[數據].字節n)mod 0x100。
3.2 通訊流程
監控系統與下位機(機車數據記錄儀)的通訊只需用到以下幾條命令:查詢下位機硬件工作狀態、查詢下位機數據紀錄狀態、讀累計數據、讀瞬時數據、寫數據。在上位機發出命令之前,下位機處于等待狀態;當命令發出之后,下位機探測所發出的命令并判斷該命令是否對自己操作。如果是,則按命令要求返回所要求的數據;如果不是,則不回應;下位機收到采集系統送過來的數據以后,對它進行分析和數據轉換,然后進行顯示和保存。
將上位機的各種命令獨立地建立一個類MasterCommand,就用來處理上位機向下位機發送的命令。以下是對這個類的定義。
//命令碼,命令碼長度,命令顯示字串,獲取的數據長度/最大長度,數據放置起始位置,數據標識定義位置
MasterCommand(char *comCode, const int &comCodeLen, CString comDispStr, const int &getDataLen, const int &dataPos, const int &dataSignPos)
{
init(comCode, comCodeLen, comDispStr, getDataLen, dataPos, dataSignPos);
}
3.2.1 查詢
A. 查詢下位機硬件工作狀態
用戶通過串口發送命令,如果命令正確執行,則返回硬件的工作狀態,根據數據交換
命令集可以判斷硬件工作得是否正常。程序將將硬件工作狀態顯示在用戶界面上,讓用戶可以很方便地了解硬件的工作狀態,如果發現硬件有工作不正常的狀態,就可以對硬件進行相應的處理。
B. 查詢下位機數據紀錄狀態
用戶通過串口發送命令,如果命令正確執行,則返回下位機數
據記錄狀態,根據數據交換命令集可以判斷數據記錄是否正常。如果數據記錄不正常,用戶也可以在界面上看到是哪方面出了問題,可以進行相應的處理。
3.2.2 讀數據
A. 讀累計數據
用戶在上位機發送讀累計數據的命令,下位機收到命令后向上位機返回執行結果。執行結果返回值:[執行結果代碼] [數據] [校驗]。
其中: [執行結果代碼] 和 [校驗] 均占一個字節。當命令校驗失敗或執行失敗時,下位機只返回 [執行結果代碼] 和 [校驗] 碼。累計數據一共占176個字節,在當量儀數據存儲格式中對每一個字節都有詳細的定義。在程序中按照格式將數據取出來,并在用戶界面顯示出來。在所有數據正確接收后用戶可以選擇保存數據,以供以后進一步地查看,對數據進行分析。
B. 讀瞬時數據
瞬時數據從第256字節開始,數據長度=瞬時數據的數據幀數×數據幀長;瞬時數據幀長包含幀校驗碼。
3.2.3 寫數據
主機下送數據到從機,寫當量記錄儀中的所有累計數據。執行正確時返回上位機要求寫入的數據(二進制表示)。便于上位機校驗。
4. 界面設計
控制系統的界面共有四個,它們是主界面、累計數據顯示界面、選擇寫入下位機數據界面。
⑴ 主界面
主界面是系統運行的主要界面,它的作用向下位機是發送各種命令和對串口通訊的參數進行設置,通過各種命令才會實現系統采集實時數據和進行監控的功能。也只有在發送各種命令時才會調用和顯示其他功能界面(如累計數據顯示界面等),也就是說主界面是其他功能界面的聯系紐帶。
在主界面的設計中采用了組合框、樹形視圖、列表框等控件,在界面下方的列表框中可以顯示運行的程序、出錯報告及系統的狀態等。
(2)累計數據顯示界面
此界面的作用是當上位機完成了采集下位機的累計數據時,可以由用戶選擇是否顯示采集的累計數據。用戶檢查了機車的累計數據后,可以在界面對累計數據進行更改,然后就將數據進行保存,以便將來對數據進行管理。
(3) 選擇寫入下位機數據界面
上位機采集到的數據都可以保存,若下位機此時的數據有必要進行更改,可以從以前采集到的數據中選擇一份寫入下位機,也就實現了系統的控制功能。
5. 小結
本系統在實際應用中運行良好,數據的完整性、實時性和程序的可靠性高。它操作簡便,具有很強的易用性。
-
計算機
+關注
關注
19文章
7527瀏覽量
88398 -
監控系統
+關注
關注
21文章
3939瀏覽量
176052 -
記錄儀
+關注
關注
1文章
471瀏覽量
21745
發布評論請先 登錄
相關推薦
評論