發(fā)布時(shí)間:2022-01-04所屬分類:電工職稱論文瀏覽:1次
摘 要: 摘 要:為解決用電信息采集系統(tǒng)中數(shù)據(jù)高頻上報(bào)引起的通信及存儲(chǔ)問(wèn)題,首先通過(guò)協(xié)議分析將遠(yuǎn)程通信報(bào)文的冗余性分為了幀間冗余、模式冗余以及編碼冗余,并分別采用報(bào)文預(yù)處理方法、LZ77 算法與 Huffman 算法壓縮其冗余;然后針對(duì)單種算法無(wú)法同時(shí)對(duì)報(bào)文的三種冗余進(jìn)行壓
摘 要:為解決用電信息采集系統(tǒng)中數(shù)據(jù)高頻上報(bào)引起的通信及存儲(chǔ)問(wèn)題,首先通過(guò)協(xié)議分析將遠(yuǎn)程通信報(bào)文的冗余性分為了幀間冗余、模式冗余以及編碼冗余,并分別采用報(bào)文預(yù)處理方法、LZ77 算法與 Huffman 算法壓縮其冗余;然后針對(duì)單種算法無(wú)法同時(shí)對(duì)報(bào)文的三種冗余進(jìn)行壓縮的問(wèn)題,通過(guò)對(duì)三種冗余各自的特性及相互間關(guān)系的分析,提出了一種組合壓縮的方式,實(shí)驗(yàn)結(jié)果表明,該方法可以有效的縮短遠(yuǎn)程通信報(bào)文的長(zhǎng)度,從而減少存儲(chǔ)消耗、提高網(wǎng)絡(luò)的傳輸效率。
關(guān)鍵詞:用電信息采集;遠(yuǎn)程通信報(bào)文;冗余性分析;數(shù)據(jù)壓縮;組合壓縮
0 引 言
在智能電網(wǎng)中,用電信息采集系統(tǒng)(以下簡(jiǎn)稱用采系統(tǒng))對(duì)分析用戶用電行為以及電網(wǎng)運(yùn)行狀態(tài)具有重要意義。用電信息監(jiān)測(cè)最重要的是實(shí)現(xiàn)無(wú)間斷的用電信息采集與遠(yuǎn)程通信,遠(yuǎn)程通信指用電信息采集系統(tǒng)中采集終端(下文稱終端)與采集主站(下文稱主站)之間的數(shù)據(jù)傳輸。現(xiàn)階段實(shí)際在運(yùn)的用采系統(tǒng)的遠(yuǎn)程通信,多采用 GPRS/CDMA、專用 230MHz 等無(wú)線通信方式進(jìn)行數(shù)據(jù)傳輸[1],高強(qiáng)度的監(jiān)測(cè)意味著采集系統(tǒng)會(huì)對(duì)下屬的終端節(jié)點(diǎn)進(jìn)行全天候的數(shù)據(jù)采集與監(jiān)控,用電信息的高頻率上報(bào)會(huì)產(chǎn)生大量的數(shù)據(jù)積壓,從而對(duì)無(wú)線傳輸造成嚴(yán)重的通信負(fù)荷。
數(shù)據(jù)壓縮技術(shù)可對(duì)數(shù)據(jù)量進(jìn)行有效的壓縮,以減少存儲(chǔ)空間,提高信息數(shù)據(jù)傳輸、存儲(chǔ)和處理的效率[2]。目前數(shù)據(jù)壓縮技術(shù)已經(jīng)廣泛應(yīng)用于視頻、圖像、語(yǔ)音等業(yè)務(wù)。在電力系統(tǒng)中,各類壓縮算法的應(yīng)用也已經(jīng)有了先例[3-8]。文獻(xiàn)[6]針對(duì)電力系統(tǒng)數(shù)據(jù)周期性的特點(diǎn),選用合適的小波基將電力數(shù)據(jù)變換到小波域,然后對(duì)高頻和低頻部分分別進(jìn)行編碼以實(shí)現(xiàn)高效壓縮。文獻(xiàn)[7]針對(duì)電力系統(tǒng)故障信號(hào)波形在特定時(shí)間段內(nèi)的自相似性,提出了一種基于分形插值的數(shù)據(jù)壓縮與還原算法,有效的提升了故障錄波數(shù)據(jù)的壓縮倍數(shù)。文獻(xiàn)[8]充分利用了電力系統(tǒng)波形數(shù)據(jù)的周期性、有界性和冗余性特點(diǎn),在 DSP 平臺(tái)上實(shí)現(xiàn)了波形數(shù)據(jù)的高效壓縮。然而,上述方法都是針對(duì)理論上的單一變量的連續(xù)測(cè)量數(shù)據(jù)或者波形數(shù)據(jù)進(jìn)行壓縮,而在實(shí)際用電信息采集與通信過(guò)程中,傳輸?shù)牟粌H有單一的連續(xù)電壓值或者電流值,還需加入召測(cè)、控制等協(xié)議信息以組成封裝好的數(shù)據(jù)報(bào)文。因此,研究適合實(shí)際應(yīng)用的用電信息采集系統(tǒng)遠(yuǎn)程通信報(bào)文的壓縮方法以降低海量報(bào)文數(shù)據(jù)中存在的冗余信息,最大程度地降低數(shù)據(jù)傳輸與存儲(chǔ)壓力已經(jīng)成為電力行業(yè)的迫切需要。
用采系統(tǒng)分為終端采集系統(tǒng),遠(yuǎn)程傳輸系統(tǒng)和采集主站三大部分,考慮到大量的用電數(shù)據(jù)通過(guò)終端采集上報(bào)給主站會(huì)對(duì)公網(wǎng)的傳輸造成巨大的壓力,因此,文中首先詳細(xì)分析了數(shù)據(jù)報(bào)文冗余性的產(chǎn)生來(lái)源,以此為基礎(chǔ)對(duì)其進(jìn)行針對(duì)性壓縮。由于用采系統(tǒng)遠(yuǎn)程通信報(bào)文通信協(xié)議包含控制、互操作等信息,在壓縮和恢復(fù)的過(guò)程中不能對(duì)報(bào)文結(jié)構(gòu)與內(nèi)容的完整性產(chǎn)生影響。因此將采用無(wú)損壓縮方式對(duì)報(bào)文進(jìn)行處理。然后,針對(duì)數(shù)據(jù)報(bào)文的三種冗余來(lái)源:幀間冗余、模式冗余以及編碼冗余,分別采用報(bào)文預(yù)處理、LZ77 算法、Huffman 算法對(duì)數(shù)據(jù)報(bào)文進(jìn)行壓縮,并在此基礎(chǔ)上提出了一種組合壓縮的方式,實(shí)驗(yàn)證明該方法可以最大限度壓縮報(bào)文長(zhǎng)度,提高傳輸效率。
1 用采系統(tǒng)遠(yuǎn)程通信報(bào)文結(jié)構(gòu)與冗余分析
1.1 用采系統(tǒng)遠(yuǎn)程通信報(bào)文結(jié)構(gòu)
主站與終端進(jìn)行數(shù)據(jù)傳輸需要遵循一定的通信協(xié)議,通信協(xié)議約定了通訊雙方在接收?qǐng)?bào)文時(shí)的數(shù)據(jù)格式、編碼方法以及傳輸規(guī)則。以圖 1 所示國(guó)家電網(wǎng)公司 Q/GDW 1376.1-2013 協(xié)議(下文簡(jiǎn)稱 376.1 協(xié)議)報(bào)文幀結(jié)構(gòu)為例,可見(jiàn)主站與終端的各種交互及上報(bào)信息均以幀為基本組成單位,由多個(gè)字節(jié)嚴(yán)格按照協(xié)議規(guī)定順序排列組成。幀中各個(gè)域的長(zhǎng)度與含義詳見(jiàn)文獻(xiàn)[9]。
1.2 用采系統(tǒng)遠(yuǎn)程通信報(bào)文冗余分析
數(shù)據(jù)能夠被壓縮的前提條件是數(shù)據(jù)報(bào)文內(nèi)部與報(bào)文之間存在的冗余性。首先,報(bào)文必須按規(guī)定幀格式通信意味著報(bào)文結(jié)構(gòu)間存在一定的相似性(幀間冗余);其次,由于通信協(xié)議對(duì)于數(shù)據(jù)的編碼方式是固定的,因此報(bào)文中重復(fù)上報(bào)的信息(時(shí)間信息)會(huì)被編碼成許多重復(fù)的字符串(模式冗余);最后,每幀數(shù)據(jù)報(bào)文中各個(gè)域的值由上報(bào)節(jié)點(diǎn)當(dāng)前物理狀態(tài)直接決定,因此編碼之后的報(bào)文在信息學(xué)上也必然存在著冗余(編碼冗余)。
幀間冗余體現(xiàn)在數(shù)據(jù)報(bào)文之間結(jié)構(gòu)的相似性上,由于通信協(xié)議嚴(yán)格規(guī)定了數(shù)據(jù)報(bào)文各個(gè)域的組成方式,因此一段時(shí)間之內(nèi)從某個(gè)固定的采集終端上報(bào)給主站的所有報(bào)文中必然有一些信息(如終端地址信息)是相同的。表 1 是一個(gè)固定的終端節(jié)點(diǎn)在一天內(nèi)發(fā)出的所有通信報(bào)文的一部分(采用國(guó)家電網(wǎng) DL/T 698.45-2017[10]協(xié)議,下文稱 698 協(xié)議)。
376、698 等通信協(xié)議實(shí)現(xiàn)了對(duì)用戶數(shù)據(jù)的封裝,通過(guò)加入幀頭、幀尾、地址、長(zhǎng)度等校驗(yàn)信息可以對(duì)數(shù)據(jù)報(bào)文進(jìn)行有效的差錯(cuò)控制,因此也可以在近距離通信中直接應(yīng)用于鏈路層。但當(dāng)通過(guò)遠(yuǎn)程傳輸系統(tǒng)來(lái)傳輸時(shí),報(bào)文實(shí)際上是作為遠(yuǎn)程傳輸系統(tǒng)通信協(xié)議應(yīng)用層載荷加載到通信協(xié)議棧中,由遠(yuǎn)程通信協(xié)議棧負(fù)責(zé)可靠傳輸。因此重復(fù)發(fā)送地址、幀頭、幀尾等校驗(yàn)信息就失去了糾錯(cuò)意義,對(duì)于信息存儲(chǔ)與傳輸是冗余的,可以適當(dāng)減少發(fā)送次數(shù)。根據(jù) 698 協(xié)議規(guī)定,可將每幀報(bào)文寫成通用的格式: 68+長(zhǎng)度校驗(yàn)+控制碼+地址+幀頭校驗(yàn)碼+鏈路用戶數(shù)據(jù)+校驗(yàn)碼+16,由于表 2 中的報(bào)文來(lái)自于同一終端節(jié)點(diǎn),因此每幀數(shù)據(jù)用來(lái)表示地址的字節(jié)都相同,上述數(shù)據(jù)中終端地址表示位是從第 5 個(gè)字節(jié)開始,內(nèi)容為05 84 23 00 00 20 15 00,一共8個(gè)字節(jié),同時(shí),幀頭與幀尾標(biāo)識(shí)符對(duì)于每幀數(shù)據(jù)報(bào)文都是固有的并且出現(xiàn)的位置固定,因此可以在傳輸過(guò)程中忽略。
模式冗余是指由于節(jié)點(diǎn)重復(fù)上報(bào)與通信協(xié)議編碼方式固定導(dǎo)致的在報(bào)文內(nèi)部形成的大量重復(fù)的字符串。如終端在上報(bào)某些電能信息之前總是會(huì)將當(dāng)前的時(shí)間一同上報(bào),于是相同的時(shí)間標(biāo)識(shí)就會(huì)形成一種固定的“模式”在報(bào)文中多次出現(xiàn),具體表現(xiàn)如表 2 所示。
編碼冗余可用信息論中“信息熵”的概念來(lái)說(shuō)明。每條數(shù)據(jù)的“熵”值越小,代表該數(shù)據(jù)包含的信息量越少。而信息量少,證明可以使用更少的二進(jìn)制位來(lái)表示該條報(bào)文。
可見(jiàn),理論上完整表示該幀報(bào)文只需要 494 個(gè)二進(jìn)制位,而實(shí)際上在傳輸過(guò)程中卻需要花費(fèi) 87*8=694 個(gè)二進(jìn)制位來(lái)表示該幀報(bào)文,因此從報(bào)文的整體內(nèi)容來(lái)看,可以通過(guò)降低高頻字符的二進(jìn)制表示位數(shù)來(lái)對(duì)報(bào)文進(jìn)行壓縮。
2 用電信息壓縮算法及其實(shí)現(xiàn)原理
由第二節(jié)的分析可以看到,幀間冗余、模式冗余以及編碼冗余是對(duì)用電信息遠(yuǎn)程通信報(bào)文壓縮的可行性基礎(chǔ),文中針對(duì)這三種冗余分別進(jìn)行處理,以達(dá)到縮短報(bào)文長(zhǎng)度,減少數(shù)據(jù)傳輸量的目的,整體的處理流程如圖 2 所示。
2.1 幀間冗余壓縮
根據(jù)第二節(jié)對(duì)報(bào)文幀間冗余的分析,當(dāng)報(bào)文數(shù)據(jù)來(lái)自于同一個(gè)采集終端時(shí),幀頭、幀尾標(biāo)識(shí)以及經(jīng)過(guò)通信協(xié)議編碼后的地址信息都相同。當(dāng)通過(guò)遠(yuǎn)程傳輸進(jìn)行通信時(shí),去除重復(fù)信息對(duì)于報(bào)文的存儲(chǔ)與傳輸沒(méi)有影響。因此在對(duì)報(bào)文進(jìn)一步壓縮之前,先進(jìn)行預(yù)處理,去除重復(fù)發(fā)送的幀頭、幀尾以及地址信息,可以消除幀間冗余。由于模式冗余一般出現(xiàn)在報(bào)文的鏈路用戶數(shù)據(jù)區(qū)域,預(yù)處理操作并不會(huì)影響到這個(gè)區(qū)域的數(shù)據(jù),而編碼冗余只與報(bào)文內(nèi)部字符出現(xiàn)的頻率相關(guān),只要報(bào)文內(nèi)部每個(gè)字符出現(xiàn)的頻率不符合均勻分布,編碼冗余是一定存在的,因此對(duì)報(bào)文進(jìn)行預(yù)處理操作并不會(huì)影響報(bào)文的其他冗余性。
2.2 模式冗余壓縮
由第二節(jié)分析可知,模式冗余表現(xiàn)為報(bào)文內(nèi)部形成的大量重復(fù)字符串。LZ77 算法對(duì)于存在大量重復(fù)內(nèi)容的文件有良好的壓縮效率,因此文中將用 LZ77 算法來(lái)消除報(bào)文中存在的模式冗余。LZ77 編碼方法是基于字典的無(wú)損壓縮算法,它的核心思想是基于數(shù)據(jù)結(jié)構(gòu)的重復(fù),在編碼過(guò)程中通過(guò)在已經(jīng)出現(xiàn)的數(shù)據(jù)中查找重復(fù)出現(xiàn)的內(nèi)容來(lái)去除這種冗余,以此實(shí)現(xiàn)數(shù)據(jù)的壓縮。
2.2.1 LZ77 算法的編碼
LZ77 算法將數(shù)據(jù)中重復(fù)出現(xiàn)的長(zhǎng)字符串用字典索引來(lái)表示,這需要一個(gè)滑動(dòng)窗口,它包括兩部分,分別為搜索緩沖區(qū)以及前向緩沖區(qū)。在編碼時(shí)首先將文件中的字符讀入滑動(dòng)窗口中的前向緩沖區(qū)中,然后再通過(guò)搜索緩沖區(qū)。搜索緩沖區(qū)中的數(shù)據(jù)作為建立字典索引的依據(jù),前向緩沖區(qū)中的數(shù)據(jù)與搜索緩沖區(qū)中的數(shù)據(jù)進(jìn)行比較,查找最長(zhǎng)的字符串匹配。編碼流程圖如圖 3 所示:
2.2.2 LZ77 算法的解碼
LZ77 算法的解壓縮過(guò)程同樣需要用到滑動(dòng)窗口,窗口大小與編碼時(shí)的搜索緩沖區(qū)長(zhǎng)度相同,通過(guò)解碼標(biāo)記和保持滑動(dòng)窗口中的符號(hào)來(lái)更新解壓數(shù)據(jù)。當(dāng)解碼單個(gè)字符標(biāo)記時(shí),將標(biāo)記解碼成字符拷貝到滑動(dòng)窗口中,解碼元組標(biāo)記時(shí),在滑動(dòng)窗口中查找相應(yīng)的偏移量,同時(shí)找到指定長(zhǎng)度的字符串進(jìn)行替換。
2.3 編碼冗余壓縮
由第二節(jié)分析可知,只要報(bào)文中字符出現(xiàn)頻率不符合均勻分布,就會(huì)存在編碼冗余。而 Huffman 編碼可以根據(jù)使用頻率最大化節(jié)省字符的存儲(chǔ)空間,因此我們用 Huffman 算法來(lái)消除報(bào)文中存在的編碼冗余。Huffman 是變長(zhǎng)編碼方法,以數(shù)據(jù)中各個(gè)字符出現(xiàn)概率的大小為基礎(chǔ)對(duì)字符賦予不同長(zhǎng)度的代碼,是一種優(yōu)化靜態(tài)編碼方法,產(chǎn)生的二叉樹具有最小的加權(quán)長(zhǎng)之和∑𝑊𝑗𝐿𝑗,其中𝑊𝑗表示某個(gè)符號(hào)出現(xiàn)的頻率,𝐿𝑗表示該字符的編碼長(zhǎng)度。
(3)重復(fù)步驟(2),直到森林中只剩下一棵樹。
Huffman 算法根據(jù)構(gòu)建的 Huffman 樹來(lái)對(duì)字符進(jìn)行編碼,在 Huffman 樹中,待編碼字符必定是葉子節(jié)點(diǎn),編碼從根節(jié)點(diǎn)開始依次尋找葉子節(jié)點(diǎn),在樹有了分叉時(shí),向左的路徑記為代碼 0,向右的記為代碼 1,直至找到原始的文件的字符,即實(shí)現(xiàn)了對(duì)該字符的編碼。
2.3.2 Huffman 算法的解碼
Huffman 算法解碼需要利用 Huffman 樹,因此,在壓縮文件時(shí)必須要將構(gòu)建 Huffman 樹的一些必要的統(tǒng)計(jì)信息(字符總數(shù),每個(gè)字符出現(xiàn)的頻率)寫入壓縮文件中,這樣才能完成解壓。解壓過(guò)程是壓縮過(guò)程的反操作,首先根據(jù)讀取的壓縮文件的二進(jìn)制數(shù)據(jù)流,開始遍歷 Huffman 樹,從根節(jié)點(diǎn)開始,當(dāng)讀取到 0 時(shí),取根節(jié)點(diǎn)的左子樹,讀取到 1 的時(shí)候,取根節(jié)點(diǎn)的右子樹,然后重復(fù)上述操作,直到訪問(wèn)到的節(jié)點(diǎn)是一個(gè)葉子節(jié)點(diǎn),讀取該葉子節(jié)點(diǎn)表示的字符,即完成一個(gè)字符的解碼。
3 仿真實(shí)驗(yàn)及結(jié)果分析
為驗(yàn)證前文的冗余性分析及壓縮方法,我們?cè)谡鎸?shí)的用電采集系統(tǒng)采集的數(shù)據(jù)上進(jìn)行了測(cè)試,并進(jìn)一步探究了 LZ77 算法中搜索區(qū)域長(zhǎng)度與前向緩沖區(qū)長(zhǎng)度對(duì)報(bào)文壓縮比例的影響,分析了各個(gè)長(zhǎng)度范圍內(nèi)數(shù)據(jù)報(bào)文壓縮的最佳參數(shù)組合。之后在單種算法壓縮的基礎(chǔ)上,通過(guò)對(duì)三種冗余各自的特性與相互關(guān)系的分析,提出了一種組合壓縮方式來(lái)進(jìn)一步提升壓縮效果。
3.1 使用 Huffman 算法消除編碼冗余
本節(jié)使用的數(shù)據(jù)來(lái)自國(guó)家電網(wǎng)某省公司主站真實(shí)采集的符合 376.1 協(xié)議專變上行數(shù)據(jù)報(bào)文,共含有 10000 條數(shù)據(jù)報(bào)文。我們首先對(duì)所有數(shù)據(jù)報(bào)文的長(zhǎng)度做了統(tǒng)計(jì),如圖 4 所示。可見(jiàn)大量數(shù)據(jù)報(bào)文集中在[0, 50),[50, 100)和[250, 300)這三個(gè)長(zhǎng)度區(qū)間。
在得到整體報(bào)文長(zhǎng)度分布之后,使用 Huffman 算法對(duì)每一個(gè)長(zhǎng)度范圍內(nèi)的所有數(shù)據(jù)報(bào)文進(jìn)行壓縮并統(tǒng)計(jì)平均壓縮比例,得到的結(jié)果如表 5 所示。可以看到,Huffman 算法對(duì)于長(zhǎng)度范圍處在[450, 500)范圍內(nèi)的報(bào)文有著最好的壓縮效果,而對(duì)于長(zhǎng)度范圍為[0, 50)的數(shù)據(jù)并沒(méi)有起到壓縮效果,原因在于 Huffman 編碼需要在編碼的同時(shí)寫入字符的統(tǒng)計(jì)信息,對(duì)于長(zhǎng)度很短的報(bào)文來(lái)說(shuō),存儲(chǔ)字符統(tǒng)計(jì)信息所需要的存儲(chǔ)空間與原有報(bào)文所占用的存儲(chǔ)空間基本相同,這在很大程度上會(huì)影響 Huffman 編碼的效果。而除了[0, 50)長(zhǎng)度范圍內(nèi)的短報(bào)文,其他所有長(zhǎng)度范圍內(nèi)的報(bào)文都能被有效壓縮。
3.2 使用 LZ77 算法消除模式冗余
由于 LZ77 算法的緩沖區(qū)長(zhǎng)度對(duì)于壓縮效果有極大影響,因此文中就兩個(gè)窗口長(zhǎng)度對(duì)報(bào)文壓縮比例的影響進(jìn)行了探究。由于所使用的數(shù)據(jù)報(bào)文最長(zhǎng)的長(zhǎng)度沒(méi)有超過(guò) 500 個(gè)字節(jié)(1000 個(gè)字符),因此先將搜索緩沖區(qū)的長(zhǎng)度設(shè)定為最長(zhǎng)報(bào)文長(zhǎng)度的一半(500 個(gè)字符),改變前向緩沖區(qū)的長(zhǎng)度對(duì)每條報(bào)文進(jìn)行壓縮,得到各個(gè)長(zhǎng)度范圍內(nèi)數(shù)據(jù)報(bào)文的平均壓縮比例隨前向緩沖區(qū)長(zhǎng)度變化的曲線如圖 5 所示。
分別設(shè)置 10 種(10~100,步長(zhǎng)為 10)不同的前向緩沖區(qū)長(zhǎng)度進(jìn)行試驗(yàn),從實(shí)驗(yàn)結(jié)果可以明顯看出,除了長(zhǎng)度范圍在[0, 50)和[50, 100)的數(shù)據(jù)報(bào)文的壓縮比例呈現(xiàn)一個(gè)整體上升的趨勢(shì)之外,其他幾個(gè)長(zhǎng)度范圍的數(shù)據(jù)報(bào)文的最佳壓縮比例對(duì)應(yīng)的前向緩沖區(qū)長(zhǎng)度均為 30 個(gè)字符。為了驗(yàn)證前兩種長(zhǎng)度范圍的報(bào)文在前向緩沖區(qū)長(zhǎng)度為 10 個(gè)字符時(shí)是否已經(jīng)達(dá)到了最佳的壓縮比例,對(duì)這兩種長(zhǎng)度范圍的報(bào)文多增加了 5 種(2~10 步長(zhǎng)為 2)前向緩沖區(qū)的長(zhǎng)度并進(jìn)行實(shí)驗(yàn)。長(zhǎng)度范圍在[0, 50)的報(bào)文在前項(xiàng)緩沖區(qū)長(zhǎng)度達(dá)到 4 個(gè)字符的時(shí)候壓縮率最低,長(zhǎng)度范圍在[50, 100)的報(bào)文在長(zhǎng)度為 8 的時(shí)候壓縮率最低。由于 LZ77 算法的思想是使用三元組來(lái)表示源文件中重復(fù)出現(xiàn)的字符信息,存儲(chǔ)三元組同樣需要存儲(chǔ)空間,前向緩沖區(qū)的長(zhǎng)度越長(zhǎng),意味著三元組中用于存儲(chǔ)該長(zhǎng)度的二進(jìn)制表示位越多,維護(hù)字典的開銷也就越大。只有當(dāng)前向緩沖區(qū)長(zhǎng)度與文件中前后文能匹配到的最長(zhǎng)字符串長(zhǎng)度大致相同時(shí), LZ77 算法才能達(dá)到最佳的效率。
根據(jù)上述實(shí)驗(yàn)結(jié)果,將每個(gè)長(zhǎng)度范圍內(nèi)報(bào)文的前向緩沖區(qū)設(shè)置為對(duì)應(yīng)的最佳長(zhǎng)度,然后分析搜索緩沖區(qū)長(zhǎng)度對(duì)于數(shù)據(jù)報(bào)文壓縮比例的影響,得到的實(shí)驗(yàn)結(jié)果如圖 6 所示。
分別設(shè)置 20 種(0~100 步長(zhǎng)為 10 與 100~1000 步長(zhǎng)為 100)搜索緩沖區(qū)長(zhǎng)度。搜索緩沖區(qū)長(zhǎng)度代表著在多大的搜索空間中進(jìn)行查找與匹配,理論上搜索空間長(zhǎng)度越大,匹配到重復(fù)信息的可能性也越大,壓縮效果也越好,但是從實(shí)驗(yàn)結(jié)果來(lái)看,每個(gè)長(zhǎng)度范圍內(nèi)的數(shù)據(jù)報(bào)文都存在著最佳的搜索緩沖區(qū)長(zhǎng)度,是因?yàn)樵谠黾铀阉骶彌_區(qū)長(zhǎng)度的同時(shí)也增加了三元組存儲(chǔ)的成本,當(dāng)壓縮文件較小或者重復(fù)信息出現(xiàn)較為密集時(shí),一味增加搜索緩沖區(qū)的長(zhǎng)度并不能很好的提升壓縮效果,反而會(huì)增加三元組的存儲(chǔ)消耗。因此如何使用最小的搜索緩沖區(qū)長(zhǎng)度來(lái)達(dá)到最高的壓縮效率才是問(wèn)題的關(guān)鍵。從實(shí)驗(yàn)結(jié)果可以看到,當(dāng)前向緩沖區(qū)長(zhǎng)度和搜索緩沖區(qū)長(zhǎng)度均達(dá)到最優(yōu)時(shí),LZ77 算法對(duì)于任何一種長(zhǎng)度范圍的報(bào)文都可以達(dá)到壓縮的效果,各個(gè)長(zhǎng)度范圍的報(bào)文使用 LZ77 算法能達(dá)到的最優(yōu)壓縮效果與對(duì)應(yīng)的兩個(gè)緩沖區(qū)長(zhǎng)度如表 6 所示。
在得到每個(gè)長(zhǎng)度范圍內(nèi)的報(bào)文最佳壓縮比例之后,我們將 LZ77 算法與 Huffman 算法做了一個(gè)比較,結(jié)果如圖 7 所示。其中,圓標(biāo)線表示 Huffman 算法的壓縮結(jié)果,星標(biāo)線代表 LZ77 算法的壓縮結(jié)果,可以看到 LZ77 算法整體優(yōu)于 Huffman 編碼,而且對(duì)于較短的數(shù)據(jù)報(bào)文 LZ77 算法依舊可以起到壓縮效果。但在長(zhǎng)度范圍為[400,450)范圍內(nèi), Huffman 壓縮的效果要優(yōu)于 LZ77,通過(guò)進(jìn)一步分析,該范圍內(nèi)的報(bào)文中包含大量的連續(xù)字符‘0’,而且連續(xù)長(zhǎng)度遠(yuǎn)遠(yuǎn)超出了設(shè)定的前向緩沖區(qū)長(zhǎng)度 30 (最長(zhǎng)為 140 個(gè)字符),但是報(bào)文前后文中并沒(méi)有像其他報(bào)文一樣出現(xiàn)明顯重復(fù)的時(shí)間信息,重復(fù)信息分布過(guò)于集中,這種情況下 LZ77 算法相當(dāng)于只對(duì)報(bào)文中某一塊區(qū)域起到了壓縮效果,對(duì)其他區(qū)域卻起不到壓縮效果。而 Huffman 算法是基于報(bào)文內(nèi)部字符的統(tǒng)計(jì)信息進(jìn)行壓縮,并不注重報(bào)文的內(nèi)部結(jié)構(gòu),因此針對(duì)這種情況,Huffman 算法有著更好的壓縮效果。
3.3 用電信息采集遠(yuǎn)程通信報(bào)文組合壓縮探究
由于數(shù)據(jù)報(bào)文的三種冗余性之間是相互獨(dú)立的,單種算法無(wú)法同時(shí)消除所有的冗余,為了進(jìn)一步提升報(bào)文的壓縮效果,文中采用組合壓縮的方式對(duì)報(bào)文冗余性進(jìn)行全面消除。根據(jù)第三節(jié)的分析,報(bào)文預(yù)處理并不會(huì)對(duì)另外兩種冗余性產(chǎn)生影響,因此將其置于組合壓縮中的第一步,考慮到 Huffman 編碼會(huì)暫時(shí)破壞目標(biāo)文件的內(nèi)容與結(jié)構(gòu),如果先進(jìn)行 Huffman 編碼會(huì)使得報(bào)文的模式冗余得不到有效處理,因此本文在對(duì)報(bào)文預(yù)處理之后首先使用 LZ77 編碼再使用 Huffman 編碼來(lái)對(duì)報(bào)文進(jìn)行組合壓縮,組合壓縮流程如圖 8 所示。
實(shí)驗(yàn)所用的數(shù)據(jù)是來(lái)自于一個(gè)終端節(jié)點(diǎn)一天之內(nèi)上報(bào)的所有數(shù)據(jù)報(bào)文,通信協(xié)議是 698 協(xié)議,該數(shù)據(jù)集中統(tǒng)計(jì)了 2019 年 8 月 5 日某終端節(jié)點(diǎn)上報(bào)的 17641 條數(shù)據(jù)報(bào)文,文中對(duì)整個(gè)數(shù)據(jù)文件進(jìn)行壓縮處理并將各個(gè)階段的處理結(jié)果與壓縮結(jié)果進(jìn)行了統(tǒng)計(jì),結(jié)果如表 7 所示。
為了進(jìn)一步驗(yàn)證組合壓縮順序?qū)嚎s結(jié)果的影響,本文交換了 LZ77 編碼與 Huffman 編碼順序后從新測(cè)試,各個(gè)階段的處理結(jié)果與壓縮結(jié)果如表 8 所示。可以看到交換編碼順序后的壓縮結(jié)果遠(yuǎn)遠(yuǎn)比不上交換之前的結(jié)果。
4 結(jié)束語(yǔ)
智能電網(wǎng)需要以大量用戶用電數(shù)據(jù)分析為基礎(chǔ),隨著采集終端的泛在化及采集頻率的提高,各終端上報(bào)的數(shù)據(jù)量將大大增加,對(duì)數(shù)據(jù)傳輸與存儲(chǔ)造成嚴(yán)重負(fù)擔(dān)。通過(guò)壓縮算法來(lái)降低數(shù)據(jù)報(bào)文的數(shù)據(jù)量,提高網(wǎng)絡(luò)傳輸效率是電力行業(yè)一個(gè)亟待解決的問(wèn)題。文中通過(guò)對(duì)用采系統(tǒng)遠(yuǎn)程通信報(bào)文的分析,從報(bào)文的幀間冗余、模式冗余以及編碼冗余三個(gè)方面討論了數(shù)據(jù)報(bào)文可以被壓縮的現(xiàn)實(shí)基礎(chǔ),并有針對(duì)性的使用三種方法來(lái)消除三種冗余。結(jié)果表明, Huffman 算法可以有效消除編碼冗余,但是其在數(shù)據(jù)報(bào)文較短(<50B)的情況下起不到壓縮效果; LZ77 算法可以有效的消除模式冗余,當(dāng)報(bào)文中含有大量重復(fù)上報(bào)的信息時(shí),LZ77 算法相較于 Huffman 算法可以達(dá)到更好的壓縮效果。文中同時(shí)對(duì) LZ77 算法中兩種緩沖區(qū)的長(zhǎng)度對(duì)于報(bào)文壓縮比例的影響做了相應(yīng)探究,找到了每個(gè)長(zhǎng)度范圍內(nèi)報(bào)文的最佳壓縮參數(shù)。由于單種算法無(wú)法同時(shí)消除報(bào)文的三種冗余,因此通過(guò)對(duì)三種冗余各自的特性及相互之間的關(guān)系分析,設(shè)計(jì)了具有時(shí)間順序的組合式壓縮方法,得到了更好的壓縮結(jié)果。通過(guò)對(duì)數(shù)據(jù)報(bào)文的壓縮可以極大的縮短報(bào)文的傳輸時(shí)間,提高傳輸效率,降低存儲(chǔ)資源消耗,在為用電企業(yè)降低成本的同時(shí),為智能電網(wǎng)的多種應(yīng)用提供有力的保障。——論文作者:鄭國(guó)權(quán) 1,竇健 1,盧繼哲 1,郄爽 1,葉方彬 2,胡浩星 3
參 考 文 獻(xiàn)
[1] 郭志華, 王作政, 厲娜, 等. 多種通信方式在青海電網(wǎng)用電信息采集系統(tǒng)中的應(yīng)用與實(shí)踐[J]. 青海電力, 2016, 35(4): 14-17. Guo Zhihua, Wang Zuozheng, LI Na, et al. Application and practice of various communication modes in electricity information acquisition system of Qinghai electric power network[J]. Qinghai Electric Power, 2016, 35(4): 14-17.
[2] 王健. 探討數(shù)據(jù)壓縮在用電信息采集遠(yuǎn)程通信中的應(yīng)用[J]. 通訊世界, 2017, 0(13): 181-182. Wang Jian. Exploring the application of data compression in remote communication of electricity information collection[J]. Telecom Worldm, 2017, 0(13): 181-182.
[3] 馬士強(qiáng), 鄭常寶, 曾野, 等. 基于信號(hào)周期相似性和 LZW 編碼的數(shù)據(jù)壓縮方法[J]. 電測(cè)與儀表, 2014, 51(06): 95-100. Ma Shiqiang, Zheng Changbao, Zeng Ye. et al. Data Compression Based on Signal Periodic Similarity and LZW Encoding[J]. Electrical Measurement & Instrumentation, 2014, 51(06): 95-100.
[4] 于華楠, 代芳琳, 鄒瀟. 三相電能質(zhì)量擾動(dòng)信號(hào)壓縮方法研究[J]. 電測(cè)與儀表, 2014, 51(23): 60-63. Yu Huanan, Dai Fanglin, Zou Xiao. Research on Three-Phase Power Quality Disturbance Signal Compression Method[J]. Electrical Measurement & Instrumentation, 2014, 51(23): 60-63.
[5] 鄢海舟, 胥布工, 李海濱, 等. 小波去噪與壓縮在電廠設(shè)備中的應(yīng)用[J]. 電測(cè)與儀表, 2017, 54(11): 110-115. Yan Haizhou, Xu Bugong, Li Haibin, et al. Application of wavelet denoising and compression in the equipment of power plant[J]. Electrical Measurement & Instrumentation, 2017, 54(11): 110-115.
[6] 許曉飛, 陳亮. 應(yīng)用整數(shù)小波變換的 LZ77 電力數(shù)據(jù)壓縮算法[J]. 西北紡織學(xué)院學(xué)報(bào), 2018, 32(3): 337-342. Xu Xiaofei, Cheng Liang. LZ77 power data compression algorithm based on integer wavelet transform[J]. Journal of Xi’an Polytechnic University, 2018, 32(3): 337-342.