<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 車載數(shù)據(jù)記錄壓縮算法的研究

          車載數(shù)據(jù)記錄壓縮算法的研究

          作者: 時間:2006-05-07 來源:網(wǎng)絡(luò) 收藏

          摘要:提出了緩變系統(tǒng)信息和實時測控數(shù)據(jù)信息分區(qū)存儲的方案,對系統(tǒng)信息采用了定長非壓縮算法,同時對數(shù)據(jù)信息采用了非定長的行間壓縮算法,并將此方案成功地運(yùn)用在“機(jī)車隨車質(zhì)量狀態(tài)故障診斷記錄裝置”中,滿足了裝置利用1024KBYTE的存儲空間,以16位精度每隔5S記錄一次32路實時參數(shù)變化以及大量系統(tǒng)信息,且連續(xù)記錄時間大于50小時的要求。

          關(guān)鍵詞:壓縮算法 數(shù)據(jù)記錄 車載

          本文引用地址:http://www.ex-cimer.com/article/242357.htm

          前言

          隨著大容量存儲技術(shù)的發(fā)展,數(shù)據(jù)記錄和轉(zhuǎn)儲被廣泛應(yīng)用于機(jī)電測控系統(tǒng)、智能儀器儀表等單片機(jī)系統(tǒng)之中,通過數(shù)據(jù)記錄可對系統(tǒng)進(jìn)行狀態(tài)監(jiān)測、故障診斷、安全監(jiān)控、事故分析等。在“機(jī)車隨車質(zhì)量狀態(tài)故障診斷記錄裝置”的設(shè)計中,采用兩片共計1024KBYTE的FLASHRAM 28SF040,對機(jī)車運(yùn)行中的司機(jī)號、車號、車次號、起始站、終止站、牽引重量、出退勤時間等緩變信息的記錄,以及機(jī)車質(zhì)量狀態(tài)故障監(jiān)測診斷的32路實時數(shù)據(jù)信息以16位精度每5s的實時記錄。為了滿足連續(xù)記錄50小時以上的實際需求,提出了緩變系統(tǒng)信息和實時數(shù)據(jù)信息分區(qū)存儲的方案,對系統(tǒng)信息采用了定長非壓縮算法,對實時數(shù)據(jù)信息采用了非定長的行間壓縮算法。并對數(shù)據(jù)記錄信息進(jìn)行了長度校核,同時對數(shù)據(jù)進(jìn)行了CRC校驗。

          車載數(shù)據(jù)記錄內(nèi)容及各參數(shù)記錄頻度分析

          機(jī)車隨車質(zhì)量狀態(tài)診斷記錄儀需要記錄的運(yùn)行信息內(nèi)容包括:車號(0~9999)、司機(jī)代碼號(0~99999)、車次號(0~99999)、起始站代碼(0~999)、終止站代碼(0~999)、牽引重量(0~9999),共計14BYTE。

          實時狀態(tài)參數(shù)包括:年、月、日、時、分、秒,6BYTE,以及柴油機(jī)轉(zhuǎn)速、主電流、六個分電流、電壓、軸溫、油水溫度、總管溫度、增壓壓力、進(jìn)回油(油耗)、馬達(dá)轉(zhuǎn)速、火情報警等32路實時參數(shù),各2BYTE。共計:6BYTE+2×32BYTE=70BYTE。

          機(jī)車運(yùn)行信息,其記錄的頻度是非常低的,大約每10小時記錄一次,記錄的條件為:系統(tǒng)上電、司機(jī)參數(shù)輸入,即輸入新的車號、司機(jī)代碼等。

          機(jī)車實時狀態(tài)參數(shù),其記錄的頻度為每5s全部記錄一次。但32路實時參數(shù)中,每次最多只有四分之一,即8個左右的量滿足記錄變化條件,且進(jìn)回油參數(shù)必須每5S記錄一次。

          幾種常用數(shù)據(jù)記錄算法分析

          非分區(qū)非壓縮算法

          通過以上的分析,如果我們將全部參數(shù)不采用任何壓縮記錄算法,則每5s記錄的數(shù)據(jù)長度將達(dá):6BYTE+14BYTE+64BYTE=84BYTE。這樣全部1024KBYTE的記錄容量只能記錄:

          1024 KBYTE ÷84 BYTE=1024×1024÷84 =12483 次

          記錄時間為:

          12483×5s=62415s=1040 min = 17 h

          分區(qū)非壓縮算法

          將系統(tǒng)1024KBYTE的存儲空間分成:0~63頁,每頁16KBYTE的分區(qū)存儲格式。將機(jī)車運(yùn)行信息14BYTE和上電時間或司機(jī)輸入?yún)?shù)時間以及其他系統(tǒng)參數(shù),如報警門限、標(biāo)定系數(shù)、DS1820/B20傳感器代碼等記錄在系統(tǒng)的0~63頁的0頁,共計16KBYTE的空間,因為系統(tǒng)信息只有在上電、復(fù)位和參數(shù)輸入時才需要記錄,所以16KBYTE的系統(tǒng)記錄區(qū)無需任何壓縮算法將足以滿足系統(tǒng)的使用。

          系統(tǒng)分區(qū)的0頁區(qū)為系統(tǒng)信息存儲區(qū),1~63頁區(qū)為數(shù)據(jù)信息存儲區(qū),如果數(shù)據(jù)記錄不采用壓縮的算法,則每5s需要70BYTE的存儲空間,這樣存儲次數(shù)為:

          63 × 16 KBYTE ÷ 70 BYTE =14745 次

          記錄時間為:

          14745 × 5s = 73725 s = 20 小時

          分區(qū)壓縮算法

          采用和分區(qū)非壓縮算法一樣的分區(qū)方法,即將系統(tǒng)1024KBYTE的空間分區(qū)為0~63頁區(qū),每頁區(qū)16KBYTE,第0頁區(qū)用于存儲系統(tǒng)信息,第1~63頁區(qū)存儲數(shù)據(jù)信息。

          通過分區(qū)非壓縮算法的分析,系統(tǒng)存儲區(qū)的16KBYTE足以滿足需要,關(guān)鍵在于數(shù)據(jù)信息的存儲算法,對圖2和圖3的分析,可以分析出如下信息:

          ①、系統(tǒng)信息的記錄和數(shù)據(jù)信息的記錄均需要記錄時間信息;

          ②、數(shù)據(jù)信息記錄的時間信息在系統(tǒng)信息不變的情況下,記錄時間間隔固定為5s;

          ③、數(shù)據(jù)信息記錄參數(shù)在數(shù)據(jù)不變的情況下重復(fù)記錄相同的數(shù)值;

          通過以上的分析,我們可以取消數(shù)據(jù)信息記錄中的時間信息,取消之后,只需要在記錄系統(tǒng)信息的同時,在系統(tǒng)記錄中記錄下數(shù)據(jù)信息的起始頁區(qū)和起始地址,這樣我們就可以通過系統(tǒng)信息定位數(shù)據(jù)信息的起始記錄位置和時間,以后每條記錄的時間間隔5s。

          通過一個32位的標(biāo)記信息,標(biāo)記每個數(shù)據(jù)信息的變化與否,如果某一數(shù)據(jù)沒有發(fā)生變化,標(biāo)記為0,變化則標(biāo)記為1,同時記錄下變化后的數(shù)值。

          如圖5所示,如D0代表柴油機(jī)轉(zhuǎn)速,當(dāng)D0=0時,表示當(dāng)前記錄中的柴油機(jī)轉(zhuǎn)速和上次的相同,此次無需記錄柴油機(jī)轉(zhuǎn)速值,D0=1時,表示柴油機(jī)轉(zhuǎn)速發(fā)生了變化,則需要記錄一次柴油機(jī)轉(zhuǎn)速。

          例如:司機(jī)號為1234號的司機(jī),2001年2月12日11時54分30秒上車,系統(tǒng)記錄區(qū)中記錄一條系統(tǒng)信息,其中記錄下此時數(shù)據(jù)記錄區(qū)中的起始頁區(qū)號(1BYTE,第1~63個16KBYTE,假設(shè)為第30頁)和起始地址(2BYTE,在當(dāng)前頁區(qū)16KBYTE的地址,假設(shè)起始地址為2E5FH)。他出乘時的第一條記錄從第30頁的2E5FH開始必須記錄全部32路參數(shù)的初始值,其32路的標(biāo)記單位全部為1。5s后,第1號參數(shù)和第5、7號參數(shù)發(fā)生了變化需要記錄,則記錄標(biāo)記中只有的D1=1、D5=1、D7=1,其它各位為0,隨后依次記錄第1號參數(shù)和第5、7號參數(shù)各2BYTE的數(shù)值。記錄格式如圖6所示。

          分區(qū)壓縮算法的解壓縮算法

          裝置通過數(shù)據(jù)轉(zhuǎn)儲進(jìn)入PC機(jī)數(shù)據(jù)分析處理系統(tǒng)后,根據(jù)分區(qū)壓縮算法,分析系統(tǒng)首先在第0頁中,依次以23BYTE為一條系統(tǒng)記錄,分別讀取各司機(jī)出乘時的起始時間,系統(tǒng)信息,以及對應(yīng)數(shù)據(jù)記錄區(qū)的起始頁區(qū)和起始地址,然后到對應(yīng)位置讀取第一條數(shù)據(jù)信息,首先讀取2BYTE的FFFFH記錄塊首,然后第1條信息中4BYTE的數(shù)據(jù)變化標(biāo)記信息判定當(dāng)前記錄中對應(yīng)參數(shù)的變化記錄情況,并在標(biāo)記之后依次讀取對應(yīng)變化參數(shù)的各2BYTE,接著讀取第1記錄的CRC校驗碼1BYTE。

          依照以上的方法,依次讀取數(shù)據(jù)記錄區(qū)的第2條數(shù)據(jù)記錄,沒有變化的參數(shù)值依然等于第1條記錄對應(yīng)的參數(shù)值。第1條記錄的記錄時間為系統(tǒng)記錄中的時間,第2條記錄的時間=第1記錄時間+5s,依次類推分別讀取以下數(shù)據(jù)記錄,并計算出記錄的時間。

          數(shù)據(jù)記錄長度校驗

          在數(shù)據(jù)記錄中增加了固定的2BYTE的FFFFH,同時在參數(shù)記錄中限定記錄的參數(shù)值不大于0FFFFH,這樣當(dāng)讀取4BYTE參數(shù)變化標(biāo)記,假定有n個參數(shù)變化記錄,則在4BYTE的參數(shù)變化標(biāo)記之后應(yīng)該正好有n個非0FFFFH的參數(shù)值,多于n或小于n都認(rèn)為此記錄有誤,此記錄的全部參數(shù)和上一條記錄相同,時間+5s。

          數(shù)據(jù)記錄CRC校驗

          數(shù)據(jù)壓縮記錄時,從0FFFFH塊首開始到最后一個變化參數(shù)的記錄數(shù)據(jù)采用8BIT的CRC校驗算法。如圖7所示。

          CRC=X8+X5+X4+1

          結(jié)語

          基于分區(qū)壓縮算法,在機(jī)車隨車質(zhì)量狀態(tài)診斷記錄裝置中,數(shù)據(jù)記錄區(qū)無需記錄時間,記錄參數(shù)也采用了壓縮記錄的算法,在32個參數(shù)中每5s平均最多只有8個參數(shù)發(fā)生變化需要記錄則記錄,則平均每條數(shù)據(jù)記錄的長度為23BYTE,因此,1~63頁的數(shù)據(jù)記錄可以存儲的記錄條數(shù)為:

          63 × 16 KBYTE ÷ 23 BYTE =44877 次

          連續(xù)記錄時間為:

          44877 × 5s = 224385 s = 62 小時

          連續(xù)記錄62小時,滿足了裝置連續(xù)記錄50小時的要求,且系統(tǒng)采用了記錄長度校核算法以及較為嚴(yán)格的CRC校驗算法,提高了裝置記錄數(shù)據(jù)的可靠性,該裝置已通過鄭州鐵路局技術(shù)鑒定,該裝置在一年半的裝車實際運(yùn)用中,記錄可靠,由于機(jī)車每天實際運(yùn)行時間小于15小時,且每條記錄平均變化數(shù)小于假定的8個,因此,實際記錄時間在6~7天左右。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();