數控系統可靠性數據壓縮算法
2018-8-6 來源:轉載 作者:林新然,王力杰,劉 峰,張兆中
摘要: 數控系統可靠性數據是產品早期故障定位和排除的基礎. 數控系統包含配置數據,診斷數據,運行狀態數據等可靠性數據,這些數據大部分是實時數據,隨著監測時間的推移會大量增長,所以數據的有效存儲是不得不解決的問題. 數據壓縮是節省存儲空間、提高存儲效率的一種有效方法. 根據不同類型可靠性數據的特點和變化規律,設計合適的壓縮算法. 改進 LZW 算法實現靜態文本數據的壓縮,改進旋轉門算法壓縮過程數據,對網絡傳輸數據采用二級壓縮方式進行壓縮. 實驗表明,使用該壓縮方案能夠在保證實時性的情況下對數控系統不同類型的可靠性數據進行有效的壓縮,節約存儲空間和網絡傳輸帶寬.
關鍵詞: 數控系統; 可靠性數據; 有損壓縮; 無損壓縮; 不同類型數據
1、引 言
數控系統作為各類數控機床的控制中樞,被稱為機床的靈魂和大腦,它的可靠性是制約高檔數控機床發展的重要因素. 數控系統可靠性數據是提高產品可靠性的基礎,對早期故障的定位和排除、以及新產品的研發起到了關鍵的指導作用.
數控系統可靠性數據結合可靠性仿真技術、分布式控制技術、網絡化監測技術、維修策略優化技術等是提高數控系統可靠性的有效途徑.數控系統采集的可靠性數據主要包括: 設備信息數據、配置數據、運行狀態數據、診斷數據等,根據數據特點和作用大致可以分為靜態數據、觸發類數據、時間值、過程數據和網絡傳輸數據.
靜態數據包括設備信息、配置數據、診斷數據等; 其中設備信息包括數控系統型號、編號、軟件版本、硬件各部件版本等; 伺服和電機型號、編號、軟件版本、硬件版本等; 機床型號、編號等數據. 配置數據包括數控系統和伺服的參數、用戶加工程序等. 診斷數據包括硬件診斷信息、軟件診斷信息、伺服運行診斷信息等.
觸發類數據包括開關量,工作方式,工作狀態等.
過程數據主要包括軸坐標、進給速度、進給倍率、電流、溫度、濕度等數據.
網絡傳輸數據是需要傳輸到遠程第三方的實時數據.
數控系統運行狀態數據的采集周期為 10ms,一臺機器每天的數據量大概是 600MB,一個月的數據量就是 18GB,長期保存這些數據需要相當大的存儲空間. 為了確??煽啃詳祿軌驅崟r存儲,并且盡可能的節約存儲空間和成本,減少網絡傳輸中占用的帶寬,需要對不同類型的可靠性數據進行壓縮處理.不同類型的可靠性數據具有不同的特點,靜態數據主要是描述性的文本數據,上下文有一定的聯系; 觸發類數據是在一定時間內保持相同狀態的數據; 而過程數據是具有一定變化規律的浮點型數據.一種壓縮算法對不同類型數據的壓縮效果是不同的,數控系統可靠性數據不是單一類型,所以本文針對這五類可靠性數據的特點和變化規律,實現了一種有效的壓縮方案: 改進LZW 算法壓縮靜態數據,采用 RLE 算法壓縮觸發類數據和時間值,改進旋轉門算法壓縮過程數據,采用二級壓縮方式壓縮網絡傳輸數據.
2 、數據壓縮算法
數據壓縮算法按其壓縮精度,可以分為有損壓縮和無損壓縮. 有損壓縮是通過一定的篩選條件來判斷是否保存數據,在壓縮過程中會舍棄一部分數據,但這些數據對原始數據的恢復影響不大,具有較高的壓縮率. 無損壓縮利用數據的統計冗余來進行壓縮,能夠完全恢復原始數據而不引起任何失真,但是壓縮率受到數據統計冗余度的理論限制.常用的無損數據壓縮算法有 Huffman 編碼算法、游程編碼算法,LZ 系列編碼算法等. 針對工業過程數據的有損壓縮方法可以分為 3 類,即分段線性方法、矢量量化方法以及信號變換法. 分段線性方法又包括矩形波串法、后向斜率法、旋轉門算法及 PLOT 法.
2. 1 Huffman 編碼算法
Huffman 編碼是一種基于統計模型的可變字長編碼,根據原始數據中不同字符出現的不同概率進行編碼,對于出現概率較大的字符采用較短的編碼,出現概率較小的字符采用較長的編碼,使整體數據的平均編碼達到最短. Huffman編碼算法的缺點是,由于需要統計原始數據中字符出現的概率后,根據字符出現的概率構建出 Huffman 樹才能對數據進行編碼,所以需要掃描兩次原始數據,這會消耗較多的時間.
2. 2 游程編碼算法
游程編碼也是一種基于統計模型的編碼方法,是對連續出現多次的字符進行編碼,用串長和字符值代替連續的字符. 游程編碼不像 Huffman 編碼需要掃描兩遍原始數據,只需對原始數據一次掃描就可以完成編碼,并且實現起來比較簡單. 游程編碼的缺點是只對具有大量連續字符的數據有較好的壓縮效果,對普通的文本數據壓縮效果比較差.
2. 3 LZ 系列編碼
LZ 系列編碼是基于字典模型的編碼方法,這種模型的編碼方法可分為兩類. 第一類的思想是查找正在壓縮的字符串是否在前面壓縮過的數據流中出現過,如果是,則用指向出現過字符串的“指針”代替重復的字符串,以 LZ77 算法和 LZSS算法為代表. 這類算法在窗口中查找最長匹配字符串是一個比較復雜的過程,會消耗較多的時間,并且由于窗口的大小是有限的,對具有較長匹配的數據的壓縮效果不是最佳.第二類的思想是從輸入的數據中創建一個“字典”. 當數據壓縮過程中遇到已經在詞典中出現的字符串時,就以字符串在字典中的 “指針”代替重復的字符串,以 LZ78 算法和LZW 算法為代表. 這類算法需要在壓縮過程中逐步構建“字典”,這就需要一定的存儲空間,而且難以快速適應原始數據的特點.
2. 4 旋轉門算法
旋轉門壓縮算法的原理是通過查看當前值和最后保存的值所構成的壓縮偏移覆蓋區,決定是否保存待壓縮值. 如果該覆蓋區可以覆蓋兩者之間的所有點,則不保留兩者之間的所有點,如果兩者之間有數據點落在該覆蓋區之外,則保留前一個時間點的值,并以該時間點的值作為最后一個被保存值. 該算法是一種壓縮能力強、壓縮效果好的實時數據有損壓縮算法.
3 、數控系統可靠性數據的壓縮算法
數控系統可靠性數據歸納為靜態數據,觸發類數據,時間值,過程數據以及網絡傳輸數據. 不同的壓縮算法對數據的壓縮效率是不同的,如果不考慮數據的特點,對所有的數據都采用同一種壓縮算法,會大大降低數據的壓縮效率. 所以本文分析數控系統不同類型數據的特點以及變化規律,針對不同類型數據分別設計有效的壓縮算法以實現數據的高效存儲.
3. 1 靜態數據
從數控系統采集的靜態數據包括數控系統型號、編號、軟件 版本、硬件各部件版本,數控系統和伺服的參數,硬件診斷信息、軟件診斷信息等數據. 分析發現這些數據中包含一些出現頻率很高的詞條,比如: 系統型號,故障類型,故障位置等.算 法 基 本 流 程( 見圖 1) .

