(電子科技大學機械電子工程學院,四川 成都 611731)
在數控系統遠程實時監控平臺中,由于對系統內數據的快速采集和存儲,造成了大量工業過程數據的堆積,給工廠智能化平臺造成了巨大的存儲負擔,但為了能對歷史數據進行調取查閱又不能將其刪除,因而合適有效的數據壓縮處理手段是較好的解決辦法。
工業過程數據的壓縮方法通常有3類:分段線性法、矢量量化法以及信號變換法。其中分段線性法中的旋轉門算法(SDT)是一種快速的線性擬合有損壓縮算法,具有壓縮率高、實現簡單和誤差可控的優點,因而得到了各領域學者廣泛的使用和研究。其中,文水英[1]提出了一種基于均方差的SDT算法,減小了測量誤差對數據壓縮率的影響;曲奕霖[2]針對SDT算法的參數ΔE提出了一種自控精度旋轉門算法,實現了參數ΔE的動態調整。王舉[3]通過監測數據波動情況來實現自動地、連續地改變SDT算法的門限值,從而提高壓縮效果。
本文以SDT算法為基礎,通過在SDT壓縮過程中引入最小二乘法(LSM, least square method)的擬合方式來提高SDT算法的壓縮效果,實現在同等壓縮誤差的條件下提高壓縮比,滿足對現場過程數據壓縮的要求。
旋轉門算法是利用線性線段擬合和容差來對過程數據進行壓縮的一種算法,它能夠在一定的誤差范圍內使用較少的數據點來還原原始數據,進而提高數據存儲效率。設圖1中點A為要進行數據壓縮的過程數據的第一個記錄點,根據容差ΔE可在A上下偏差ΔE的位置構建旋轉門的兩個支點A1、A2,隨著數據點的加入,兩扇門會相應展開,并且上支點門保持最大斜率,下支點門保持最小斜率。設B為當前考察點,如若兩扇門在B點的斜率之和≥180°,則B不滿足被壓縮的條件,應歸檔B的前一個數據點,否則繼續考察B的下一個記錄點。圖1中C是第一個不滿足旋轉門條件的點,因此應歸檔其前一點B并以B為起始點通過相同的方式進行下一段數據的壓縮。

衡量壓算法好壞的性能指標包括壓縮比CR[4]和絕對誤差AE。
(1)
(2)

AE僅僅衡量了單點與相應原始數據的偏差程度。為了更好地描述壓縮算法整體的偏差程度,用原始數據和恢復數據之差的均方根值來定義壓縮誤差CE[4]:
(3)
從SDT算法的原理中不難發現:容差ΔE的大小是該算法唯一可調參數,同時也直接決定了算法的壓縮比和壓縮誤差,增大容差必然能夠增大壓縮比,但同時也會造成壓縮誤差的增大。因此為了得到最優的壓縮效果,在容差、壓縮比和壓縮誤差三者間找到一個平衡點至關重要。為此,各領域學者也在這一點上做了不懈的努力,其中曲奕霖的自控精度SDT算法效果較為顯著,但為了求得最佳容差需要反復對原始數據進行試壓縮,計算量很大。
為了在不增大壓縮誤差的條件下提高壓縮比,在SDT壓縮算法處理過程中引入LSM替代最初的線性擬合方法,這樣由最小二乘法的性質就可以保證在一個壓縮區間長度中,根據原始數據與恢復數據求得的壓縮誤差CE最小,但由于相鄰區間中各自擬合直線在區間邊界上的點完全重合的可能性極低,因此連接兩個相鄰區間歸檔點的選擇至關重要,選擇恰當能大大提高壓縮比,否者壓縮誤差會被明顯放大。
因此,為了相鄰區間數據恢復時的連續性和準確性,計算兩個區間中各自擬合直線的交點作為歸檔點,如圖2所示。在數據恢復中,利用簡單的線性插值方式計算,這樣恢復的數據保持了利用LSM方式使壓縮誤差最小的特征。

基于以上的思想,利用Matlab將引入LSM的SDT新算法進行實現,使用一組數據(曲線y=sin(x)/x,共6 280個點)對算法進行測試,觀測到的實驗結果不是很理想,利用SDT算法在0.001容差下的壓縮誤差為6.827×10-4,LSM-SDT算法中在同樣的容差情況下壓縮誤差高達0.002,通過對壓縮后歸檔點的對比發現,LSM-SDT算法中的歸檔點存在這種問題:通過最小二乘法擬合的直線的交點中存在一些點遠遠偏離了按照SDT算法求得的歸檔點(如圖3所示),因而在通過這些點還原得到的數據在公式(3)中求得的CE就造成了很大的誤差項(如圖4所示),這些誤差項在整體誤差中占據了主導,是導致壓縮誤差急劇增大的主要原因。
通過對兩種算法的歸檔點坐標比較(圖5所示),利用SLM-SDT算法求得的歸檔點坐標與SDT算法的歸檔點坐標絕大部分在位置上相差無幾(在原始數據的坐標間距單位為1時,相對誤差能控制在0.3以內),但也存在少量奇異點,而正是這些奇異點的存在使得較大壓縮誤差項在這些點的周圍堆積,影響了整個算法的壓縮質量。



