246h
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 12 個
工控威望: 155 點
下載積分: 540 分
在線時間: 160(小時)
注冊時間: 2009-08-06
最后登錄: 2024-08-20
查看246h的 主題 / 回貼
樓主  發(fā)表于: 2013-10-03 22:08
     為了節(jié)省存儲數(shù)據(jù)所占用的空間,可對數(shù)據(jù)編碼長度進(jìn)行壓縮,數(shù)據(jù)經(jīng)過壓縮后再進(jìn)行存儲,即壓縮存儲。壓縮存儲不但節(jié)省了存儲空間,另一方面也節(jié)省了數(shù)據(jù)傳輸?shù)拈_銷。一般來說,只要清楚數(shù)據(jù)的壓縮方式,上位計算機(jī)就能夠方便地進(jìn)行解壓縮。
對于PLC而言,最基本的數(shù)據(jù)壓縮技術(shù)有以下三類。
(1)用十六進(jìn)制碼代替BCD碼:BCD碼是采用4位二進(jìn)制數(shù)來表示一位十進(jìn)制數(shù)0-9的編碼方式,而實際上4位二進(jìn)制數(shù)可以表示16個不同數(shù)碼,所以采用BCD碼存取數(shù)存在資源浪費。如16位二進(jìn)制數(shù)(一個字),用以表示BCD碼數(shù),最大只能到9999;而表示普通二進(jìn)制數(shù),轉(zhuǎn)為十進(jìn)制數(shù)最大可達(dá)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ù)合并后再進(jìn)行存儲,就無需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重新編輯 ]