蔣世挺,陳思有,胡 建
(浙江華云信息科技有限公司,杭州 310012)
隨著科技的發展,電力系統中智能設備的應用也變得越來越多,特別是在電力自動化控制和數據采集通信方面.遠方電能量數據終端[1,2]是電力市場技術支持系統電量計量模塊中的廠站端部分.具有對電能量(電能累計量)采集、數據處理、分時存貯、長時間保存、遠方傳輸等功能的設備.它與電能量計費主站構成電能量計費系統運用于各級調度結算中心對遠方電量信息的采集和處理.作為系統中數據采集和上送的關鍵一環,其硬件平臺性能也得到了很大的提升,普遍采用基于嵌入式的Linux 操作系統[3,4],其在變電站和電廠的運行數量也變得越來越多.在運行維護的過程中,因為每個變電站和電廠的運行環境不同,導致每個設備運行的參數配置文件[2]也是各種各樣,而一旦裝置發生故障,后臺維護工具無法連接上運行設備,就需要更換主板或重新升級初始化程序,這時候就需要重新配置系統運行參數文件,一般情況下,要么是工程人員從頭開始重新配置,要么就是聯系以前配置的人員或向公司詢問是否有這個廠站的配置文件備份.無論是哪種方法,都會浪費許多時間,也不能保證其他人手上的備份文件就一定是最新的參數配置文件,從而導致二次調試的工作量發生,提高了運維成本.
本文介紹了在遠方電能量數據終端中利用Linux系統下的腳本程序和外接存儲器,如何簡單快捷的實現終端配置文件自動備份與還原的方法,此技術方案的實施可以節省現場工程運維工作量,提升整個工程應用的管理水平.
遠方電能量數據終端采用Linux 操作系統,同時硬件上設計外接存儲器接口,裝置運行時插上外接存儲器,無論裝置是初始化參數配置還是運行時修改參數配置,系統都會把有變動的配置文件自動備份到外接存儲器上,如果終端在運行過程中發生故障,后續的故障恢復更換終端時,只要把故障終端的外部存儲器拔下,替換到新的終端上,新終端就可以自動運行,不需要重新配置運行參數.
上述過程的實現,除了遠方電能量數據終端采用Linux 操作系統和外接存儲器外,配置文件的備份和還原還需要編寫相應的功能軟件來處理,為了功能軟件簡單便捷,這個配置文件的備份和還原過程可以采用腳本程序[5]來完成.因為腳本程序無需編譯,就可以在Linux 系統下運行,所以腳本程序后期的編輯修改和部署都非常容易.工程運維人員可以在研發人員的指導下,用文本編譯器就能完成腳本程序的修改和功能擴充.
功能軟件總體上可以考慮用腳本語言編寫兩個腳本文件,分別命名為“腳本一”和“腳本二”,“腳本一”解決系統啟動后,是否根據策略把外接存儲器里的備份文件同步到配置文件目錄的問題,“腳本二”解決系統運行過程中配置參數改變后,是否把最新配置文件重新備份到外部存儲器的問題.然后在系統啟動項里添加執行兩個腳本的命令,這樣等系統啟動后就自動實現了遠方電能量數據終端與外接存儲器之間配置文件的自動更新以及重備份,保證了系統運行和后期運維過程中運行參數的持續一致性.
從總體思路可以看出,遠方電能量數據終端上要實現配置文件的自動備份和還原功能,主要有3 部分工作,一是終端硬件平臺的選擇,需要能方便的支持外部存儲器的擴展設計.二是為終端定制合適的Linux操作系統.三是設計編寫腳本程序.
近年來,隨著國家電網“三型兩網”戰略的提出,電力系統中很多數據感知層和傳輸層的智能終端性能都有了很好的提升,ARM 芯片因為高性能、低功耗的優點,已經被廣泛應用于電力系統的各類終端平臺上.
ARM-Cortex-A9[5]處理器能與其他Cortex 系列處理器技術兼容,因此能夠很好延用包括操作系統/實時操作系統(OS/RTOS)、中間件及應用在內的豐富生態系統,從而減少采用全新處理器所需的成本.通過首次利用關鍵微體系架構方面的改進,Cortex-A9 處理器提供了具有高擴展性和高功耗效率的解決方案.本文實例遠方電能量數據終端就是采用基于Cortex-A9 簡單雙核的飛思卡爾處理器作為硬件平臺的核心.
SD[5]卡是一種基于半導體快閃記憶器的新一代記憶設備,由于它體積小、數據傳輸速度快、可熱插拔等優良的特性,被廣泛地應用于便攜式設備.因為基于ARM-Cortex-A9 芯片硬件平臺能很好的支持SD 卡擴展,所以遠方電能量數據終端的外接存儲器就采用SD卡來實現.
遠方電能量數據終端的硬件除了上述的核心板和外接存儲器外,當然還有包括電源、存儲、顯示、通信等其它模塊,因為本文主要是介紹智能終端配置文件的自動備份和還原方法,所以遠方電能量數據終端其它硬件組成不作詳述.
適用于嵌入式終端平臺的Linux 操作系統可以根據終端硬件平臺的特性進行適當的裁剪修改,使之能在嵌入式計算機系統下穩定運行.其特點是版權免費,而且性能優異,軟件移植容易,有許多公開的代碼可以參考和移植,實時性能穩定、安全性好.
如圖1所示,Linux 操作系統要能在硬件平臺上順利啟動運行,主要做到以下兩點工作,一是需要制作UBoot 引導程序,二是需要定制Kernel (內核)、文件系統.做到這兩點后,操作系統才能夠正常啟動,應用程序和服務才能在操作系統上順利運行.