為了解決上述算法中存在的奇異點導致的問題,提出一種LSM-SDT與SDT二者相結合的方式,在LSM-SDT算法中出現奇異點的時候,則終止LSM-SDT算法,改用SDT算法中確立的歸檔點作為LSM-SDT算法的歸檔點,并從下一個區間開始重新啟用LSM-SDT算法,因此得到以下優化后的LSM-SDT算法,圖6為LSM-SDT算法的流程圖。
改進優化后的LSM-SDT算法步驟如下:





利用改進后的算法重做之前的測試,結果表明:在同樣的條件下,壓縮誤差相對改進前縮減了76%,相對SDT算法縮減了30%,提高了壓縮精度。

本算法是為了壓縮數控系統的過程數據,會集成到利用OPC技術開發的數據采集客戶端中,在采集的同時對過程數據進行壓縮計算。由于Matlab具有很強的數據處理能力,因此在算法和客戶端軟件的集成中采用了Matlab和C#混合編程技術,C#調用由Matlab中m文件生成的動態鏈接庫(dll),將運行后得到的歸檔數據存放在文檔中。
本文對數控加工單元(五軸聯動加工中心)進行了實時監控,完成某工件加工全過程的數據采集,并利用LSM-SDT算法對相應的數據進行了實時壓縮,同時利用SDT算法對這些采集到的數據進行壓縮,最后將二者的效果進行了對比分析。本文選取了4個數控機床典型信號(速度、電流、位置和電壓),每個信號對象以100 ms為記錄周期進行采集,對某工件的加工全過程進行了監控,共得到18 045個點。表1和表2分別采用SDT算法和LSM-SDT算法的壓縮結果,二者的區別主要體現在壓縮誤差數據欄,在相同的容限ΔE下,改進算法相比于SDT縮小了壓縮誤差,這可以使得算法在和SDT有相當的壓縮誤差情況下獲取更理想的壓縮比。

表1 SDT算法壓縮結果

表2 LSM-SDT算法壓縮結果
圖7中是數控系統在加工工件時刀尖點速度曲線,以及用SLM-SDT算法壓縮后的速度曲線,圖8為機床X速度曲線。從圖中可以看出SLM-SDT算法保留了原始數據的特征信息,剔除了原始數據中的波動數據,從而減少了速度微小抖動之類的非關鍵信息存儲,同時減小了壓縮誤差,使曲線更逼近原始曲線。


從應用結果來看,雖然壓縮算法剔除了監控對象細節方面的信息,但在數控系統監控中,監控對象的微小擾動非關鍵信息對于機床狀態監控并不重要,而監控對象在機床加工過程中的整體趨勢和突變信息往往和機床的異常狀態、故障直接相關,應用對象的這些特點,使得改進的有損壓縮算法在監控平臺中更好地發揮了作用。
本文提出基于最小二乘法和旋轉門算法相結合的過程數據壓縮算法,并將改進算法應用于數控系統狀態監控中。通過對某特殊試件加工過程多個數據的采集,獲得了機床4個特征信息的數據,并在這些數據上應用了改進的壓縮算法,最后通過恢復數據與原始數據計算得到整個壓縮算法的壓縮誤差CE,并與SDT算法做了對比分析。
通過在Matlab中的實驗分析以及在某工廠數控單元監控系統中的實際應用,可以看出改進的SDT算法明顯地減小了壓縮誤差。在數控單元監控系統的實際應用中,在限定壓縮誤差的情況下使用本文算法,獲得了比SDT算法更高的壓縮率,更適宜工廠現場應用。
[1]文水英.實時數據庫中歷史數據壓縮算法的研究[D].長沙:中南大學,2008.
[2]曲奕霖,王文海.用于過程數據壓縮的自控精度SDT算法[J].計算機工程,2010,36(22):40-42.
[3]王舉,房鼎益.文物檢測中無線傳感器網絡數據壓縮算法[J].西安電子科技大學學報,2012,39(1):157-162.
[4]Feng Xiaodong.Improved SDT process data compression algorithm[J].High Technology Letters, 2003, 9(2):91-96.
[5]于松濤, 王曉琨.基于容差動態調整的旋轉門(SDT)改進算法[J].北京化工大學學報,2013,40(3):109-113.
[6]張望,陳新楚.過程數據壓縮算法SDT的改進研究與應用[J].工業控制計算機,2009,22(8):1-6.
[7]劉佳寶,梁奕.一種過程數據有損壓縮比的動態控制方法[J].計算機工程與應用,2013,49(8):138-141.
[8]趙利強,于濤.基于SQL數據庫的過程數據壓縮方法[J].計算機工程,2008,34(14):58-62.