技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于VC++的機(jī)車數(shù)據(jù)監(jiān)控系統(tǒng)

基于VC++的機(jī)車數(shù)據(jù)監(jiān)控系統(tǒng)

時(shí)間:2009-05-13 14:04:17來源:ronggang

導(dǎo)語:?機(jī)車數(shù)據(jù)監(jiān)控系統(tǒng)運(yùn)用VC++實(shí)現(xiàn)了對一內(nèi)燃機(jī)車運(yùn)行數(shù)據(jù)的實(shí)時(shí)監(jiān)控

摘 要:機(jī)車數(shù)據(jù)監(jiān)控系統(tǒng)運(yùn)用VC++實(shí)現(xiàn)了對一內(nèi)燃機(jī)車運(yùn)行數(shù)據(jù)的實(shí)時(shí)監(jiān)控。通過計(jì)算機(jī)的串口傳輸內(nèi)燃機(jī)車數(shù)據(jù)儀中采集到的各種數(shù)據(jù),如機(jī)車型號、機(jī)車類型、累計(jì)運(yùn)行時(shí)間等等,監(jiān)控機(jī)車的運(yùn)行狀態(tài)以實(shí)現(xiàn)對機(jī)車的控制。設(shè)計(jì)的重點(diǎn)在于系統(tǒng)管理的軟件方面,具體來說是系統(tǒng)上位機(jī)的設(shè)計(jì)。以MFC (Microsoft Foundation Class Library)思路用類來實(shí)現(xiàn)串行通信和多線程編程, 并輔助以開放式數(shù)據(jù)接口(ODBC)在應(yīng)用程序中實(shí)現(xiàn)數(shù)據(jù)庫功能。

關(guān)鍵詞:監(jiān)控系統(tǒng);串行通信;多線程;ODBC; MFC

Abstract: The Diesel Monitor System effects the real-time monitoring on the diesel with vc++6.0, which regulates data flow by correspondencing between two serial ports. All kinds of data acquired by data graphic instrument e.g. locomotive ID, locomotive type and cumulative run-time etc. is transmitted for monitoring and control the diesel. The important point in this design is developing upper machine. Using the conception of Class in MFC (Microsoft Foundation Class Library) to effect multi-thread and serial communication, and with auxiliary to ODBC (Open Database Connectivity) the application program can have database.

Key Words: Monitor system; Serial Communication; Multi-thread; ODBC; MFC

1 引言

隨著鐵路信息化數(shù)字化的發(fā)展,提出了機(jī)車的在線實(shí)時(shí)監(jiān)控,要求對車載設(shè)備的相關(guān)數(shù)據(jù)進(jìn)行實(shí)時(shí)采集和存儲。這對為技術(shù)人員提供及時(shí)準(zhǔn)確的機(jī)車信息,保證列車運(yùn)行的安全有著重要的意義。

本文介紹一種基于VC++的機(jī)車實(shí)時(shí)監(jiān)控系統(tǒng),是由后臺控制監(jiān)控系統(tǒng)和前臺采集系統(tǒng)所組成的一個(gè)分布式集成網(wǎng)絡(luò)。當(dāng)控制監(jiān)控系統(tǒng)與內(nèi)燃機(jī)車進(jìn)行通訊,則后臺控制監(jiān)控系統(tǒng)顯示計(jì)算機(jī)顯示的就是機(jī)車數(shù)據(jù)記錄儀采集到的各種機(jī)車數(shù)據(jù)。

2 功能分析

2.1 上位機(jī)的軟件功能主要有以下幾點(diǎn):

1)與下位機(jī)(機(jī)車數(shù)據(jù)儀)進(jìn)行通信,完成對下位機(jī)的讀寫;

2)能夠?qū)?shù)據(jù)進(jìn)行有效的識別,提取數(shù)據(jù)中的有用信息(如機(jī)車型號,機(jī)車編號,機(jī)車標(biāo)稱功率等);

3)對有效數(shù)據(jù)進(jìn)行處理,能夠以曲線或圖表形式顯示車輛運(yùn)行狀況;

4)為數(shù)據(jù)的查找與定位提供方便的手段,便于局部數(shù)據(jù)分析;

5)具有存檔、打印功能。

2.2 上位機(jī)主控程序功能劃分:

3 軟件實(shí)現(xiàn)

3.1 通訊協(xié)議

所謂通訊協(xié)議就是通訊雙方為了達(dá)到正確傳送和接收數(shù)據(jù)而達(dá)成的一組通訊規(guī)定。它包括發(fā)送/接收數(shù)據(jù)的格式、數(shù)據(jù)編寫與解讀方法以及通訊參數(shù)的設(shè)定。在通訊協(xié)議中,通訊參數(shù)的設(shè)定是通訊的前提,包括串口的選取,波特率設(shè)定,有無奇偶校驗(yàn),數(shù)據(jù)位的位數(shù),以及停止位的位數(shù)。下面介紹一下數(shù)據(jù)的格式和數(shù)據(jù)傳送。