圖1 Linux 操作系統架構圖
一般采用飛思卡爾芯片的核心板[6],核心板廠家會提供u-boot zImage rootfs 三個已經制作好的文件,只要按要求把幾個文件燒寫到核心板上,Linux 操作系統就能夠順利啟動.如果需要自己動手來制作這幾個文件,也可以到飛思卡爾的官網上下載符合自己開發板的相關源碼,然后在PC 機上的Linux 開發環境下利用ARM 的交叉編譯器編譯生成,當然實際開發中還會有一些根據自己板卡特點修改源碼配置的工作,都可以參考飛思卡爾官方手冊.
本文實例遠方電能量數據終端,其采用的Linux操作系統的內核版本為Kernel3.14.18,系統主分區文件系統類型為EXT4,外接存儲器SD 卡因為可插拔特性,為了和PC 機交互方便,分區文件系統類型采用FAT32.在嵌入式Linux 系統內核中因為已經選擇了對SD 卡支持的相關驅動,所以系統啟動后就能自動識別到SD 卡.
要讓應用程序可以對SD 卡進行讀寫操作,接下來還需要掛載SD 卡.通過調試終端用ls 命令帶上參數(/dev)查看文件系統設備目錄,就能看到SD 卡的設備文件名為mmcblk2p1,如何無法確認這個文件名就是SD 卡,也可以用分區表查看命令fdisk 帶上參數(-l)查看分區表信息,我們得到結果如圖2所示.也再次印證了SD 卡的文件名為mmcblk2p1.然后在文件系統里用mkdir 命令創建一個備份文件目錄/mnt/dst,再在系統啟動腳本/etc/rc.local 里添加mount 命令帶參數(-t vfat /dev/mmcblk2p1 /mnt/dst)把SD 卡掛載到備份文件目錄,這樣每次系統啟動就會自動掛載SD 卡到備份文件目錄了,應用程序也就可以對SD 卡進行讀寫操作.

圖2 SD 卡分區信息
因為遠方電能量數據終端采用了Linux 操作系統,終端中配置文件自動備份和還原的軟件功能,可以選用Shell 命令腳本程序來實現[7,8].Shell是一門編程語言,即Shell 腳本,Shell是解釋執行的腳本語言,可直接調用Linux 命令.選用Shell 來實現腳本程序,是因為有以下幾個優點:
(1) Shell 的語法和結構比較簡單,易于掌握;
(2) 學習和使用也比較方便,上手比較容易;
(3) 常用命令也比較好記,不清楚的情況下,可以通過在Linux 系統下man 命令迅速找到相關的說明;
(4) Shell是解釋型語言,運行之前不需要編譯.
在Shell 腳本程序的設計過程中,判斷文件之間是否相同,會用到MD5 碼,MD5 碼是一種被廣泛使用的密碼散列函數產生出來的一個128 位的散列值,用于確保信息傳輸完整一致.Linux 系統里有特有的命令md5sum 來計算每個文件的MD5 碼,文件內容不同所產生的MD5 碼就不同.
明確了腳本程序的開發語言和所要用到的關鍵技術后,接下來就可以設計兩個腳本程序的實現流程,如圖3所示,“腳本一”啟動后會先檢測SD 卡內是否有備份配置文件,如果沒有,就直接結束程序.如果有備份配置文件,就判斷這個備份配置文件與應用程序配置文件的MD5 碼是否相同,如果不相同,則將SD 內的備份配置文件拷貝到應用程序配置文件目錄進行更新替換,如果相同,就不作處理.

圖3 兩個腳本程序的實現流程
同樣,“腳本二”啟動后也會先檢測SD 內是否有備份配置文件,如果沒有,就會拷貝終端的配置文件到SD 卡備份,然后檢測終端的應用程序是否退出來判斷結束自身運行還是再循環.另外,如果檢測到SD 卡里有備份文件,就判斷這個備份配置文件與應用程序配置文件的MD5 碼是否相同,如果不相同,就將應用程序的配置文件拷貝到外接存儲設備內進行備份更新,如果相同,就檢測終端的應用程序是否退出來判斷結束自身運行還是再循環.
明確了腳本程序的流程,最后就是腳本程度的具體實現,“腳本一”主要功能是把外接存儲器里的備份文件同步到配置文件目錄,其代碼如下:


“腳本二”主要功能是把最新配置文件重新備份到外部存儲器,其代碼如下:



在Linux 操作系統下,借助外部存儲器來實現遠方電能量數據終端配置文件的自動備份和還原,是一種提高設備運維效率的可行辦法,特別是采用Shell 命令腳本程序,無需編譯器編譯就可以在Linux 操作系統下運行,為后期腳本程序的部署和推廣都打下了很好的基礎.目前應用了此項技術的遠方電能量數據終端已經在浙江和華東地區的廠站內試點運行,在工程實施和調試階段都取得了良好的效果,隨著電力系統中使用Linux 操作系統的智能終端越來越多,應用場景越來越廣,此項終端配置文件的自動備份和還原技術應該會有很好的推廣價值.