圖 1 靜態文本數據壓縮流程圖
LZW 算 法 是 一種高效的無損壓縮算法,并且在壓縮過程中不需要查找匹配字符串,這點在算法實現上比 LZSS 簡單許多,但 是 LZW 算 法是在壓縮過程中逐步建立的字典,其對原始數據特點的自適應過程較為緩慢,所以結合 LZW 算法針對數據特點做了簡單改進,在對原始數據編碼之前首先利用名詞字符串對字典初始化,這些名詞字符串由出現頻率較高的名詞條組成,然后利用LZW 算法進行壓縮,相當于組合使用了靜態字典和動態字典,這就解決了 LZW 算法字典自適應過程較慢的問題.
3. 2 觸發類數據和時間值
在數控系統數據中存在像開關量型的觸發類數據,以及具有周期性的時間值. 在對時間值差值處理后,這些數據都具有大量的連續字符,上文提到游程編碼對具有大量連續字符的數據有相當好的壓縮效果,所以針對這類數據采用游程編碼算法會得到較高的壓縮率.游程編碼在處理不連續重復的字符時,會存儲兩個字節( 串長,字符) ,而原字符只有一個字節,也就是說使用游程編碼處理這些不連續重復數據反而加大了存儲空間,所以本文采用 PCX 文件中改進的 RLE 算法,將不重復的字符直接存入壓縮文件,利用字節的高兩位來區分是原數據還是壓縮編碼,高兩位全為 1 代表串長,高兩位不全為 1 代表原字符.算法基本流程( 見圖 2) .