數(shù)據(jù)格式: 定位數(shù)據(jù)從0開始。第0-第3字節(jié)=0x57, 0x77, 0x44, 0x4C為當(dāng)量里程記錄儀轉(zhuǎn)儲數(shù)據(jù)文件類型標(biāo)識頭;累計(jì)數(shù)據(jù)共176字節(jié),占數(shù)據(jù)文件中的第24字節(jié)到第199字節(jié);瞬時(shí)數(shù)據(jù)從第256字節(jié)開始,一直到結(jié)束,數(shù)據(jù)長度=瞬時(shí)數(shù)據(jù)的數(shù)據(jù)幀數(shù)×數(shù)據(jù)幀長;瞬時(shí)數(shù)據(jù)幀長包含幀校驗(yàn)碼。文件尾占3字節(jié)=0x45, 0x4e, 0x44。

數(shù)據(jù)傳送:累積數(shù)據(jù)每176個(gè)字節(jié)數(shù)據(jù)為一個(gè)數(shù)據(jù)塊;瞬時(shí)數(shù)據(jù)的數(shù)據(jù)長度=瞬時(shí)數(shù)據(jù)的數(shù)據(jù)幀數(shù)×數(shù)據(jù)幀長;瞬時(shí)數(shù)據(jù)幀長包含幀校驗(yàn)碼。

下位機(jī)每發(fā)送一個(gè)數(shù)據(jù)塊,隨即就發(fā)該數(shù)據(jù)塊的校驗(yàn)和,如果檢驗(yàn)和有誤,就重發(fā)該數(shù)據(jù)塊;如果數(shù)據(jù)未讀完,重復(fù)本操作,直到數(shù)據(jù)讀完。 命令中的校驗(yàn)占一個(gè)字節(jié),[校驗(yàn)]=([命令]+[目標(biāo)代碼]+[數(shù)據(jù)].字節(jié)1+…+[數(shù)據(jù)].字節(jié)n)mod 0x100。執(zhí)行結(jié)果返回值中的校驗(yàn)也占一個(gè)字節(jié),[校驗(yàn)]=([執(zhí)行結(jié)果代碼]+[數(shù)據(jù)].字節(jié)1+…+[數(shù)據(jù)].字節(jié)n)mod 0x100。

3.2 通訊流程

監(jiān)控系統(tǒng)與下位機(jī)(機(jī)車數(shù)據(jù)記錄儀)的通訊只需用到以下幾條命令:查詢下位機(jī)硬件工作狀態(tài)、查詢下位機(jī)數(shù)據(jù)紀(jì)錄狀態(tài)、讀累計(jì)數(shù)據(jù)、讀瞬時(shí)數(shù)據(jù)、寫數(shù)據(jù)。在上位機(jī)發(fā)出命令之前,下位機(jī)處于等待狀態(tài);當(dāng)命令發(fā)出之后,下位機(jī)探測所發(fā)出的命令并判斷該命令是否對自己操作。如果是,則按命令要求返回所要求的數(shù)據(jù);如果不是,則不回應(yīng);下位機(jī)收到采集系統(tǒng)送過來的數(shù)據(jù)以后,對它進(jìn)行分析和數(shù)據(jù)轉(zhuǎn)換,然后進(jìn)行顯示和保存。

將上位機(jī)的各種命令獨(dú)立地建立一個(gè)類MasterCommand,就用來處理上位機(jī)向下位機(jī)發(fā)送的命令。以下是對這個(gè)類的定義。

//命令碼,命令碼長度,命令顯示字串,獲取的數(shù)據(jù)長度/最大長度,數(shù)據(jù)放置起始位置,數(shù)據(jù)標(biāo)識定義位置

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. 查詢下位機(jī)硬件工作狀態(tài)

用戶通過串口發(fā)送命令,如果命令正確執(zhí)行,則返回硬件的工作狀態(tài),根據(jù)數(shù)據(jù)交換

命令集可以判斷硬件工作得是否正常。程序?qū)⒂布ぷ鳡顟B(tài)顯示在用戶界面上,讓用戶可以很方便地了解硬件的工作狀態(tài),如果發(fā)現(xiàn)硬件有工作不正常的狀態(tài),就可以對硬件進(jìn)行相應(yīng)的處理。

B. 查詢下位機(jī)數(shù)據(jù)紀(jì)錄狀態(tài)

用戶通過串口發(fā)送命令,如果命令正確執(zhí)行,則返回下位機(jī)數(shù)

據(jù)記錄狀態(tài),根據(jù)數(shù)據(jù)交換命令集可以判斷數(shù)據(jù)記錄是否正常。如果數(shù)據(jù)記錄不正常,用戶也可以在界面上看到是哪方面出了問題,可以進(jìn)行相應(yīng)的處理。

3.2.2 讀數(shù)據(jù)

A. 讀累計(jì)數(shù)據(jù)

