北斗衛星導航系統是我國自主建設、獨立運行、集導航定位、授時、用戶監測、短報文通信于一體的導航系統[1]。短報文通信是北斗系統特有的一個功能,其不受地形條件和環境氣候等影響,可用于解決偏遠地區數據實時通信問題,特別適用于常規通信手段存在盲區多、基建投入大的場合使用,例如野外的石油、天然氣的閥站和門站,以及遠離移動網絡覆蓋地區或者通信不穩定地區工廠的數據傳輸。
北斗衛星的主要任務是定位導航,通信的信道資源少,民用北斗短報文通信存在單次報文長度和通信頻度受限的問題。對于工業遠程監測控制和數據采集(Supervisory Control and Data Acquisition,SCADA)項目中的數據而言,數據采集頻率高,數據量大。若對數據作分包處理,可實現大量數據傳輸。但谷軍霞[2]等在2015年進行的北斗短報文丟包測試中表明,隨著報文分包數的增加,報文的傳輸成功率逐步降低。若減少對原始工業數據的采樣頻率,則可降低數據量。但對于企業來說,歷史數據是工業現場寶貴的財富,是為后續工程技術人員提供分析和故障處理的基礎資料,是不能因為傳輸的限制就隨意減少和丟棄的。因此就需要有一種方法,既可完成實時數據的傳輸,又不會產生太大的數據量。
短報文通信是我國北斗衛星導航系統特有的一個功能,可用于公網通信覆蓋盲區位置的數據傳輸。而通信頻度和報文長度的限制,降低了北斗短報文通信的效率,為此,提出了一種用于北斗通信數據的壓縮方法。該壓縮方法分兩步,第一步為有損壓縮,以工業數據庫壓縮技術中的旋轉門算法為基礎,同時為了實現有損壓縮的精度可調,用改進的BP神經網絡PID控制器對旋轉門算法的參數進行在線調整;第二步為無損壓縮,提出了前置特殊字節配合差值傳遞的無損壓縮策略。實驗表明經過此方法兩步壓縮后,對工業過程數據完成了較高的壓縮,同時,壓縮精度也可在壓縮過程中準確調整。
目前已發表的關于北斗短報文通信的論文中,于龍海提出先建立運動目標的數學模型,通過參數簡化和差分編碼實現北斗定位數據的壓縮[3]。陳海生提出的固定長度的索引碼表用于漁獲數據的傳輸,可以解決數據無損壓縮傳輸,但是不具有通用性[4]。彭浩提出了中文智能分詞和無損壓縮編碼的聯合壓縮算法,進而實現通信數據擴容[5],但是工業過程數據中,主要傳輸的是實數信息。目前,對于北斗短報文通信的工業過程數據的傳輸,還沒有較實用的數據壓縮和傳輸的解決辦法。因此本文提出了一種分別從有損和無損壓縮兩個方面,對數據分步進行壓縮處理的解決方案。實驗證明,該方法可有效對短報文數據進行壓縮處理,從而提高工業過程數據傳輸的效率和可靠性。
1 北斗通信壓縮第一步:有損壓縮
有損壓縮是在壓縮工程中損失一定的信息以獲得較高的壓縮比[6]。為后文評價有損壓縮過程,本文采用曲奕霖[7]在其論文中提出的評價標準,如下:
CR用于衡量算法對一組數據的壓縮能力,而δ用于衡量一組數據的平均失真度。
旋轉門算法是一種常見的過程數據壓縮算法。本文提出的北斗通信壓縮算法中的有損壓縮階段就基于旋轉門算法。下面先介紹旋轉門算法,再介紹本文提出的基于改進BP神經網絡PID的自控精度SDT有損壓縮算法(后文簡稱為自控精度有損壓縮算法)。
1.1 標準旋轉門算法(SDT)分析
旋轉門壓縮算法由美國OSI軟件公司研發,此算法主要針對的是浮點型的數據。SDT作為線性擬合的一種簡便算法,具有效率高、壓縮比高、實現簡單、誤差可控制的優點。基本算法原理如圖1所示。
設ΔE為SDT算法的壓縮精度參數,圖1中A點為起始點,以距離A點為ΔE的上下兩點為支點(類似兩扇門的門軸,故得名旋轉門)。壓縮開始時,兩扇門是關閉的,且在算法執行過程中,門只能往外開啟,不能往內關閉。隨著數據點的增加,門就會旋轉打開,兩扇門的內角和等于180°,就停止操作,存儲前一個數據點,并由該點開始新一段壓縮。經過旋轉門壓縮后,由A到B點的直線代替A到B的數據點。
解壓過程:根據每段直線保存的起始點和終止點可以求出線段的公式,然后根據某點橫軸坐標求出其對應的縱坐標數據值。
1.2 自控精度有損壓縮算法算法設計
對于SDT算法有兩方面需要注意:(1)ΔE是決定SDT算法解壓平均誤差δ的關鍵。如果ΔE選擇較小,δ也小,壓縮比CR低;反之ΔE選擇較大,CR高,δ卻也變大。即使是有經驗的工程師,也需要長時間調整ΔE才能找到合適的值,且當數據范圍和特征改變時,為滿足壓縮比和精度的要求,還需重新設置。(2)δ通常是作為評價壓縮過程好壞的標準,如果δ不符合要求,較高的CR沒有任何意義。
基于以上兩點,將關注集中在δ的控制上。通過給定理想的δ,用算法自適應調整ΔE。本文將工程中的反饋控制思想引入,用PID算法對ΔE在線調整,同時用神經網絡算法動態調整PID參數,并通過其強大的學習和網絡記憶功能,實現相似數據快速壓縮。
該算法包括兩方面內容:改進BP神經網絡PID控制器(后文簡稱為:NBP-PID)和標準SDT壓縮及解壓算法。數據通過SDT壓縮及解壓過程視為被控對象,期望的解壓平均誤差δs作為給定輸入,實際解壓平均誤差δ作為系統的輸出。NBP-PID控制器不斷調整ΔE的輸出,進而控制δ輸出,直到偏差值小于算法停止運行的門限值Th為止,這樣便完成了第一組數據的壓縮。門限值計算公式為:
當首組數據壓縮完成后,保留此時控制器各個參數,用做下一組數據壓縮時控制器參數的初始值,完成第二組數據的壓縮,以此類推。同時將壓縮好的首組數據用北斗無損壓縮算法繼續壓縮。圖2為首組數據壓縮算法的反饋控制系統模型。
1.2.1 NBP-PID控制器設計
在工業控制中,對PID控制器比例、積分、微分3個系數的調整一般很難。根據神經網絡理論,三層BP神經網絡可逼近任意線性和非線性函數,通過神經網絡的自身學習,加權系數調整可以使其穩定狀態對應某種最有規律下的PID控制器參數[8]。于是本文采用三層BP神經網絡(4-5-3結構)來調整PID的參數。
輸入層神經元為4個,分別是輸入rin、輸出yout、誤差error和常數1;隱含層選擇5個即可滿足要求,3個輸出神經元對參數Kp、Ki、Kd進行在線調整。輸入層的輸入為:
1.2.2 自控精度有損壓縮算法實現步驟
(1)第一次進行壓縮時,對相應的參數初始化。令u、u_1、u_2、u_3、u_4、u_5,即控制器的輸出零時刻和各歷史時刻初始值都為0,同時誤差error、輸出值yout零時刻和各歷史時刻也都初始化為0。隱含層的加權系數初始值和和輸出層加權系數的初始值為-0.5~0.5之間的隨機數。選定學習速率η、慣性系數α和β,以及門限值Th;
(2)采樣得到rin(k);將前一時刻控制器的輸出u(k-1),即ΔE傳入代表被控對象模型的壓縮解壓函數中計算,得到此時的輸出yout值,再計算該時刻的系統誤差error(k)=rin(k)-yout(k);
(3)計算神經網絡各層神經元的輸入、輸出,輸出層的輸出即對應PID控制器的3個可調參數Kp、Ki、Kd,據此計算控制器當前時刻的輸出u(k);
(4)進行神經網絡學習,在線調整輸出層和隱含層加權系數值,然后將各狀態參數更新;
(5)根據式(3),計算系統此時的Th值,如果小于預先設置的門限值,則表明此組數據已達到給定誤差壓縮要求,進入步驟(6),否則進入步驟(2),再次循環;
(6)將此時刻以及前3個時刻的輸出層及隱含層加權系數值保存,作為下組數據壓縮時零時刻及歷史時刻的初始值,保存u及前5個時刻的值,作為下組數據壓縮各時刻u的初始值。同時,此組壓縮后的數據進入后續北斗無損壓縮算法中繼續壓縮;
(7)利用前一組保存的控制器各參數開始下一組數據的壓縮,即又一次進入步驟(2),直到所有組別的數據都壓縮完畢,算法結束。
2 北斗通信壓縮第二步——無損壓縮
相對于有損壓縮來說,無損壓縮占用空間大,壓縮比不高,但它 100%地保存了原始信息,沒有任何信號丟失,不受信號源影響[9]。 一般的工業過程數據都有明確的物理含義,以項目中某能源公司提供的天然氣閥站數據為例,包含了溫度、流量、壓力、阻力等模擬量信息,也有閥門啟停、報警等狀態量信息。
本文以過程數據中最常見的流量/壓力/阻力為例,對北斗無損壓縮算法作介紹。
2.1 數據預處理
假設待壓縮實數數據精度為兩位小數,數據大小為0.00~999 999.00。且以一個float fRevBuf[500] 類型數組保存,若將此數組每個元素都乘以100,則其小數部分全部轉化成了整數,再用強制類型轉化得到4 B的無符號整形數組 iPlc[500]。不同類型的整數可表示的數據范圍如表1前3行所示,且根據整數在計算機中的保存方式[10],可推得后面的4種情況。
2.2 北斗短報文通信無損壓縮算法
過程數據一般是按時間的先后順序采集的數據,數據中帶有時間特性,大多數工業現場采集數據都是過程數據[11]。因此,數據之間在數值上是有關聯的,所以根據相鄰數組元素的差值,而不是元素值本身,對其分配存儲空間更為合理。下面為具體步驟:
(1)新建數組 int iSub[500],用于保存數組iPlc中相鄰元素的差值,即:iSub[i+1]=iPlc[i]-iPlc[i+1]; 并將iPlc數組中的首元素賦值給iSub數組中的首元素。
(2)根據差值數組iSub中的每個元素的值大小,對照表1,給每個元素分配一個從1~4不等的字節長度標記,并用另一個數組iLethByte作出記錄。如表2中,差值元素為100,iLethByte數組相同下標元素值為1。
(3)iLethByte數組中每一個元素記錄了相同下標位置的差值數組iSub每一個元素所需存儲空間的最小字節長度,為了在北斗接收端作解壓縮,除了傳遞iSub數組外也需要傳遞長度標記數組iLethByte,但這樣需要傳遞的數據量過大。根據表1可知,以不同字節長度可表示的不同的數值范圍為依據,可分為7種類型,但現實中不需要每次都分成7種類型,因為過程數據數值大小具有一定的連續性,并不是平均分布的,于是每次壓縮時根據過程數據本身的分布規律選擇其中的4種(選擇的原則后面會補充)類型作為本次傳輸的標準類型,包含在其余類型里的數據最終會歸類到這4種標準類型中,然后用兩位二進制數代碼來代指此次選出的4個標準類型。例如,此次的4個標準類型字節長度為1、2、2.5、3,則它們的二進制數代碼可依次為:00 01 10 11。然后每個元素按照所在的標準類型的字節長度壓縮數據,變成一個個存儲長度不等的數據,再將每4個變換之后的iSub數組元素組成一組,在每組前面添加一個記錄字節bt4Record,bt4Record為8位,每兩個二進制位可表示一個iSub元素所在的標準類型的代碼,且iSub元素在前面的對應bt4Record的高位,在后面的對應bt4Record的低位,如表2所示。至此,表2中這4個iSub元素前面的bt4Record字節二進制表示為:01100011。
(4)標準類型的選擇組合共為讓接收端確定是哪種組合,需要額外傳遞當前組合的編號。且單次需要壓縮的數據個數如不是4的倍數,則使最后一個bt4Record字節不夠8位,此時對于不足的字節先補零,然后額外傳遞本組壓縮數據的總數值,便可使北斗接收端解壓無誤。在每組報文的開頭,取兩個字節(16個bit位),其中10個bit位記錄本次壓縮的數據元素總數值(10位可表示:210=1 024個數,足夠),剩余6個bit位(26=64》35)表示標準類型組合編號。
至此,一次北斗短報文的數據報文打包完成。
(5)將經過步驟處理后的數據通過北斗設備發送到接收端。接收端解壓時,先取出前兩個字節,根據6個比特位的分類編號確定此組數據中的四種標準類型;根據10個比特位的數據個數,確定此組原始數據的總個數。然后依次先取bt4Record,再按照此字節的記錄長度對每個差值元素取數,分別保存成整數,再依次取下一個bt4Record字節。對于接收到數據字節長度為1、2、4類型的,可根據表1直接強制類型轉化變回4個字節的整數;對于其余自定義類型,則需要提取符號位,再根據正數的補碼與原碼相同,負數的補碼為原碼取反加一原則處理轉化成4個字節的整數。
(6)將步驟(5)保存的整數縮小100倍,再保存成實數類型,至此完成北斗無損壓縮的解壓縮過程。
補充:一組數據中最大值所在的類型必須是本次選取的標準類型之一。例如iSub[4]元素最大值為8 000 000,則字節為3的標準類型必須取,后再取其他可包含元素值最多的3個類型作為標準類型。
3 試驗結果與對比分析
實驗數據源于一滾鉚實驗機床,其作用是用滾鉚工具碾壓軸承外環邊緣的環形槽,使環形槽的一側邊緣向座圈孔或軸承的變形,進而實現軸向固定。數據源自機床中的壓力傳感器,一組數據表示一次壓緊過程,原始壓力曲線如圖3所示。(原始數據共18組,編號:S1~S18)圖中曲線下降階段是因為電機停轉,壓力逐步除去引起的,停機時間人為控制,故為排除人為干擾,每組只取前20 s的數據(200個)。
后續實驗中都選定rin(k)為1,學習速率η為1.4,慣性系數α為0.3,β為0.5,門限值Th為0.1。且后續段落中,“第一階段”指的是北斗通信壓縮中的有損壓縮階段,“第二階段”為無損壓縮階段。
3.1 NBP-PID與標準BP神經網絡PID控制器性能對比
圖4為在第一階段中,NBP-PID算法較標準BP神經網絡PID算法(簡稱為BP-PID),6組數據單獨壓縮時各自達到門限值所需壓縮訓練次數對比。
分析圖4可知,在修改網絡權值時,增加一個k-2時刻的慣性項和“階梯慣性項”系數的NBP-PID算法,可以減少重復壓縮的次數,從而更快達到門限值。
圖5為第一組(S1)數據分別采用兩種算法解壓誤差和訓練次數的曲線圖,采用NBP-PID可在訓練11次時達到門限值,即達到給定值的90%以上而結束訓練,而BP-PID在最大訓練次數(20)內無法達到給定值的90%。綜上,NBP-PID的確可以有效加快訓練過程,減少重復壓縮的次數,從而提升算法的實用性。
3.2 采用NBP-PID算法壓縮多組數據
表3給出當首組數據壓縮完成后,后續組別依次繼續壓縮,達到門限值的壓縮次數的測試數據。
根據表3知,首次壓縮數據在10次左右,后續組別重復壓縮次數除了個別組別達到最大訓練次數,其余數據組別基本可在一兩次之內完成壓縮。因此通過NBP-PID網絡權值記憶功能,當類似數據出現時,可一定程度上加快后續組的壓縮,提升整體壓縮效率。
3.3 北斗通信壓縮算法整體壓縮分析
表4描述了兩個階段壓縮過程中具體壓縮信息。為排除偶然性,這里用的數據與前面實驗的數據不同,采用S10~S14的5組數據作為實驗數據。
這5組數據的平均解壓誤差δ在1.0附近,滿足給定值上下波動10%以內的要求。有損壓縮階段的壓縮比平均為4.452,實現了用戶自定義壓縮誤差的同時還能擁有不錯的壓縮比。無損壓縮階段中,壓縮后的存儲空間是壓縮后的數組元素所占空間之和,加上記錄字節所占空間之和,再加上處在報文開頭的兩個字節的總和。
總壓縮率是無損壓縮之后所占存儲空間與原始數據所占存儲空間(800=4×200)之比。可以看到,經過兩個階段的壓縮之后,數據被壓縮到了原始數據的10.5% 左右。由此可見北斗壓縮算法的壓縮效果良好。
4 結論
本文提出的有損壓縮算法已經在實驗室環境中完成測試,無損壓縮算法在某天然氣管線監測項目中實際完成測試部署,效果良好。基于北斗通信的工業數據壓縮算法一方面解決了SDT壓縮精度不可控、參數設置困難等問題;另一方面,數據經過兩個階段的壓縮,獲得了較高的壓縮比。此外,該算法不僅可用于北斗短報文通信,也可用于其他通信頻度和報文長度受限的場合下,因此該算法具有工程實用價值。
參考文獻
[1] 楊元喜。北斗衛星導航系統的進展、貢獻與挑戰[J]。測繪學報,2010,39(1):1-6.
[2] 谷軍霞,王春芳,宋之光。北斗短報文通信信道性能測試與統計分析[J]。氣象科技,2015,43(3):458-463.
[3] 于龍洋,王鑫,李署堅,等。基于北斗短報文的定位數據壓縮和可靠傳輸[J]。電子技術應用,2012,38(11):108-111.
[4] 陳海生,郭曉云,王峰,等。基于北斗短報文的漁獲信息壓縮傳輸方法[J]。農業工程學報,2015,31(22):155-160.
[5] 彭皓。北斗系統用戶通信數據擴容技術研究[D]。西安:西安電子科技大學,2013.
[6] 徐慧。實時數據庫中數據壓縮算法的研究[D]。杭州:浙江大學,2006.
[7] 曲奕霖,王文海。用于過程數據壓縮的自控精度SDT算法[J]。計算機工程,2010,36(22):40-42.
[8] 譚永紅。基于BP神經網絡的自適應控制[J]。控制理論與應用,1994,11(1):84-87.
[9] 鄭翠芳。幾種常用無損數據壓縮算法研究[J]。計算機技術與發展,2011,21(9):73-76.
[10] 張德偉,沈培鋒,張德珍,等。計算機補碼概念剖析[J]。微計算機信息,2005,21(20):177-178.
[11] 沈春鋒,黃松鑫,張冬,等。基于參數估計的通用工業數據在線壓縮方法[J]。控制工程,2011(s1):142-145.
作者信息:
陳 勇,黃茹楠,劉 青,李建坡,李 鑫
(燕山大學 電氣工程學院,河北 秦皇島066004)
-
數據采集
+關注
關注
39文章
6238瀏覽量
113899 -
工業控制
+關注
關注
38文章
1466瀏覽量
85948 -
北斗
+關注
關注
3文章
613瀏覽量
36187
原文標題:電路可靠性設計與元器件選型
文章出處:【微信號:eet-china,微信公眾號:電子工程專輯】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論