基于VC++的汽車動態(tài)稱重系統(tǒng)軟件設(shè)計與實現(xiàn)
掃描二維碼
隨時隨地手機(jī)看文章
隨著我國經(jīng)濟(jì)的發(fā)展,作為國家經(jīng)濟(jì)命脈的公路運輸量也急劇增加,而超重車輛所占的比例也與日俱增,這已對交通安全和公路壽命造成了嚴(yán)重威脅。在此情況下,由于傳統(tǒng)的靜態(tài)稱重存在效率低,占地面積大,移動不方便等缺點,已不能滿足發(fā)展的需要。于是車輛行駛稱重技術(shù)(Weigh in Motion,WIM)作為一種智能稱重技術(shù)已得到了廣泛研究和迅速發(fā)展。動態(tài)稱重系統(tǒng)研發(fā)面臨的主要問題是怎樣在保持高精度的情況下,提高車輛通過的速度并降低成本。解決方法有兩個,一是引進(jìn)國外成套設(shè)備;二是自主研發(fā)。其中,引進(jìn)國外設(shè)備,因價格昂貴,維護(hù)不便等諸多因素,不能廣泛應(yīng)用;國內(nèi)對于動態(tài)稱重系統(tǒng)的研究和生產(chǎn)較國外稍晚,但發(fā)展迅速并日趨成熟。目前,國內(nèi)較為流行的是軸重測量,即分別測出車輛各軸的軸重,再由稱重系統(tǒng)計算出整車重量。整個系統(tǒng)由傳感器、數(shù)據(jù)采集卡、應(yīng)用軟件、數(shù)據(jù)庫系統(tǒng)以及微處理器、LCD和打印機(jī)等組成。本文針對動態(tài)稱重系統(tǒng)中數(shù)據(jù)采集、分析、處理、顯示、保存等環(huán)節(jié)的特點,采用面向?qū)ο蟮脑O(shè)計思想,在VC++平臺下研發(fā)動態(tài)稱重系統(tǒng)應(yīng)用軟件,該軟件具有實用性、可復(fù)用性、易擴(kuò)充及易維護(hù)等特點。
1 誤差分析及處理
動態(tài)稱重系統(tǒng)的誤差來源包括動態(tài)因素和靜態(tài)因素。動態(tài)因素主要有汽車自身的振動、稱重區(qū)路面的不平整,汽車經(jīng)過此區(qū)的速度及加速度。靜態(tài)因素主要體現(xiàn)在客觀環(huán)境的變化和硬件自身問題,如:當(dāng)時系統(tǒng)所處溫度、傳感器是否運行良好,模/數(shù)轉(zhuǎn)換的分辨率等。誤差的來源決定誤差的處理方式。一方面通過對檢測硬件條件和檢測方式的設(shè)定避免產(chǎn)生不必要的誤差,另一方面通過良好的數(shù)據(jù)處理方法提高軟件處理數(shù)據(jù)的精度,目前主要有以下幾種方法:ADV法、DV法、V法、位移積分法、補(bǔ)償法、專家系統(tǒng)、參數(shù)估計法、神經(jīng)網(wǎng)絡(luò)。在動態(tài)稱重系統(tǒng)中濾波方法主要有:有限幅濾波、中值濾波、算術(shù)平均值、滑動平均、加權(quán)平均濾波、復(fù)合濾波等方法。本軟件采用滑動加權(quán)平均濾波,即設(shè)一個數(shù)據(jù)緩沖區(qū)依順序存放N次采樣數(shù)據(jù),每采進(jìn)一個新數(shù)據(jù),就將最先采集的數(shù)據(jù)丟掉,而后求包括新數(shù)據(jù)在內(nèi)的N個數(shù)據(jù)的加權(quán)平均值,便得到該次采樣的有效數(shù)據(jù)。
其中:
式中:Xn為第n次采樣經(jīng)濾波后的輸出;Xn-i為未經(jīng)濾波的第n-i次采樣值;N為滑動平均項數(shù);Ci為加權(quán)。
2 應(yīng)用軟件的整體設(shè)計
2.1 系統(tǒng)結(jié)構(gòu)與主要模塊
本系統(tǒng)基于C/S三層架構(gòu),用戶接口層采用友好的GUI界面,主要是用戶相關(guān)操作的實現(xiàn)以及數(shù)據(jù)顯示;業(yè)務(wù)邏輯層進(jìn)行模塊化的設(shè)計,包括參數(shù)設(shè)置、數(shù)據(jù)采集、傳輸和處理;數(shù)據(jù)庫服務(wù)器層對數(shù)據(jù)庫的操作進(jìn)行封裝,主要完成數(shù)據(jù)的保存與維護(hù)。整個軟件功能模塊圖如圖1所示,包含了數(shù)據(jù)傳輸、數(shù)據(jù)處理、輸入/輸出、數(shù)據(jù)顯示等四大模塊。以信號的處理與顯示為核心,信號的流向如圖2所示,首先在稱重區(qū)不斷得到重力傳感器所采集的電壓信號,進(jìn)行濾波、放大、A/D轉(zhuǎn)換,并將所采集的數(shù)據(jù)根據(jù)上位機(jī)系統(tǒng)初始化形式,以串口或者網(wǎng)絡(luò)通信的方式傳輸,上位機(jī)對所接收的數(shù)據(jù)進(jìn)行判斷后,予以濾波、運算、存儲、顯示,并將所得出的結(jié)果以委決書或發(fā)票回饋于車主。
2.2 類圖
通過此類圖完整顯示本汽車動態(tài)稱重系統(tǒng)軟件的內(nèi)部靜態(tài)結(jié)構(gòu),如圖3所示。其中,CDatabase,CDis-pose,CDisplay,CTransport,CPrint,CQuery,CMotion-Line,CStaticLine分別表示數(shù)據(jù)庫連接類、數(shù)據(jù)處理類、數(shù)據(jù)顯示類、通信類、報表打印類、查詢類、動態(tài)曲線和靜態(tài)曲線類。數(shù)據(jù)處理類對數(shù)據(jù)傳輸類具有依賴性。
3 軟件實現(xiàn)
3.1 傳輸實現(xiàn)
工控系統(tǒng)的數(shù)據(jù)通信一般以串口為主,但由于串口通信只能用于短距離通信,網(wǎng)絡(luò)通信也得到了一定的應(yīng)用。本系統(tǒng)在通用性的前提下實現(xiàn)串口和網(wǎng)絡(luò)通信兩種方式??紤]到汽車動態(tài)稱重系統(tǒng)對數(shù)據(jù)的實時性、可靠性要求,通過對通信類采用多線程封裝,實現(xiàn)主動發(fā)送串口和網(wǎng)絡(luò)監(jiān)聽的實時數(shù)據(jù)采集,提高實時數(shù)據(jù)傳輸效率。用到的線程函數(shù)有兩個,一個是監(jiān)聽線程函數(shù)UINT ListenThread(LPVOID pParam),另一個是讀數(shù)據(jù)線程UINT ReadTread(LPVOID pParam)。由于本系統(tǒng)對同一串口的不同時讀寫,所以不存在同步操作,監(jiān)聽線程在后臺通過對WaitCommEvent事件的監(jiān)聽調(diào)用,讀取線程完成下位機(jī)數(shù)據(jù)的接收。
3.2 數(shù)據(jù)處理實現(xiàn)
由于動態(tài)稱重過程中存在大量的動態(tài)干擾因素,易造成傳輸模塊所傳數(shù)據(jù)存在較大誤差,所以首先選擇算法對接收數(shù)據(jù)濾波進(jìn)行預(yù)處理,然后進(jìn)行標(biāo)度轉(zhuǎn)換。數(shù)值計算求出軸重,而濾波是這部分的核心,下面給出加權(quán)滑動平均濾波的主要實現(xiàn)代碼:
3.3 數(shù)據(jù)顯示
顯示模塊主要完成三方面內(nèi)容:采集所得實時數(shù)據(jù)的動態(tài)曲線顯示,經(jīng)過處理后數(shù)據(jù)的靜態(tài)曲線顯示及整個軟件的界面顯示。動態(tài)曲線和靜態(tài)曲線分別繼承類CDisplay,該類以虛函數(shù)的形式只提供接口,并未具體實現(xiàn);子類在繼承后根據(jù)自己的實際情況分別實現(xiàn)。顯示類的設(shè)計如下:
通過對CDrawItem類的封裝使軟件界面的顯示以Windows系統(tǒng)為標(biāo)準(zhǔn),堅持置用戶與控制之下,減少用戶記憶負(fù)擔(dān),保持界面一致的原則。
3.4 數(shù)據(jù)庫類的設(shè)計
完成數(shù)據(jù)傳輸、處理以后,要對所得數(shù)據(jù)進(jìn)行存儲,以便查詢、統(tǒng)計。通過對數(shù)據(jù)庫訪問技術(shù)的比較發(fā)現(xiàn),ADO數(shù)據(jù)庫訪問技術(shù)具有易于使用,速度快,內(nèi)存支出少等優(yōu)點。本系統(tǒng)選擇以MFC為基礎(chǔ),對其三個主要對象Connection,Command,Recordset的屬性和方法進(jìn)行封裝,并命名為CWimDataBase類。在任何要用到數(shù)據(jù)庫操作之處只需加入其頭文件“CWimData-Base.h”并聲明對象,則調(diào)用其公共屬性和方法即可進(jìn)行數(shù)據(jù)庫操作。
如:利用m_WimDb對象調(diào)用函數(shù)ConnectDb連接數(shù)據(jù)庫。
4 結(jié) 語
針對目前主流動態(tài)稱重系統(tǒng)硬件結(jié)構(gòu)以及數(shù)據(jù)處理過程的特征,本應(yīng)用軟件采用面向?qū)ο蟮某绦蛟O(shè)計方法進(jìn)行設(shè)計并予以實現(xiàn),充分利用了面向?qū)ο笾械睦^承、封裝及多態(tài)等特點,實現(xiàn)了軟件的模塊化,達(dá)到了模塊之間高內(nèi)聚、低耦合。應(yīng)用測試表明,該軟件具有實用性、可復(fù)用性、易擴(kuò)充、易維護(hù)且界面友好,符合實際的應(yīng)用需要。