馬國(guó)強(qiáng),楊紅培,韓建定,慕宗君,方 偉
(1.許繼電氣股份有限公司 河南 許昌 461000;2.許昌電氣職業(yè)學(xué)院 河南 許昌461000;3.空軍工程大學(xué)航空航天工程學(xué)院,陜西 西安710038)
Zlib庫(kù)在基于Nucleus系統(tǒng)的新型智能遠(yuǎn)動(dòng)裝置中的應(yīng)用
馬國(guó)強(qiáng)1,3,楊紅培2,韓建定3,慕宗君1,方 偉1
(1.許繼電氣股份有限公司 河南 許昌 461000;2.許昌電氣職業(yè)學(xué)院 河南 許昌461000;3.空軍工程大學(xué)航空航天工程學(xué)院,陜西 西安710038)
針對(duì)基于PowerPC架構(gòu)和嵌入式Nucleus系統(tǒng)的智能遠(yuǎn)動(dòng)裝置特點(diǎn)和要求,通過對(duì)Zlib函式庫(kù)的移植和改進(jìn),實(shí)現(xiàn)了對(duì)多文件、多目錄的無損壓縮和解壓縮軟件。以變電站智能遠(yuǎn)動(dòng)裝置的配置文件為數(shù)據(jù)樣本進(jìn)行驗(yàn)證,實(shí)驗(yàn)結(jié)果表明,該軟件能夠很好地完成對(duì)數(shù)據(jù)的無損壓縮和解壓縮,為嵌入式系統(tǒng)應(yīng)用節(jié)省了寶貴的硬件和網(wǎng)絡(luò)資源。
Zlib;嵌入式Nucleus系統(tǒng);PowerPC架構(gòu);智能遠(yuǎn)動(dòng)裝置;DEFLATE算法
智能遠(yuǎn)動(dòng)裝置作為智能變電站與調(diào)控中心交互數(shù)據(jù)的中樞,要求集常規(guī)遠(yuǎn)動(dòng)、保信、計(jì)量、狀態(tài)監(jiān)測(cè)和PMU五大功能于一體,這就對(duì)處理器和操作系統(tǒng)提出了很高的要求。PowerPC處理器具有優(yōu)異的性能、較低的能量損耗以及較低的散熱量,且嵌入式表現(xiàn)非常突出。Nucleus是為實(shí)時(shí)嵌入式應(yīng)用設(shè)計(jì)的一個(gè)搶先式多任務(wù)操作系統(tǒng),能夠支持包括PowerPC處理器在內(nèi)的大多數(shù)類型的處理器。選擇PowerPC+Nucleus作為智能遠(yuǎn)動(dòng)裝置的平臺(tái)架構(gòu)能夠很好的滿足應(yīng)用需求[1-4]。
對(duì)于嵌入式應(yīng)用來說,各種軟硬件資源都非常緊張,智能變電站龐大的數(shù)據(jù)量對(duì)于存儲(chǔ)設(shè)備容量和網(wǎng)絡(luò)傳輸速度都有很高要求,為了節(jié)省存儲(chǔ)空間和減少網(wǎng)絡(luò)傳輸時(shí)間,應(yīng)用中需要對(duì)大數(shù)據(jù)進(jìn)行壓縮后再進(jìn)行存儲(chǔ)和傳輸。況且,在智能遠(yuǎn)動(dòng)裝置中實(shí)現(xiàn)的部分高級(jí)功能,如源端維護(hù)、遠(yuǎn)程瀏覽等,主站端明確要求要以壓縮文件的格式傳輸SCD、CIM以及SVG等文件,這就要求智能遠(yuǎn)動(dòng)裝置必須能夠以一種通用的格式對(duì)文件進(jìn)行壓縮和解壓縮。為了滿足PowerPC+Nucleus平臺(tái)上文件壓縮和解壓縮的需要,選擇通用的ZIP格式作為壓縮文件格式,基于移植并改進(jìn)的Zlib函式庫(kù),開發(fā)了適合于智能遠(yuǎn)動(dòng)裝置的文件壓縮和解壓縮軟件[5-8]。
ZIP格式文件由壓縮文件信息、壓縮目錄信息和目錄結(jié)束標(biāo)記信息三部分組成[9-11]。
1.1 壓縮文件
壓縮文件信息包含壓縮的所有文件的內(nèi)容,其每個(gè)文件的數(shù)據(jù)組織結(jié)構(gòu)由文件頭、文件數(shù)據(jù)區(qū)和數(shù)據(jù)描述三部分組成。文件頭信息包括文件頭標(biāo)識(shí)符(固定為0x504b0304)、解壓文件所需版本、通用位標(biāo)記、壓縮方法、文件最后修改時(shí)間、文件最后修改日期、CRC-32位校驗(yàn)、壓縮后大小、壓縮前大小、文件名長(zhǎng)度、擴(kuò)展區(qū)長(zhǎng)度、文件名和擴(kuò)展區(qū)。文件數(shù)據(jù)區(qū)存儲(chǔ)壓縮文件數(shù)據(jù)。數(shù)據(jù)描述信息包括本地文件頭標(biāo)識(shí)符(固定為0x504b0708)、CRC-32位校驗(yàn)、壓縮后大小、壓縮前大小,用于標(biāo)識(shí)文件壓縮結(jié)束,緊跟在壓縮文件數(shù)據(jù)后。只有當(dāng)文件頭的通用位標(biāo)記字段的第3位為1時(shí),壓縮文件中才存在有數(shù)據(jù)描述信息,數(shù)據(jù)描述信息只用在不能對(duì)生成的ZIP文件進(jìn)行檢索時(shí)使用,如存儲(chǔ)在磁帶機(jī)上的ZIP文件。
1.2 壓縮目錄
壓縮目錄是壓縮源文件數(shù)據(jù)區(qū)中的一條數(shù)據(jù)在目錄區(qū)的一條記錄。對(duì)于待壓縮的目錄而言,每一個(gè)子目錄對(duì)應(yīng)一個(gè)壓縮目錄,記錄該目錄的描述信息。壓縮包中所有目錄連續(xù)存儲(chǔ)在整個(gè)歸檔包的最后,這樣便于向包中追加新的文件。壓縮目錄信息包括目錄頭標(biāo)識(shí)符 (固定為0x504b0102)、壓縮所用版本、解壓文件所需版本、通用位標(biāo)記、壓縮方法、文件最后修改時(shí)間、文件最后修改日期、CRC-32位校驗(yàn)、壓縮后大小、壓縮前大小、文件名長(zhǎng)度、擴(kuò)展區(qū)長(zhǎng)度、文件注釋長(zhǎng)度、文件開始位置的磁盤編號(hào)、內(nèi)部文件屬性、外部文件屬性、本地文件頭相對(duì)位移、目錄文件名、擴(kuò)展區(qū)和文件注釋。
1.3 目錄結(jié)束標(biāo)志
目錄結(jié)束標(biāo)記用于標(biāo)識(shí)壓縮的目錄數(shù)據(jù)的結(jié)束,位于整個(gè)ZIP文件的結(jié)尾。它包括目錄結(jié)束標(biāo)記標(biāo)識(shí)符(固定為0x504b0506)、當(dāng)前磁盤號(hào)、目錄開始位置磁盤號(hào)、本磁盤目錄總數(shù)、目錄總數(shù)、目錄大小、目錄對(duì)1號(hào)磁盤的偏移量、ZIP文件注釋長(zhǎng)度和注釋。
Zlib函式庫(kù)是一款自由軟件,使用Zlib授權(quán)。它使用了一個(gè)LZ77的變種算法即DEFLATE算法,實(shí)現(xiàn)了用于數(shù)據(jù)無損壓縮的函式庫(kù)。目前,Zlib是一種事實(shí)上的業(yè)界標(biāo)準(zhǔn),常用的大部分解壓縮軟件都用到了它。 Zlib 函式庫(kù)支持 Windows、Linux、Solaris、MAC OS等多種操作系統(tǒng)版本,可以直接獲取相應(yīng)操作系統(tǒng)的Zlib源代碼或動(dòng)態(tài)庫(kù)。由于Nucleus操作系統(tǒng)不在Zlib函式庫(kù)官方支持范圍之內(nèi),因此要想在Nucleus操作系統(tǒng)上使用Zlib函式庫(kù)就必須對(duì)它進(jìn)行移植。由于Zlib函式庫(kù)是用純c語言實(shí)現(xiàn)的,非常便于移植,而NucleusPLUS操作系統(tǒng)內(nèi)核是一組c函數(shù)庫(kù),其95%的代碼是用ANSIC寫成的,所以兩者具有良好的兼容性[12-13]。
為了更好地支持嵌入式Nucleus操作系統(tǒng)在PowerPC架構(gòu)上對(duì)文件解壓縮的要求,在對(duì)Zlib函式庫(kù)的移植改進(jìn)過程中做了以下3方面的工作:
1)標(biāo)準(zhǔn)Zlib函式庫(kù)通過文件描述符fd實(shí)現(xiàn)了對(duì)文件的操作,這種文件操作方法使用傳統(tǒng)的低級(jí)IO方式直接對(duì)磁盤進(jìn)行訪問操作,造成文件讀寫速度慢、訪問效率低。電力系統(tǒng)智能遠(yuǎn)動(dòng)裝置對(duì)實(shí)時(shí)性的要求很高,特別是PMU功能更是要達(dá)到ms級(jí)別,如果解壓縮功能影響到了整個(gè)系統(tǒng)性能,則是系統(tǒng)所不能接受的。針對(duì)此問題,對(duì)標(biāo)準(zhǔn)Zlib函式庫(kù)進(jìn)行改進(jìn),采用文件指針fp代替文件描述符fd對(duì)文件進(jìn)行訪問操作,文件指針結(jié)構(gòu)中包含了IO緩沖,使用高級(jí)IO方式而非低級(jí)IO方式操作文件,能夠大大提高文件數(shù)據(jù)的讀寫效率,進(jìn)而提高Zlib函式庫(kù)的解壓縮性能。
2)在數(shù)據(jù)壓縮/解壓過程中,首先把待壓縮/解壓的文件、目錄的原始數(shù)據(jù)通過動(dòng)態(tài)開辟內(nèi)存空間放入無類型指針鏈表中,這樣能夠加快壓縮/解壓速度,提高壓縮/解壓性能。
3)由于不同的CPU架構(gòu)存在著字節(jié)序大小端的區(qū)別,目前市場(chǎng)上大部分CPU為小端字節(jié)序,而PowerPC為大端字節(jié)序。在PowerPC架構(gòu)下數(shù)據(jù)壓縮過程中,凡是牽涉到整型、浮點(diǎn)型等多字節(jié)類型數(shù)據(jù)在寫入歸檔時(shí),為了使歸檔能夠被所有的解壓縮工具解壓,必須把這些多字節(jié)數(shù)據(jù)的大端字節(jié)序轉(zhuǎn)換為小端字節(jié)序存入歸檔;在PowerPC架構(gòu)下數(shù)據(jù)解壓過程中,在讀取歸檔數(shù)據(jù)時(shí),凡是牽涉到整型、浮點(diǎn)型等多字節(jié)類型數(shù)據(jù),必須把這些多字節(jié)數(shù)據(jù)的小端字節(jié)序轉(zhuǎn)換為大端字節(jié)序,以便能夠正確解壓歸檔。
利用改進(jìn)的Zlib函式庫(kù)實(shí)現(xiàn)基于PowerPC架構(gòu)的嵌入式Nucleus系統(tǒng)上文件的壓縮,首先需要?jiǎng)?chuàng)建歸檔并初始化其在壓縮過程中所用到的參數(shù),然后向歸檔中添加需要壓縮的文件、目錄或者從歸檔中刪除不需要壓縮進(jìn)歸檔的文件、目錄,最后關(guān)閉歸檔完成壓縮[14-15]。
3.1 ZIP歸檔初始化
歸檔初始化主要涉及打開已存在歸檔或創(chuàng)建新歸檔時(shí),對(duì)歸檔參數(shù)、文件臨時(shí)存儲(chǔ)區(qū)、中心目錄、回調(diào)指針的初始化以及對(duì)字節(jié)大小端的處理。歸檔初始化的基本流程如圖1所示。
圖1 歸檔初始化工作流程
3.2 向ZIP歸檔添加文件
向歸檔添加文件是把待壓縮的磁盤文件的屬性信息及數(shù)據(jù)載入臨時(shí)文件緩沖區(qū),其主要涉及對(duì)要添加的文件頭的初始化、不同的操作系統(tǒng)文件路徑表示方法不一樣對(duì)其進(jìn)行統(tǒng)一格式化、把待添加的文件載入臨時(shí)文件緩沖區(qū)、把文件屬性信息寫入文件頭結(jié)構(gòu)中。向歸檔添加文件的基本流程如圖2所示。
圖2 向歸檔添加文件工作流程
3.3 向ZIP歸檔添加目錄
向歸檔添加文件目錄主要涉及初始化文件目錄列表、獲取指定目錄下的文件列表、判斷文件列表元素類型進(jìn)行相應(yīng)處理。如果文件列表元素為文件類型,那么就以向歸檔中添加文件的操作步驟處理,否則就把文件列表元素添加到文件目錄列表中,再以向歸檔中添加目錄的操作步驟進(jìn)行處理,直到所有的文件和目錄都添加到歸檔中為止。向歸檔添加文件目錄的基本流程如圖3所示。
圖3 向歸檔添加目錄工作流程
3.4 從ZIP歸檔中刪除文件
歸檔中包含的文件和目錄都以獨(dú)立的方式存在,每個(gè)文件或目錄都有唯一的索引,在歸檔中進(jìn)行文件或目錄的檢索就是通過索引進(jìn)行的。從歸檔中刪除文件主要涉及判斷要?jiǎng)h除的文件的索引是否有效、初始化臨時(shí)信息結(jié)構(gòu)、從磁盤上即歸檔中刪除指定索引的文件、刪除臨時(shí)內(nèi)存信息并釋放內(nèi)存。從歸檔中刪除文件的基本流程如圖4所示。
圖4 從歸檔中刪除文件工作流程
3.5 ZIP歸檔關(guān)閉
關(guān)閉歸檔是文件壓縮的關(guān)鍵步驟,前述歸檔創(chuàng)建、文件或目錄添加等只是為壓縮文件做準(zhǔn)備,真正的文件壓縮操作是在關(guān)閉歸檔時(shí)才完成的。歸檔關(guān)閉操作主要涉及判斷歸檔是否關(guān)閉、是否拋出異常、文件是否為壓縮模式、調(diào)用Zlib函式庫(kù)的數(shù)據(jù)壓縮接口壓縮數(shù)據(jù)并把壓縮后的數(shù)據(jù)寫入歸檔文件、向中心目錄寫入目錄數(shù)據(jù)以及釋放臨時(shí)內(nèi)存資源。歸檔關(guān)閉操作的基本流程如圖5所示。
圖5 關(guān)閉歸檔工作流程
歸檔的解壓縮主要涉及解壓縮環(huán)境的初始化包括各種參數(shù)、文件存儲(chǔ)、目錄中心以及回調(diào)等,獲取待解壓縮的歸檔中包含的文件條目數(shù),對(duì)歸檔中的文件進(jìn)行逐個(gè)解壓以及解壓后對(duì)環(huán)境進(jìn)行反初始化。歸檔解壓縮的基本流程如圖6所示。
圖6 文件解壓工作流程
在智能遠(yuǎn)動(dòng)裝置中,配置文件CFG、模型文件SCD、模型文件CIM、圖形文件SVG及動(dòng)態(tài)數(shù)據(jù)文件DYN等幾類文件需要壓縮后進(jìn)行存儲(chǔ)或傳輸,下面就以這幾類文件為例來驗(yàn)證本文提出的壓縮方法的實(shí)現(xiàn)情況,并給出驗(yàn)證結(jié)果如表1所示。
表1 驗(yàn)證結(jié)果
驗(yàn)證結(jié)果表明,本壓縮方法對(duì)不同類型的數(shù)據(jù)樣本壓縮率和壓縮速率存在著一定的差別,主要由于不同樣本文件的數(shù)量和單個(gè)文件長(zhǎng)度存在較大的差異。在單個(gè)文件長(zhǎng)度越大的情況下壓縮效果就會(huì)越好,反之,在文件數(shù)量多且文件長(zhǎng)度小的情況下壓縮效果就會(huì)差一些。
文中針對(duì)PowerPC+Nucleus平臺(tái)架構(gòu)的特點(diǎn)和要求,對(duì)Zlib函式庫(kù)進(jìn)行代碼移植和功能改進(jìn),提出了基于移植改進(jìn)后的Zlib函式庫(kù)的數(shù)據(jù)壓縮方法,實(shí)現(xiàn)了在新型智能遠(yuǎn)動(dòng)機(jī)中對(duì)文件和目錄的壓縮、解壓縮以及從ZIP歸檔中刪除文件和析取文件列表等功能。本方法實(shí)現(xiàn)了對(duì)數(shù)據(jù)的無損壓縮,并具有良好的壓縮效果和壓縮速率,在新型智能遠(yuǎn)動(dòng)裝置中得到了應(yīng)用驗(yàn)證,很好的解決了嵌入式應(yīng)用中存儲(chǔ)資源緊張和網(wǎng)絡(luò)傳輸慢的問題。
由于新型智能遠(yuǎn)動(dòng)裝置為嵌入式應(yīng)用,不具備人機(jī)交互界面,因此只實(shí)現(xiàn)了文件壓縮、解壓縮、刪除等功能的函數(shù)接口,沒有實(shí)現(xiàn)這些功能的界面操作,如果以后有這方面的需要可以加入界面實(shí)現(xiàn)。
[1]李瑞生,李燕斌,周逢權(quán).智能變電站功能架構(gòu)及設(shè)計(jì)原則[J].電力系統(tǒng)保護(hù)與控制,2010,38(21):24-27.
[2]李孟超,王允平,李獻(xiàn)偉,等.智能變電站及技術(shù)特點(diǎn)分析[J].電力系統(tǒng)保護(hù)與控制,2010,38(18):59-62.
[3]周華鋒,李鵬,吳小辰.二次一體化框架下智能遠(yuǎn)動(dòng)機(jī)建設(shè)初步方案[J].南方電網(wǎng)技術(shù),2012,6(3):69-72.
[4]汪際峰.一體化電網(wǎng)運(yùn)行智能系統(tǒng)的概念及特征[J].電力系統(tǒng)自動(dòng)化,2011,35(24):1-6.
[5]牟璇,王俊峰,王敏,等.TCP自適應(yīng)壓縮傳輸方安研究[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(11):279-282.
[6]篤竣,祁忠.基于IEC61850的變電站新型遠(yuǎn)動(dòng)網(wǎng)關(guān)機(jī)[J].電力自動(dòng)化設(shè)備,2011,31(2):116-121.
[7]侯貿(mào)軍.變電站智能診斷和維護(hù)系統(tǒng)體系結(jié)構(gòu)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(10):3964-3969.
[8]李偉,趙建軍,王超,等.基于xc2vp30的嵌入式系統(tǒng)設(shè)計(jì)和SystemACE分析[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(8):237-240.
[9]蔡長(zhǎng)安,鐘銳,王盈瑛.串行通信轉(zhuǎn)網(wǎng)絡(luò)通信數(shù)據(jù)模塊的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(1):88-91.
[10]陳鈞,劉愛華.基于Zlib的圖像差異壓縮算法研究與實(shí)現(xiàn)[J].東華理工大學(xué)學(xué)報(bào):自然科學(xué)版,2010,33(1):92-96.
[11]許彪,王曉東.基于文件格式的J2ME圖片壓縮方法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(4):253-256.
[12]周桂宇,馬憲民,李衛(wèi)斌.改進(jìn)的混合壓縮算法在GPS數(shù)據(jù)壓縮中的應(yīng)用 [J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(12):167-169.
[13]劉麗偉,鄧春?。辔募嚎s傳輸及解壓縮的方法[J].武漢理工大學(xué)學(xué)報(bào)(交通科學(xué)與工程版),2009,33(6):1211-1214.
[14]王剛,劉立柱.ZIP文件壓縮編碼分析[J].微計(jì)算機(jī)信息.2006,22(15):283-285.
[15]謝小勇,吳瑞卿,陳偉,等.基于Zlib和DSP的傳感器數(shù)據(jù)壓縮方法的研究[J].電子技術(shù)應(yīng)用,2012,38(11):41-43,47.
Zlib library based on the nucleus system the application of new RTU
MA Guo-qiang1,3,YANG Hong-pei2,HAN Jian-ding3,MU Zong-jun1,F(xiàn)ANG Wei1
(1.XJ Electric Co.,Ltd.,Xuchang 461000,China; 2.Xuchang Electrical Vocational College,Xuchang 461000,China; 3.Aeronautics and Astronautics Engineering Institue,Air Force Engineering University,Xi'an 710038,China)
Based on the PowerPC architecture and embedded Nucleus system of RTU characteristics and requirements,through to the Zlib library of transplantation and to improve,achieved to file and directory of lossless compression and decompression software.In substation the smart RTU configuration file for the data samples to verify,the experimental results show that the software can be very good to complete the data of lossless compression and decompression,for embedded system application saves valuable hardware and network resources.
Zlib;embedded nucleus system;PowerPC architecture;RTU;DEFLATE algorith
TN919
:A
:1674-6236(2017)14-0047-04
2016-06-20稿件編號(hào):201606142
馬國(guó)強(qiáng)(1978—),男,河南長(zhǎng)葛人,工程師。研究方向:電力系統(tǒng)自動(dòng)化產(chǎn)品及JAVA報(bào)表系統(tǒng)平臺(tái)研發(fā)。