圖 2 觸發類數據壓縮流程圖
3. 3 過程數據
數控系統數據包含大量的運行狀態數據,主要是軸坐標、進給速度、電流等過程數據. 由于旋轉門算法實現簡單,執行速度快,壓縮效率高,所以在過程工業中較多利用該算法進行數據壓縮. 但是數控系統可靠性測試的過程數據的壓縮需要最大可能的保持原數據的特點,也就是說為了可靠性的評估和測試,對一些偏差數據也要保存下來,同時又不能影響到正常數據的解壓恢復,所以不能直接應用旋轉門算法對這些數據壓縮.
旋轉門算法根據當前值和最后保存的值所構成的壓縮偏移覆蓋區是否可以覆蓋兩者之間的所有點,來決定是否保留前一個時間點的值,它不能夠對偏差數據進行處理,所以需要對其進行改進以滿足可靠性測試的需求. 主要改進點: 設定一個判斷偏差數據的閾值,若數據與預測數據之差超過閾值,則認定為偏差數據,需要保存. 并且為了確保解壓時數據的準確性,對偏差數據的前后兩個數據也需要存儲,使解壓數據不受偏差數據的影響. 如果為了判斷數據是否是偏差數據,而對每一個數據都計算預測值,會耗費較多的時間,這就需要根據一定的方法來減少計算量. 分析發現: 偏差數據只可能在保存數據的后一個數據出現,也就是和最后保存的值所構成的覆蓋區不可以覆蓋兩者之間所有點的那個數據,只需要對這些數據計算其預測值,分析是否是偏差數據. 預測值則利用前一個保存數據和偏差數據的前一個數據的線性外插法來計算. 為了進一步提高存儲效率,可以提前對數據進行差值預處理后壓縮.算法基本流程( 見圖 3)

圖 3 過程數據壓縮流程圖
3. 4 網絡傳輸數據
從數控系統實時采集到的數據需要通過一定的格式及時的發送到遠程進行處理,為了節約網絡帶寬,減少傳輸時間,有必要對網絡傳輸數據進行壓縮處理. 本文的數據傳輸格式采用 XML 格式,為了描述數據的意義,不同的數據需要不同的 XML 標簽,在標簽中包含不同類型的數據,顯然該類數據的上下文關聯性不強.一般采用無損壓縮算法壓縮文本數據,其中 LZ系列算法對于上下文關聯性較強的數據能夠取得較好的壓縮效果,所以該類型數據利用 LZ 系列算法不能夠獲得較好 的 壓 縮率. Huffman 編碼對字節進行統計編碼,需要掃描兩次原始數據,會消耗較多的時間,不適合直接用于壓縮數據. 通過分析利用 XML 格式傳輸的網絡數據,發現 XML 標簽內字符串的出現頻率較高且比較固定,所以可以通過靜態字典的方式首先對這些字符串壓縮以及字符統計,再通過Huffman編碼進行壓縮,通過這種靜態字典和 Huffman 編碼結合的方式對數據二級壓縮可以解決壓縮率較低的問題,并且相比 Huffman 編碼減少了壓縮時間.算法基本流程( 見圖4)

圖 4 網絡傳輸數據壓縮流程圖
4、 算法效率測試
原數據都存儲在文件中,所以壓縮過程中會不斷地從文件中讀寫數據,這會對壓縮和解壓時間有一定的影響. 壓縮算法的優劣主要從三個方面來判斷: 壓縮率、絕對誤差、和時間,所以對無損壓縮算法的測試主要包括壓縮時間、解壓時間、壓縮率,對有損壓縮算法的測試主要包括壓縮時間、解壓時間、壓縮率、絕對誤差.