用戶在上位機(jī)發(fā)送讀累計(jì)數(shù)據(jù)的命令,下位機(jī)收到命令后向上位機(jī)返回執(zhí)行結(jié)果。執(zhí)行結(jié)果返回值:[執(zhí)行結(jié)果代碼] [數(shù)據(jù)] [校驗(yàn)]。

其中: [執(zhí)行結(jié)果代碼] 和 [校驗(yàn)] 均占一個(gè)字節(jié)。當(dāng)命令校驗(yàn)失敗或執(zhí)行失敗時(shí),下位機(jī)只返回 [執(zhí)行結(jié)果代碼] 和 [校驗(yàn)] 碼。累計(jì)數(shù)據(jù)一共占176個(gè)字節(jié),在當(dāng)量儀數(shù)據(jù)存儲格式中對每一個(gè)字節(jié)都有詳細(xì)的定義。在程序中按照格式將數(shù)據(jù)取出來,并在用戶界面顯示出來。在所有數(shù)據(jù)正確接收后用戶可以選擇保存數(shù)據(jù),以供以后進(jìn)一步地查看,對數(shù)據(jù)進(jìn)行分析。

B. 讀瞬時(shí)數(shù)據(jù)

瞬時(shí)數(shù)據(jù)從第256字節(jié)開始,數(shù)據(jù)長度=瞬時(shí)數(shù)據(jù)的數(shù)據(jù)幀數(shù)×數(shù)據(jù)幀長;瞬時(shí)數(shù)據(jù)幀長包含幀校驗(yàn)碼。

3.2.3 寫數(shù)據(jù)

主機(jī)下送數(shù)據(jù)到從機(jī),寫當(dāng)量記錄儀中的所有累計(jì)數(shù)據(jù)。執(zhí)行正確時(shí)返回上位機(jī)要求寫入的數(shù)據(jù)(二進(jìn)制表示)。便于上位機(jī)校驗(yàn)。

4. 界面設(shè)計(jì)

控制系統(tǒng)的界面共有四個(gè),它們是主界面、累計(jì)數(shù)據(jù)顯示界面、選擇寫入下位機(jī)數(shù)據(jù)界面。

(1)主界面

主界面是系統(tǒng)運(yùn)行的主要界面,它的作用向下位機(jī)是發(fā)送各種命令和對串口通訊的參數(shù)進(jìn)行設(shè)置,通過各種命令才會實(shí)現(xiàn)系統(tǒng)采集實(shí)時(shí)數(shù)據(jù)和進(jìn)行監(jiān)控的功能。也只有在發(fā)送各種命令時(shí)才會調(diào)用和顯示其他功能界面(如累計(jì)數(shù)據(jù)顯示界面等),也就是說主界面是其他功能界面的聯(lián)系紐帶。

在主界面的設(shè)計(jì)中采用了組合框、樹形視圖、列表框等控件,在界面下方的列表框中可以顯示運(yùn)行的程序、出錯(cuò)報(bào)告及系統(tǒng)的狀態(tài)等。

(2)累計(jì)數(shù)據(jù)顯示界面

此界面的作用是當(dāng)上位機(jī)完成了采集下位機(jī)的累計(jì)數(shù)據(jù)時(shí),可以由用戶選擇是否顯示采集的累計(jì)數(shù)據(jù)。用戶檢查了機(jī)車的累計(jì)數(shù)據(jù)后,可以在界面對累計(jì)數(shù)據(jù)進(jìn)行更改,然后就將數(shù)據(jù)進(jìn)行保存,以便將來對數(shù)據(jù)進(jìn)行管理。

(3)選擇寫入下位機(jī)數(shù)據(jù)界面

上位機(jī)采集到的數(shù)據(jù)都可以保存,若下位機(jī)此時(shí)的數(shù)據(jù)有必要進(jìn)行更改,可以從以前采集到的數(shù)據(jù)中選擇一份寫入下位機(jī),也就實(shí)現(xiàn)了系統(tǒng)的控制功能。

5. 小結(jié)

本系統(tǒng)在實(shí)際應(yīng)用中運(yùn)行良好,數(shù)據(jù)的完整性、實(shí)時(shí)性和程序的可靠性高。它操作簡便,具有很強(qiáng)的易用性。

參考文獻(xiàn)

[1] 李現(xiàn)勇.Visual C++串口通信技術(shù)與工程實(shí)踐[M],人民郵電出版社,2002年.

[2] 李博軒.Visual C++圖形用戶界面開發(fā)指南[M],清華大學(xué)出版社,2000年.

[3] 劉刀柱.Visual C++6.0實(shí)踐與提高 數(shù)據(jù)庫篇[M],中國鐵道出版社,2001年.

[4] 網(wǎng)冠科技.Visual C++6.0程序設(shè)計(jì)工程師[M],機(jī)械工業(yè)出版社,2001年.

[5] Booch,G. Object-Orinted Analysis and Design[J],MA:AddisonWesley Publishing Company,1994.

[6] Pohl,I. Object-Oriented Programming Using C++[J], MA:AddisonWesley Publishing Company,1997.

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:基于TMS320F2812的雙通道高精...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號