車(chē)載數據記錄壓縮算法的研究
摘要:提出了緩變系統信息和實(shí)時(shí)測控數據信息分區存儲的方案,對系統信息采用了定長(cháng)非壓縮算法,同時(shí)對數據信息采用了非定長(cháng)的行間壓縮算法,并將此方案成功地運用在“機車(chē)隨車(chē)質(zhì)量狀態(tài)故障診斷記錄裝置”中,滿(mǎn)足了裝置利用1024KBYTE的存儲空間,以16位精度每隔5S記錄一次32路實(shí)時(shí)參數變化以及大量系統信息,且連續記錄時(shí)間大于50小時(shí)的要求。
關(guān)鍵詞:壓縮算法 數據記錄 車(chē)載
前言
隨著(zhù)大容量存儲技術(shù)的發(fā)展,數據記錄和轉儲被廣泛應用于機電測控系統、智能儀器儀表等單片機系統之中,通過(guò)數據記錄可對系統進(jìn)行狀態(tài)監測、故障診斷、安全監控、事故分析等。在“機車(chē)隨車(chē)質(zhì)量狀態(tài)故障診斷記錄裝置”的設計中,采用兩片共計1024KBYTE的FLASHRAM 28SF040,對機車(chē)運行中的司機號、車(chē)號、車(chē)次號、起始站、終止站、牽引重量、出退勤時(shí)間等緩變信息的記錄,以及機車(chē)質(zhì)量狀態(tài)故障監測診斷的32路實(shí)時(shí)數據信息以16位精度每5s的實(shí)時(shí)記錄。為了滿(mǎn)足連續記錄50小時(shí)以上的實(shí)際需求,提出了緩變系統信息和實(shí)時(shí)數據信息分區存儲的方案,對系統信息采用了定長(cháng)非壓縮算法,
對實(shí)時(shí)數據信息采用了非定長(cháng)的行間壓縮算法。并對數據記錄信息進(jìn)行了長(cháng)度校核,同時(shí)對數據進(jìn)行了CRC校驗。
車(chē)載數據記錄內容及各參數記錄頻度分析
機車(chē)隨車(chē)質(zhì)量狀態(tài)診斷記錄儀需要記錄的運行信息內容包括:車(chē)號(0~9999)、司機代碼號(0~99999)、車(chē)次號(0~99999)、起始站代碼(0~999)、終止站代碼(0~999)、牽引重量(0~9999),共計14BYTE。
實(shí)時(shí)狀態(tài)參數包括:年、月、日、時(shí)、分、秒,6BYTE,以及柴油機轉速、主電流、六個(gè)分電流、電壓、軸溫、油水溫度、總管溫度、增壓壓力、進(jìn)回油(油耗)、馬達轉速、火情報警等32路實(shí)時(shí)參數,各2BYTE。共計:6BYTE+2×32BYTE=70BYTE。
機車(chē)運行信息,其記錄的頻度是非常低的,大約每10小時(shí)記錄一次,記錄的條件為:系統上電、司機參數輸入,即輸入新的車(chē)號、司機代碼等。
機車(chē)實(shí)時(shí)狀態(tài)參數,其記錄的頻度為每5s全部記錄一次。但32路實(shí)時(shí)參數中,每次最多只有四分之一,即8個(gè)左右的量滿(mǎn)足記錄變化條件,且進(jìn)回油參數必須每5S記錄一次。
幾種常用數據記錄算法分析
非分區非壓縮算法
通過(guò)以上的分析,如果我們將全部參數不采用任何壓縮記錄算法,則每5s記錄的數據長(cháng)度將達:6BYTE+14BYTE+64BYTE=84BYTE。這樣全部1024KBYTE的記錄容量只能記錄:
1024 KBYTE ÷84 BYTE=1024×1024÷84 =12483 次
記錄時(shí)間為:
12483×5s=62415s=1040 min = 17 h
分區非壓縮算法
將系統1024KBYTE的存儲空間分成:0~63頁(yè),每頁(yè)16KBYTE的分區存儲格式。將機車(chē)運行信息14BYTE和上電時(shí)間或司機輸入參數時(shí)間以及其他系統參數,如報警門(mén)限、標定系數、DS1820/B20傳感器代碼等記錄在系統的0~63頁(yè)的0頁(yè),共計16KBYTE的空間,因為系統信息只有在上電、復位和參數輸入時(shí)才需要記錄,所以16KBYTE的系統記錄區無(wú)需任何壓縮算法將足以滿(mǎn)足系統的使用。
系統分區的0頁(yè)區為系統信息存儲區,1~63頁(yè)區為數據信息存儲區,如果數據記錄不采用壓縮的算法,則每5s需要70BYTE的存儲空間,這樣存儲次數為:
63 × 16 KBYTE ÷ 70 BYTE =14745 次
記錄時(shí)間為:
14745 × 5s = 73725 s = 20 小時(shí)
分區壓縮算法
采用和分區非壓縮算法一樣的分區方法,即將系統1024KBYTE的空間分區為0~63頁(yè)區,每頁(yè)區16KBYTE,第0頁(yè)區用于存儲系統信息,第1~63頁(yè)區存儲數據信息。
通過(guò)分區非壓縮算法的分析,系統存儲區的16KBYTE足以滿(mǎn)足需要,關(guān)鍵在于數據信息的存儲算法,對圖2和圖3的分析,可以分析出如下信息:
①、系統信息的記錄和數據信息的記錄均需要記錄時(shí)間信息;
②、數據信息記錄的時(shí)間信息在系統信息不變的情況下,記錄時(shí)間間隔固定為5s;
③、數據信息記錄參數在數據不變的情況下重復記錄相同的數值;
通過(guò)以上的分析,我們可以取消數據信息記錄中的時(shí)間信息,取消之后,只需要在記錄系統信息的同時(shí),在系統記錄中記錄下數據信息的起始頁(yè)區和起始地址,這樣我們就可以通過(guò)系統信息定位數據信息的起始記錄位置和時(shí)間,以后每條記錄的時(shí)間間隔5s。
通過(guò)一個(gè)32位的標記信息,標記每個(gè)數據信息的變化與否,如果某一數據沒(méi)有發(fā)生變化,標記為0,變化則標記為1,同時(shí)記錄下變化后的數值。
如圖5所示,如D0代表柴油機轉速,當D0=0時(shí),表示當前記錄中的柴油機轉速和上次的相同,此次無(wú)需記錄柴油機轉速值,D0=1時(shí),表示柴油機轉速發(fā)生了變化,則需要記錄一次柴油機轉速。
例如:司機號為1234號的司機,2001年2月12日11時(shí)54分30秒上車(chē),系統記錄區中記錄一條系統信息,其中記錄下此時(shí)數據記錄區中的起始頁(yè)區號(1BYTE,第1~63個(gè)16KBYTE,假設為第30頁(yè))和起始地址(2BYTE,在當前頁(yè)區16KBYTE的地址,假設起始地址為2E5FH)。他出乘時(shí)的第一條記錄從第30頁(yè)的2E5FH開(kāi)始必須記錄全部32路參數的初始值,其32路的標記單位全部為1。5s后,第1號參數和第5、7號參數發(fā)生了變化需要記錄,則記錄標記中只有的D1=1、D5=1、D7=1,其它各位為0,隨后依次記錄第1號參數和第5、7號參數各2BYTE的數值。記錄格式如圖6所示。
分區壓縮算法的解壓縮算法
裝置通過(guò)數據轉儲進(jìn)入PC機數據分析處理系統后,根據分區壓縮算法,分析系統首先在第0頁(yè)中,依次以23BYTE為一條系統記錄,分別讀取各司機出乘時(shí)的起始時(shí)間,系統信息,以及對應數據記錄區的起始頁(yè)區和起始地址,然后到對應位置讀取第一條數據信息,首先讀取2BYTE的FFFFH記錄塊首,然后第1條信息中4BYTE的數據變化標記信息判定當前記錄中對應參數的變化記錄情況,并在標記之后依次讀取對應變化參數的各2BYTE,接著(zhù)讀取第1記錄的CRC校驗碼1BYTE。
依照以上的方法,依次讀取數據記錄區的第2條數據記錄,沒(méi)有變化的參數值依然等于第1條記錄對應的參數值。第1條記錄的記錄時(shí)間為系統記錄中的時(shí)間,第2條記錄的時(shí)間=第1記錄時(shí)間+5s,依次類(lèi)推分別讀取以下數據記錄,并計算出記錄的時(shí)間。
數據記錄長(cháng)度校驗
在數據記錄中增加了固定的2BYTE的FFFFH,同時(shí)在參數記錄中限定記錄的參數值不大于0FFFFH,這樣當讀取4BYTE參數變化標記,假定有n個(gè)參數變化記錄,則在4BYTE的參數變化標記之后應該正好有n個(gè)非0FFFFH的參數值,多于n或小于n都認為此記錄有誤,此記錄的全部參數和上一條記錄相同,時(shí)間+5s。
數據記錄CRC校驗
數據壓縮記錄時(shí),從0FFFFH塊首開(kāi)始到最后一個(gè)變化參數的記錄數據采用8BIT的CRC校驗算法。如圖7所示。
CRC=X8+X5+X4+1
結語(yǔ)
基于分區壓縮算法,在機車(chē)隨車(chē)質(zhì)量狀態(tài)診斷記錄裝置中,數據記錄區無(wú)需記錄時(shí)間,記錄參數也采用了壓縮記錄的算法,在32個(gè)參數中每5s平均最多只有8個(gè)參數發(fā)生變化需要記錄則記錄,則平均每條數據記錄的長(cháng)度為23BYTE,因此,1~63頁(yè)的數據記錄可以存儲的記錄條數為:
63 × 16 KBYTE ÷ 23 BYTE =44877 次
連續記錄時(shí)間為:
44877 × 5s = 224385 s = 62 小時(shí)
連續記錄62小時(shí),滿(mǎn)足了裝置連續記錄50小時(shí)的要求,且系統采用了記錄長(cháng)度校核算法以及較為嚴格的CRC校驗算法,提高了裝置記錄數據的可靠性,該裝置已通過(guò)鄭州鐵路局技術(shù)鑒定,該裝置在一年半的裝車(chē)實(shí)際運用中,記錄可靠,由于機車(chē)每天實(shí)際運行時(shí)間小于15小時(shí),且每條記錄平均變化數小于假定的8個(gè),因此,實(shí)際記錄時(shí)間在6~7天左右。
評論