CR 是壓縮率,M 是壓縮后文件大小,N 是原文件大?。瓵E 是絕對誤差,yn是原文件數據,yn是壓縮文件恢復數據,n是數據個數. 時間代表壓縮時間和解壓時間.
4.1 靜態數據壓縮效率
實驗通過使用 LZW 算法、LZSS 算法、以及改進的 LZW算法分別對靜態數據進行壓縮測試,表 1 為測試結果.

表 1 靜態數據在不同壓縮算法下的壓縮效率
由測試結果看出,結合靜態字典的 LZW 算法減少了對出現頻率較高的名詞字符串逐步建立字典的過程,使這些字符串能夠直接編碼壓縮,而不需要逐步加入字符的自適應過程. 相對于 LZSS 和 LZW 算法降低了壓縮時間,提高了壓縮率,具有較好的壓縮效果.
4. 2 觸發類數據壓縮效率
根據觸發類數據的特點,對其使用 PCX 文件的 RLE 算法和 RLE 算法進行壓縮測試,結果如表 2 所示.

表 2 觸發類數據的壓縮結果
由測試結果看出,由于觸發類數據具有大量連續的字符,所以使用 PCX 文件的 RLE 算法獲得了較高的壓縮率. 并且通過對不連續字符的壓縮改進,相比原始 RLE 算法又進一步提高了壓縮率. 對時間值進行差值預處理后獲得的數據具有連續性特點,應用該 RLE 算法壓縮也獲得了很好的壓縮效果.
4. 3 過程數據壓縮效率
實驗對從數控系統采集到的坐標位移數據使用旋轉門算法和改進的旋轉門算法進行壓縮測試,其中在 t = 100 和 t =1000 處設置了偏差點,壓縮結果如表 3 所示.

表 3 過程數據壓縮結果
由表 3 測試結果看出,改進的旋轉門算法和旋轉門算法同樣達到了很好的壓縮結果,并且由圖 5 和圖 6 對比可以發現改進算法對第一個偏差點進行了特殊處理,對超過閾值的偏差點保存,并且對偏差點的前后相鄰數據也保存處理,使其在解壓時并沒有影響到其他數據的恢復,使數據的絕對誤差保持在一定范圍,而第二個數據沒有使用改進算法對偏差點處理,數據解壓時會影響到前后數據的恢復.

圖 5 過程數據壓縮前曲線圖

圖 6 過程數據解壓后曲線圖
4. 4 網絡傳輸數據壓縮效率
實驗通過對網絡傳輸數據分別使用 Huffman 算法,LZW算法,LZSS 算法,以及靜態字典結合 Huffman 算法的方式經行壓縮,測試結果如表 4所示.

表 4 網絡傳輸數據在不同壓縮算法下的壓縮結果
由測試結果看出,靜態字典編碼和 Huffman 編碼結合的二級壓縮方式比 Huffman 編碼的壓縮時間縮短了很多,雖然相比 LZW 算法和 LZSS 算法在壓縮和解壓時間上會有些不足,但是在壓縮率上具有較大優勢,對節約網絡帶寬很有幫助.
5、 結束語
數控系統的可靠性是制約數控系統發展的重要因素,數控系統的可靠性數據是可靠性測試的基礎,可靠性數據的有效存儲是必需的環節,數據壓縮是實現數據有效存儲的高效方法. 本文對數控系統不同類型可靠性數據設計了合適的壓縮算法,改進 LZW 算法壓縮靜態文本數據,采用 PCX 文件中改進的 RLE 算法壓縮觸發類數據和時間值,改進旋轉門算法壓縮過程數據,并且對網絡傳輸數據采用靜態字典和 Huff-man 編碼的二級壓縮方式,實現了可靠性數據的高效存儲.
來源: 中國科學院大學 中國中材股份有限公司 中國科學院 沈陽計算技術研究所, 沈陽高精數控智能技術股份有限公司
投稿箱:
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合作,歡迎聯系本網編輯部, 郵箱:skjcsc@vip.sina.com
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合作,歡迎聯系本網編輯部, 郵箱:skjcsc@vip.sina.com
更多相關信息