(電子科技大學(xué)機(jī)械電子工程學(xué)院,四川 成都 611731)
在數(shù)控系統(tǒng)遠(yuǎn)程實(shí)時(shí)監(jiān)控平臺(tái)中,由于對(duì)系統(tǒng)內(nèi)數(shù)據(jù)的快速采集和存儲(chǔ),造成了大量工業(yè)過(guò)程數(shù)據(jù)的堆積,給工廠智能化平臺(tái)造成了巨大的存儲(chǔ)負(fù)擔(dān),但為了能對(duì)歷史數(shù)據(jù)進(jìn)行調(diào)取查閱又不能將其刪除,因而合適有效的數(shù)據(jù)壓縮處理手段是較好的解決辦法。
工業(yè)過(guò)程數(shù)據(jù)的壓縮方法通常有3類:分段線性法、矢量量化法以及信號(hào)變換法。其中分段線性法中的旋轉(zhuǎn)門算法(SDT)是一種快速的線性擬合有損壓縮算法,具有壓縮率高、實(shí)現(xiàn)簡(jiǎn)單和誤差可控的優(yōu)點(diǎn),因而得到了各領(lǐng)域?qū)W者廣泛的使用和研究。其中,文水英[1]提出了一種基于均方差的SDT算法,減小了測(cè)量誤差對(duì)數(shù)據(jù)壓縮率的影響;曲奕霖[2]針對(duì)SDT算法的參數(shù)ΔE提出了一種自控精度旋轉(zhuǎn)門算法,實(shí)現(xiàn)了參數(shù)ΔE的動(dòng)態(tài)調(diào)整。王舉[3]通過(guò)監(jiān)測(cè)數(shù)據(jù)波動(dòng)情況來(lái)實(shí)現(xiàn)自動(dòng)地、連續(xù)地改變SDT算法的門限值,從而提高壓縮效果。
本文以SDT算法為基礎(chǔ),通過(guò)在SDT壓縮過(guò)程中引入最小二乘法(LSM, least square method)的擬合方式來(lái)提高SDT算法的壓縮效果,實(shí)現(xiàn)在同等壓縮誤差的條件下提高壓縮比,滿足對(duì)現(xiàn)場(chǎng)過(guò)程數(shù)據(jù)壓縮的要求。
旋轉(zhuǎn)門算法是利用線性線段擬合和容差來(lái)對(duì)過(guò)程數(shù)據(jù)進(jìn)行壓縮的一種算法,它能夠在一定的誤差范圍內(nèi)使用較少的數(shù)據(jù)點(diǎn)來(lái)還原原始數(shù)據(jù),進(jìn)而提高數(shù)據(jù)存儲(chǔ)效率。設(shè)圖1中點(diǎn)A為要進(jìn)行數(shù)據(jù)壓縮的過(guò)程數(shù)據(jù)的第一個(gè)記錄點(diǎn),根據(jù)容差ΔE可在A上下偏差ΔE的位置構(gòu)建旋轉(zhuǎn)門的兩個(gè)支點(diǎn)A1、A2,隨著數(shù)據(jù)點(diǎn)的加入,兩扇門會(huì)相應(yīng)展開(kāi),并且上支點(diǎn)門保持最大斜率,下支點(diǎn)門保持最小斜率。設(shè)B為當(dāng)前考察點(diǎn),如若兩扇門在B點(diǎn)的斜率之和≥180°,則B不滿足被壓縮的條件,應(yīng)歸檔B的前一個(gè)數(shù)據(jù)點(diǎn),否則繼續(xù)考察B的下一個(gè)記錄點(diǎn)。圖1中C是第一個(gè)不滿足旋轉(zhuǎn)門條件的點(diǎn),因此應(yīng)歸檔其前一點(diǎn)B并以B為起始點(diǎn)通過(guò)相同的方式進(jìn)行下一段數(shù)據(jù)的壓縮。
衡量壓算法好壞的性能指標(biāo)包括壓縮比CR[4]和絕對(duì)誤差A(yù)E。
(1)
(2)
AE僅僅衡量了單點(diǎn)與相應(yīng)原始數(shù)據(jù)的偏差程度。為了更好地描述壓縮算法整體的偏差程度,用原始數(shù)據(jù)和恢復(fù)數(shù)據(jù)之差的均方根值來(lái)定義壓縮誤差CE[4]:
(3)
從SDT算法的原理中不難發(fā)現(xiàn):容差ΔE的大小是該算法唯一可調(diào)參數(shù),同時(shí)也直接決定了算法的壓縮比和壓縮誤差,增大容差必然能夠增大壓縮比,但同時(shí)也會(huì)造成壓縮誤差的增大。因此為了得到最優(yōu)的壓縮效果,在容差、壓縮比和壓縮誤差三者間找到一個(gè)平衡點(diǎn)至關(guān)重要。為此,各領(lǐng)域?qū)W者也在這一點(diǎn)上做了不懈的努力,其中曲奕霖的自控精度SDT算法效果較為顯著,但為了求得最佳容差需要反復(fù)對(duì)原始數(shù)據(jù)進(jìn)行試壓縮,計(jì)算量很大。
為了在不增大壓縮誤差的條件下提高壓縮比,在SDT壓縮算法處理過(guò)程中引入LSM替代最初的線性擬合方法,這樣由最小二乘法的性質(zhì)就可以保證在一個(gè)壓縮區(qū)間長(zhǎng)度中,根據(jù)原始數(shù)據(jù)與恢復(fù)數(shù)據(jù)求得的壓縮誤差CE最小,但由于相鄰區(qū)間中各自擬合直線在區(qū)間邊界上的點(diǎn)完全重合的可能性極低,因此連接兩個(gè)相鄰區(qū)間歸檔點(diǎn)的選擇至關(guān)重要,選擇恰當(dāng)能大大提高壓縮比,否者壓縮誤差會(huì)被明顯放大。
因此,為了相鄰區(qū)間數(shù)據(jù)恢復(fù)時(shí)的連續(xù)性和準(zhǔn)確性,計(jì)算兩個(gè)區(qū)間中各自擬合直線的交點(diǎn)作為歸檔點(diǎn),如圖2所示。在數(shù)據(jù)恢復(fù)中,利用簡(jiǎn)單的線性插值方式計(jì)算,這樣恢復(fù)的數(shù)據(jù)保持了利用LSM方式使壓縮誤差最小的特征。
基于以上的思想,利用Matlab將引入LSM的SDT新算法進(jìn)行實(shí)現(xiàn),使用一組數(shù)據(jù)(曲線y=sin(x)/x,共6 280個(gè)點(diǎn))對(duì)算法進(jìn)行測(cè)試,觀測(cè)到的實(shí)驗(yàn)結(jié)果不是很理想,利用SDT算法在0.001容差下的壓縮誤差為6.827×10-4,LSM-SDT算法中在同樣的容差情況下壓縮誤差高達(dá)0.002,通過(guò)對(duì)壓縮后歸檔點(diǎn)的對(duì)比發(fā)現(xiàn),LSM-SDT算法中的歸檔點(diǎn)存在這種問(wèn)題:通過(guò)最小二乘法擬合的直線的交點(diǎn)中存在一些點(diǎn)遠(yuǎn)遠(yuǎn)偏離了按照SDT算法求得的歸檔點(diǎn)(如圖3所示),因而在通過(guò)這些點(diǎn)還原得到的數(shù)據(jù)在公式(3)中求得的CE就造成了很大的誤差項(xiàng)(如圖4所示),這些誤差項(xiàng)在整體誤差中占據(jù)了主導(dǎo),是導(dǎo)致壓縮誤差急劇增大的主要原因。
通過(guò)對(duì)兩種算法的歸檔點(diǎn)坐標(biāo)比較(圖5所示),利用SLM-SDT算法求得的歸檔點(diǎn)坐標(biāo)與SDT算法的歸檔點(diǎn)坐標(biāo)絕大部分在位置上相差無(wú)幾(在原始數(shù)據(jù)的坐標(biāo)間距單位為1時(shí),相對(duì)誤差能控制在0.3以內(nèi)),但也存在少量奇異點(diǎn),而正是這些奇異點(diǎn)的存在使得較大壓縮誤差項(xiàng)在這些點(diǎn)的周圍堆積,影響了整個(gè)算法的壓縮質(zhì)量。
為了解決上述算法中存在的奇異點(diǎn)導(dǎo)致的問(wèn)題,提出一種LSM-SDT與SDT二者相結(jié)合的方式,在LSM-SDT算法中出現(xiàn)奇異點(diǎn)的時(shí)候,則終止LSM-SDT算法,改用SDT算法中確立的歸檔點(diǎn)作為L(zhǎng)SM-SDT算法的歸檔點(diǎn),并從下一個(gè)區(qū)間開(kāi)始重新啟用LSM-SDT算法,因此得到以下優(yōu)化后的LSM-SDT算法,圖6為L(zhǎng)SM-SDT算法的流程圖。
改進(jìn)優(yōu)化后的LSM-SDT算法步驟如下:
利用改進(jìn)后的算法重做之前的測(cè)試,結(jié)果表明:在同樣的條件下,壓縮誤差相對(duì)改進(jìn)前縮減了76%,相對(duì)SDT算法縮減了30%,提高了壓縮精度。
本算法是為了壓縮數(shù)控系統(tǒng)的過(guò)程數(shù)據(jù),會(huì)集成到利用OPC技術(shù)開(kāi)發(fā)的數(shù)據(jù)采集客戶端中,在采集的同時(shí)對(duì)過(guò)程數(shù)據(jù)進(jìn)行壓縮計(jì)算。由于Matlab具有很強(qiáng)的數(shù)據(jù)處理能力,因此在算法和客戶端軟件的集成中采用了Matlab和C#混合編程技術(shù),C#調(diào)用由Matlab中m文件生成的動(dòng)態(tài)鏈接庫(kù)(dll),將運(yùn)行后得到的歸檔數(shù)據(jù)存放在文檔中。
本文對(duì)數(shù)控加工單元(五軸聯(lián)動(dòng)加工中心)進(jìn)行了實(shí)時(shí)監(jiān)控,完成某工件加工全過(guò)程的數(shù)據(jù)采集,并利用LSM-SDT算法對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行了實(shí)時(shí)壓縮,同時(shí)利用SDT算法對(duì)這些采集到的數(shù)據(jù)進(jìn)行壓縮,最后將二者的效果進(jìn)行了對(duì)比分析。本文選取了4個(gè)數(shù)控機(jī)床典型信號(hào)(速度、電流、位置和電壓),每個(gè)信號(hào)對(duì)象以100 ms為記錄周期進(jìn)行采集,對(duì)某工件的加工全過(guò)程進(jìn)行了監(jiān)控,共得到18 045個(gè)點(diǎn)。表1和表2分別采用SDT算法和LSM-SDT算法的壓縮結(jié)果,二者的區(qū)別主要體現(xiàn)在壓縮誤差數(shù)據(jù)欄,在相同的容限ΔE下,改進(jìn)算法相比于SDT縮小了壓縮誤差,這可以使得算法在和SDT有相當(dāng)?shù)膲嚎s誤差情況下獲取更理想的壓縮比。
表1 SDT算法壓縮結(jié)果
表2 LSM-SDT算法壓縮結(jié)果
圖7中是數(shù)控系統(tǒng)在加工工件時(shí)刀尖點(diǎn)速度曲線,以及用SLM-SDT算法壓縮后的速度曲線,圖8為機(jī)床X速度曲線。從圖中可以看出SLM-SDT算法保留了原始數(shù)據(jù)的特征信息,剔除了原始數(shù)據(jù)中的波動(dòng)數(shù)據(jù),從而減少了速度微小抖動(dòng)之類的非關(guān)鍵信息存儲(chǔ),同時(shí)減小了壓縮誤差,使曲線更逼近原始曲線。
從應(yīng)用結(jié)果來(lái)看,雖然壓縮算法剔除了監(jiān)控對(duì)象細(xì)節(jié)方面的信息,但在數(shù)控系統(tǒng)監(jiān)控中,監(jiān)控對(duì)象的微小擾動(dòng)非關(guān)鍵信息對(duì)于機(jī)床狀態(tài)監(jiān)控并不重要,而監(jiān)控對(duì)象在機(jī)床加工過(guò)程中的整體趨勢(shì)和突變信息往往和機(jī)床的異常狀態(tài)、故障直接相關(guān),應(yīng)用對(duì)象的這些特點(diǎn),使得改進(jìn)的有損壓縮算法在監(jiān)控平臺(tái)中更好地發(fā)揮了作用。
本文提出基于最小二乘法和旋轉(zhuǎn)門算法相結(jié)合的過(guò)程數(shù)據(jù)壓縮算法,并將改進(jìn)算法應(yīng)用于數(shù)控系統(tǒng)狀態(tài)監(jiān)控中。通過(guò)對(duì)某特殊試件加工過(guò)程多個(gè)數(shù)據(jù)的采集,獲得了機(jī)床4個(gè)特征信息的數(shù)據(jù),并在這些數(shù)據(jù)上應(yīng)用了改進(jìn)的壓縮算法,最后通過(guò)恢復(fù)數(shù)據(jù)與原始數(shù)據(jù)計(jì)算得到整個(gè)壓縮算法的壓縮誤差CE,并與SDT算法做了對(duì)比分析。
通過(guò)在Matlab中的實(shí)驗(yàn)分析以及在某工廠數(shù)控單元監(jiān)控系統(tǒng)中的實(shí)際應(yīng)用,可以看出改進(jìn)的SDT算法明顯地減小了壓縮誤差。在數(shù)控單元監(jiān)控系統(tǒng)的實(shí)際應(yīng)用中,在限定壓縮誤差的情況下使用本文算法,獲得了比SDT算法更高的壓縮率,更適宜工廠現(xiàn)場(chǎng)應(yīng)用。
[1]文水英.實(shí)時(shí)數(shù)據(jù)庫(kù)中歷史數(shù)據(jù)壓縮算法的研究[D].長(zhǎng)沙:中南大學(xué),2008.
[2]曲奕霖,王文海.用于過(guò)程數(shù)據(jù)壓縮的自控精度SDT算法[J].計(jì)算機(jī)工程,2010,36(22):40-42.
[3]王舉,房鼎益.文物檢測(cè)中無(wú)線傳感器網(wǎng)絡(luò)數(shù)據(jù)壓縮算法[J].西安電子科技大學(xué)學(xué)報(bào),2012,39(1):157-162.
[4]Feng Xiaodong.Improved SDT process data compression algorithm[J].High Technology Letters, 2003, 9(2):91-96.
[5]于松濤, 王曉琨.基于容差動(dòng)態(tài)調(diào)整的旋轉(zhuǎn)門(SDT)改進(jìn)算法[J].北京化工大學(xué)學(xué)報(bào),2013,40(3):109-113.
[6]張望,陳新楚.過(guò)程數(shù)據(jù)壓縮算法SDT的改進(jìn)研究與應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2009,22(8):1-6.
[7]劉佳寶,梁奕.一種過(guò)程數(shù)據(jù)有損壓縮比的動(dòng)態(tài)控制方法[J].計(jì)算機(jī)工程與應(yīng)用,2013,49(8):138-141.
[8]趙利強(qiáng),于濤.基于SQL數(shù)據(jù)庫(kù)的過(guò)程數(shù)據(jù)壓縮方法[J].計(jì)算機(jī)工程,2008,34(14):58-62.