為了節(jié)省存儲數(shù)據(jù)所占用的空間,可對數(shù)據(jù)編碼長度進行壓縮,數(shù)據(jù)經(jīng)過壓縮后再進行存儲,即壓縮存儲。壓縮存儲不但節(jié)省了存儲空間,另一方面也節(jié)省了數(shù)據(jù)傳輸?shù)拈_銷。一般來說,只要清楚數(shù)據(jù)的壓縮方式,上位計算機就能夠方便地進行解壓縮。
對于PLC而言,最基本的數(shù)據(jù)壓縮技術(shù)有以下三類。
(1)用十六進制碼代替BCD碼:BCD碼是采用4位二進制數(shù)來表示一位十進制數(shù)0-9的編碼方式,而實際上4位二進制數(shù)可以表示16個不同數(shù)碼,所以采用BCD碼存取數(shù)存在資源浪費。如16位二進制數(shù)(一個字),用以表示BCD碼數(shù),最大只能到9999;而表示普通二進制數(shù),轉(zhuǎn)為十進制數(shù)最大可達65535。
(2)合并數(shù)據(jù)代替單獨數(shù)據(jù):存儲普通日期數(shù)據(jù),一般需要4個字節(jié),如2009年10月1日,則2009需要2個字節(jié),10需要1個字節(jié),1需要1個字節(jié),如不考慮千年,需用3個字節(jié)存儲,如果把這些數(shù)據(jù)合并后再進行存儲,就無需3個或4個字節(jié)了。
數(shù)據(jù)合并時,可將各合并數(shù)先加權(quán)再相加,如年可乘400(為計算方便,一年最多366天),月可乘40(一個月最多31天),2009、10、l合并可得9×400+10×40+1=4001,2個字節(jié)就足夠存儲了。數(shù)據(jù)還原時,可用合并數(shù)分別被400整除得年份,被40整除得月份(不夠需借位),余數(shù)為日期。
問題是:4001被400整除應(yīng)該是10啊,怎么還原到9?同樣月份怎么還原到10?
請高手幫忙。謝謝
[ 此帖被246h在2013-10-05 13:53重新編輯 ]