徐旭東,付艷萍
(北京工業(yè)大學信息學部計算機學院, 北京 100124)
數(shù)據(jù)采集與監(jiān)視控制SCADA(Supervisory Control And Data Acquisition)系統(tǒng)是基于組態(tài)化軟件的流程工業(yè)系統(tǒng),通過對工業(yè)設備的實時檢測和控制來實現(xiàn)過程數(shù)據(jù)實時采集和存儲、設備的參數(shù)設置、警告信號的實時顯示等各種功能。
隨著物聯(lián)網(wǎng)和云存儲技術的快速發(fā)展,R-TU(R-emote Terminal Unit)采集的數(shù)據(jù)量越來越大,采集周期也越來越短。歷史數(shù)據(jù)庫是SCADA系統(tǒng)的重要組成部分,不斷地存儲系統(tǒng)的歷史數(shù)據(jù),它可以用于系統(tǒng)故障預測和分析,保證SCADA系統(tǒng)的運行安全和穩(wěn)定。SCADA中海量的歷史數(shù)據(jù)給數(shù)據(jù)存儲和數(shù)據(jù)處理造成了極大的負擔,高效的數(shù)據(jù)壓縮技術可以節(jié)省存儲空間,提高存儲空間的利用率。為了減少數(shù)據(jù)傳輸和永久存儲時的開銷,在SCADA系統(tǒng)存儲數(shù)據(jù)時采用數(shù)據(jù)壓縮技術是十分必要的[1]。
工業(yè)中數(shù)據(jù)壓縮的方法一般有兩種:無損壓縮和有損壓縮。無損壓縮是指壓縮前和壓縮后的數(shù)據(jù)完全一致;而有損壓縮是指解壓縮后的數(shù)據(jù)與原來的數(shù)據(jù)有一定的誤差,但是不影響數(shù)據(jù)的變化趨勢。SCADA系統(tǒng)中常用的數(shù)據(jù)壓縮方法有三種:分段線性方法、矢量量化方法和信號變換法。分段線性方法又包括矩形波串法(Box Car)、向后斜率法(Back Slope)、SDT(Swing Door Trending)以及PLOT(Piecewise Linear Online Trending)。矩形波串法和向后斜率法在數(shù)據(jù)變化緩慢的情況下數(shù)據(jù)壓縮效果不明顯,為解決這一問題,SDT和PLOT應運而生[2]。在很多流程工業(yè)中,矩形波串法和向后斜率法二者結(jié)合形成的BCBS(Box Car Back Slope)也一直在使用[3]。
在數(shù)據(jù)壓縮算法中,有三個關鍵點:第一,由于硬件資源的限制和需要存儲的數(shù)據(jù)量越來越多,所以壓縮算法需要高壓縮比;第二,在SCADA數(shù)據(jù)庫中,數(shù)據(jù)的查詢和存儲要求的時間比較短,這要求壓縮算法的壓縮和解壓縮的速度要快;第三,為了保證解壓縮后的數(shù)據(jù)能夠準確地描述數(shù)據(jù)的增長趨勢,壓縮算法的壓縮精度要高、壓縮誤差要低。一般說來,同時滿足高壓縮比、低壓縮誤差、壓縮時間短是不可能的,為了達到一個好的壓縮效果,需要在三者之間找到一個平衡點[4]。
SDT算法在流程工業(yè)中用得最多,具有算法簡單、操作容易、執(zhí)行速度快的優(yōu)點。信號變換方法也有很多,例如離散余弦變換、小波變換,現(xiàn)如今小波變換的應用領域十分廣泛,但相對于SDT算法來說,算法的復雜程度較高。
SCADA系統(tǒng)中的歷史數(shù)據(jù)主要包括:(1)遙控信息(狀態(tài)量):包括各種控制命令;(2)遙信信息(狀態(tài)量):包括各種開關狀態(tài)信息;(3)遙測信息模擬量:主要包括溫度、濕度等實時數(shù)據(jù)信息。
狀態(tài)量信號的值只有0和1兩個數(shù)值,采集模塊以固定的時間間隔采集,在實際過程中,狀態(tài)量數(shù)據(jù)在一段時間內(nèi)不會發(fā)生變化,會出現(xiàn)當前采集的狀態(tài)信號和上一時刻采集的狀態(tài)信號是一致的。對于狀態(tài)量的壓縮,我們可以采用逢變則存的處理方法,即狀態(tài)量的數(shù)值發(fā)生變化時才需要保存。如圖1所示,時間點t0~t7的狀態(tài)量值分別為1,0,0,1,0,0,0,0,根據(jù)狀態(tài)量的壓縮思想,只會保存t0、t3時刻的狀態(tài)量值,其余時刻的狀態(tài)量值不保存。
Figure 1 Compressing of state variables圖1 狀態(tài)量的壓縮
對于SCADA系統(tǒng)中模擬量的壓縮一般采用有損壓縮,這是因為SCADA系統(tǒng)沒有必要記錄每一個時間點上的模擬量值,只需要記錄一段時間數(shù)據(jù)的變化趨勢和異常點。有損壓縮方法中SDT算法是一種基于線性擬合的數(shù)據(jù)壓縮方法,它盡可能地延長直線趨勢,允許數(shù)據(jù)在最大的誤差范圍,盡量減少計算量[5]。
SDT算法是由Bristol在1990年提出的,它通過不斷構(gòu)造平行四邊形來選擇保存的數(shù)據(jù),對于落在平行四邊形內(nèi)的數(shù)據(jù)不予保存,只存儲平行四邊形以外的數(shù)據(jù)[6]。SDT算法的基本步驟如圖2所示。
Figure 2 Basic steps of the SDT algorithm圖2 SDT算法的基本步驟
設圖2中點a為第一個壓縮段的第一個數(shù)據(jù)點,在距離點a為E(也稱為門限值)的坐標處各有兩個支點,上支點與數(shù)據(jù)點連線構(gòu)成最大斜率,下支點與數(shù)據(jù)點連線構(gòu)成最小斜率。當只有一個數(shù)據(jù)點時,上、下支點和數(shù)據(jù)點在一條直線上,也就是斜率為0,表示旋轉(zhuǎn)門是關閉的;隨著數(shù)據(jù)點越來越多,門將逐步打開,斜率也在不斷變化,并且上支點門保持最大斜率,下支點門保持最小斜率。在一段時間內(nèi),門一旦打開就不能關閉,直到上支點門和下支點門的斜率一致。只要兩扇門未達到平行,或者兩個內(nèi)角之和小于180度,旋轉(zhuǎn)門操作將繼續(xù)進行。圖2中第1個壓縮段是從a到d,用a點到d點之間的直線代替數(shù)據(jù)點(a,b,c,d);同理,第2個壓縮段從e點開始,e點到h點之間的直線代替數(shù)據(jù)點(e,f,g,h)。
從SDT算法的基本思路可以看出算法存在的一些問題:第一,門限值E是唯一的可控參數(shù),E值的選取直接影響著壓縮性能,而且一旦E值確定,在整個壓縮過程中是不能改變的。E值的選取一般是根據(jù)經(jīng)驗所得,如果選取不合適,將大大降低SDT算法的性能。第二,如果某時間段的數(shù)據(jù)變化很慢則會導致一輪數(shù)據(jù)壓縮時間過長,就失去了線性趨勢的實時性。第三,大多數(shù)情況下數(shù)據(jù)的變化趨勢并不是線性的,而SDT算法是用線性趨勢擬合數(shù)據(jù)。第四,SDT算法不處理噪聲和野點,會把它當作正常數(shù)據(jù),這不僅會降低算法的壓縮比,也會影響算法的壓縮精度。
針對上述問題,研究者也都提出了改進方法,比如,王舉等[7]針對原始算法門限值E不能改變的缺點,提出將給定的初始門限值根據(jù)數(shù)據(jù)的波動情況調(diào)整E的大??;于松濤等[8]提出了容差動態(tài)調(diào)整的思想,根據(jù)容差的大小動態(tài)設置門限值;曲奕霖等[9]采用反饋控制系統(tǒng)模型,實現(xiàn)了容差在壓縮過程的動態(tài)變化;張景濤等[10]提出數(shù)據(jù)壓縮的性能在很大程度上取決于壓縮偏差,在數(shù)據(jù)壓縮過程中應該動態(tài)選取壓縮偏差參數(shù)的方法;段培永等[11]提出不能簡單地用一條直線的斜率來表示一段數(shù)據(jù)的變化趨勢,保存的數(shù)據(jù)點都是由計算得到的,而不是被壓縮數(shù)據(jù)中的點;寧海楠[12]提出了一種新的過程數(shù)據(jù)壓縮算法NSDT(New Swing Door Trending ),采用拋物線對過程數(shù)據(jù)的變化趨勢進行擬合來實現(xiàn)數(shù)據(jù)壓縮;張健等[13]提出要檢測和去除異常點,設定記錄限的長度等等。
以上改進算法都存在一些不足之處。第一,都是針對SDT算法存在的問題的一方面提出解決辦法,沒有綜合考慮所有問題來提出解決方案。第二,采用直線對壓縮數(shù)據(jù)進行擬合,也有提出采用曲線擬合壓縮數(shù)據(jù),但是根據(jù)函數(shù)的單調(diào)性的判定方法,在一段區(qū)間上曲線是單調(diào)遞增或單調(diào)遞減的。在實際情況中,數(shù)據(jù)的變化在一段時間內(nèi)不可能是一直遞增或遞減的,不能從根本上改變數(shù)據(jù)的變化趨勢。第三,改進的算法中有提出設定強制記錄限FSRL(Forced Storage Recording Limit)來解決一輪的壓縮時間過長的問題,這無疑增加了算法的復雜性[14]。第四,改進算法大都沒有考慮處理異常點和野點。在數(shù)據(jù)壓縮過程中,有的數(shù)據(jù)和其他的數(shù)據(jù)相差甚遠,這些數(shù)據(jù)點為異常點。在SCADA系統(tǒng)中,異常數(shù)據(jù)的出現(xiàn)代表著系統(tǒng)可能出現(xiàn)故障,對于系統(tǒng)的正常運行有著重要的意義。野點和異常點一樣都會影響數(shù)據(jù)壓縮算法的壓縮精度,降低數(shù)據(jù)壓縮算法的性能。因此,在數(shù)據(jù)壓縮算法中處理異常點和野點是十分有必要的。
本文提出的改進SDT算法ASDT(Advanced Swing Door Trending)通過正弦曲線擬合數(shù)據(jù),在一個周期內(nèi),數(shù)據(jù)的變化有增有減,符合數(shù)據(jù)的變化規(guī)律。針對SDT算法存在的問題,ASDT算法可以根據(jù)正弦曲線的特點來解決。首先,ASDT算法可以利用正弦曲線的周期性,將一個壓縮區(qū)間的長度限定在一個周期;其次,將正弦周期的第一個數(shù)據(jù)和門限值E一起作為ASDT算法的調(diào)節(jié)參數(shù),由于正弦周期的第一個數(shù)據(jù)不是固定的,所以現(xiàn)在的調(diào)節(jié)參數(shù)就不是固定不變的,可以達到一個動態(tài)調(diào)整門限值的效果;最后,ASDT算法會處理異常點和野點,對于異常點的處理:設置記錄值上限RL,如果數(shù)據(jù)超出記錄值上限,則保存此數(shù)據(jù)。對于野點的處理:可以設置一個臨界值NL,如果一個數(shù)據(jù)與其相鄰點的數(shù)據(jù)之差大于NL,則這個數(shù)據(jù)是野點,可以忽略不計。
對于正弦曲線周期的設定,不僅要考慮壓縮區(qū)間的長度,還要考慮流程工業(yè)壓縮比問題。流程工業(yè)一般都采用10∶1的壓縮比,如果超過此數(shù)據(jù),會丟失一些有用的細節(jié),正弦曲線的一個周期將作為一個壓縮區(qū)間,所以將周期設為10,既限定了壓縮區(qū)間長度又保證了壓縮比。圖3為ASDT算法的流程圖,在ASDT算法中,TL為壓縮區(qū)間的長度,RL為記錄值上限,NL為野點臨界值,每個正弦周期的第一個數(shù)據(jù)為A0,一個正弦周期的數(shù)值都以A0為基準數(shù)據(jù),在A0附近波動,Emax為上限值,Emin為下限值。
Emax=A0+max(sin(ωt+φ)+E)
Emin=A0+max(sin(ωt+φ)-E)
Figure 3 Flow chart of the ASDT algorithm圖3 ASDT算法流程圖
ASDT算法的具體步驟如下:
步驟1參數(shù)的初始化,TL和T都設置為10,ω=2π/T=2π/10=π/5。
步驟2判斷t是否大于TL,如果值為否,轉(zhuǎn)到步驟4。
步驟3對t的值進行處理,t=t%TL。
步驟4判斷t是否為正弦周期的第一個時間點,即判斷t是否為1,如果是,轉(zhuǎn)到步驟8。
步驟5取出當前數(shù)據(jù)data的值,判斷data是否是異常點或野點,如果是則處理。
步驟6計算上限值Emax、下限值Emin。在一個周期為10的正弦周期內(nèi),t分別為2.5和7.5時取得周期的最大值和最小值。
步驟7判斷data是否在下限值~上限值的范圍內(nèi),如果不在此范圍內(nèi),則保存data的值;否則轉(zhuǎn)到步驟9。
步驟8保存A0的值,為正弦周期的第一個時間點對應的數(shù)據(jù)值。
步驟9t=t+1。
步驟10判斷是否有新數(shù)據(jù),如果是,轉(zhuǎn)到步驟2。
步驟11結(jié)束本次數(shù)據(jù)壓縮。
從算法設計的角度分析,衡量一個算法的好壞,主要是考慮時間復雜度和空間復雜度,簡單地說是算法運行所需要的時間和所占的空間。在實際情況中,我們以數(shù)據(jù)壓縮算法所需的壓縮時間、解壓縮時間以及數(shù)據(jù)文件所占的空間大小作為衡量壓縮算法優(yōu)劣的標準。NSDT算法也是通過曲線來擬合數(shù)據(jù)的,所以它和ASDT算法之間的比較更具有可比性。SDT算法、ASDT算法以及NSDT算法所需的時間與空間比較如表1所示。
Table 1 Comparison of storage space and time among SDT, ASDT and NSDT algorithms表1 SDT算法、ASDT算法和NSDT算法時間、空間比較
CR衡量算法的壓縮能力,AE、RE、SE、MSE均可衡量數(shù)據(jù)的失真程度。AE、RE、SE表示整體數(shù)據(jù)的誤差,沒有對單個數(shù)據(jù)的誤差進行評價。因此,本實驗以MSE作為算法性能分析的指標。
實驗的測試數(shù)據(jù)為SCADA系統(tǒng)的遙測溫度值,選取了4組數(shù)據(jù),數(shù)據(jù)量分別為1 000,5 000,10 000,50 000。
圖4為SDT算法、ASDT算法和NSDT算法的壓縮比比較,圖5為SDT算法、ASDT算法和NSDT算法的壓縮誤差比較,表2為實驗的結(jié)果數(shù)據(jù)。
Figure 4 Comparison of compression ratio among SDT,ASDT and NSDT圖4 SDT算法、ASDT算法和NSDT算法壓縮比比較
Figure 5 Comparison of compression deviation among SDT, ASDT and NSDT圖5 SDT算法、ASDT算法和NSDT算法壓縮誤差比較Table 2 Performance comparison among SDT, ASDT and NSDT algorithms表2 SDT算法、ASDT算法和NSDT算法性能比較
壓縮算法測試數(shù)據(jù)壓縮比壓縮誤差SDT1 0005.62.57ASDT1 0009.333.45NSDT1 0007.43.89SDT5 0004.672.35ASDT5 0008.43.04NSDT5 0006.13.6SDT10 0003.231.74ASDT10 0008.22.19NSDT10 0007.062.8SDT50 0004.891.77ASDT50 0009.32.03NSDT50 0006.882.79
本文提出了一種基于旋轉(zhuǎn)門壓縮算法的改進算法ASDT,并編寫了程序?qū)y試數(shù)據(jù)進行模擬計算。ASDT算法不僅解決了傳統(tǒng)的旋轉(zhuǎn)門算法直線擬合數(shù)據(jù)時沒有考慮數(shù)據(jù)在采集過程的實際變化等問題,而且也不需要設定壓縮區(qū)間的長度。通過上述實驗,將SDT算法、ASDT算法以及NSDT算法進行了性能對比,結(jié)果表明ASDT算法能在不顯著增加壓縮誤差的前提下,有效地提高壓縮比。
[1] Sivalingam S,Hovd M.Effect of data compression on controller performance monitoring[C]∥Proc of 2011 19th Mediterranean Conference on Control & Automation, 2011:594-599.
[2] Vedam H, Venkatasubramanian V,Bhalodia M.A B-spline based method for data compression,process monitoring and diagnosis[J].Computers & Chemical Engineering,1998,22(12):S827-S830.
[3] Pettersson J,Gutman P O.Automatic tuning of the window size in the box car back slope data compression algorithm[J].Journal of Process Control,2004,14(4):431-439.
[4] Li X,Qiu H,Zhu Y.Research and design of lossy compression algorithm in embedded real-time database[C]∥Proc of the 2nd International Conference on Mechatronics and Automatic Control,2015:1027-1034.
[5] Mah R S H,Tamhane A C,Tung S H,et al.Process trending with piecewise linear smoothing[J].Computers & Chemical Engineering,1995,19(2):129-137.
[6] Bristol E H. Swing door trending:Adaptive trend recording[C]∥Proc of National Conference, 1990:749-753.
[7] Wang Ju, Fang Ding-yi, Chen Xiao-jiang,et al.Data compression of wireless sensor networks in the heritage monitor [J].Journal of Xidian University,2012,39(1):157-162.(in Chinese)
[8] Yu Song-tao,Wang Xiao-kun,Zhao Li-qiang,et al.The improved algorithm for SDT based on the dynamic adjustment of tolerance[J].Journal of Beijing University of Chemical Technology (Natural Science),2013,40(3):109-113.(in Chinese)
[9] Qu Yi-lin,Wang Wen-hai.Automatic parameter control SDT algorithm for process data compression[J].Computer Engineering,2010,36(22):40-42.(in Chinese)
[10] Zhang Jing-tao, Wang Hua,Wang Hong-an.Accessing and compressing of real-time data[J].Control and Instruments in Chemical Industry,2003,30(3):47-50.(in Chinese)
[11] Duan Pei-yong,Zhang Mei,Tang Tong-kui.A swing door trending(SDT) algorithm and its application to compressing process data received by local operation network nodes[J].Information and Control,2002,31(2):132-135.(in Chinese)
[12] Ning Hai-nan. A new process data compression algorithm based on SDT algorithm[J].Computer Technology and Development,2010,20(1):25-28.(in Chinese)
[13] Zhang Jian, Liu Guang-bin. A new data compression based on ISDT algorithm and its performance analysis[J].Fire Control and Command Control,2007,32(2):80-82.(in Chinese)
[14] Xing Rui,Qi Qi,Zheng Tao.Improved SDT algorithm [J].Computer Engineering and Design,2013,34(2):515-518.(in Chinese)
附中文參考文獻:
[7] 王舉,房鼎益,陳曉江,等.文物監(jiān)測中無線傳感器網(wǎng)絡數(shù)據(jù)壓縮算法[J].西安電子科技大學學報,2012,39(1):157-162.
[8] 于松濤,王曉琨,趙利強,等.基于容差動態(tài)調(diào)整的旋轉(zhuǎn)門(SDT)改進算法[J].北京化工大學學報(自然科學版),2013,40(3):109-113.
[9] 曲奕霖,王文海.用于過程數(shù)據(jù)壓縮的自控精度SDT算法[J].計算機工程,2010,36(22):40-42.
[10] 張景濤,王華,王宏安.實時數(shù)據(jù)的存取與壓縮[J].化工自動化及儀表,2003,30(3):47-50.
[11] 段培永,張玫,湯同奎.SDT算法及其在局域控制網(wǎng)絡中壓縮過程數(shù)據(jù)的應用[J].信息與控制,2002,31(2):132-135.
[12] 寧海楠.一種基于SDT算法的新的過程數(shù)據(jù)壓縮算法[J].計算機技術與發(fā)展,2010,20(1):25-28.
[13] 張健, 劉光斌. ISDT算法的數(shù)據(jù)壓縮處理及其性能分析
[J].火力與指揮控制,2007,32(2):80-82.
[14] 邢銳,祁奇,鄭滔.改進的SDT算法[J].計算機工程與設計,2013,34(2):515-518.