引言
社會的不斷進步和科學技術的飛速發展,為電力系統的發展和進步提供了廣闊的空間和新的技術手段,對于電網的監測也提出了新的挑戰。以往的電網監測裝置普遍是基于單片機開發的,在特定時間或地點進行電網的監測操作,精度較低,實時性不高。隨著電網不斷擴大,原本的監測裝置己很難滿足實際需要。
本系統基于近年來新興的嵌入式Internet技術將嵌入式系統與Internet結合,把PHILIPS公司生產的ARM7微處理器作為系統實現的核心器件,同時利用以太網接口芯片構建一個嵌入式網絡系統并將其運用到電網遠程監測中。整個設計符合電網遠程監測的要求,并克服了傳統模式的監測方式,以其優異的性能應用于電網遠程監測系統中。
1. 系統總體設計
基于嵌入式Internet技術的電網遠程監測系統是電網監測研究領域的一個嶄新的方向。目前為了將嵌入式系統與Internet結合常用的嵌入式Internet技術實現方案主要有以下幾種:[1]
第一種方案是單片機應用系統內部支持TCP/IP協議,它實質上由MCU及內部固化TCP/IP協議的芯片組成應用系統的核心。此方案中,由于單片機使用了TCP/IP協議芯片,因此[1]需要大容量的程序存儲器,而且要求MCU有較高的運行速度。應用系統的設計工程師還必須熟悉TCP/IP協議和相關的接口,軟件設計復雜,工作量大。
第二種方案是采用嵌入式微控制器結合通用的網絡接口芯片的方法,解決以微控制器為核心的嵌入式系統接入Internet的問題。
本系統將第二種方案應用于電網遠程監測系統的開發與實現,把監測裝置作為以太網中的一個獨立的節點,使其擁有自己的IP地址,而任何授權的工作站都可以通過Internet實時瀏覽在線信息。整個電網遠程監測系統的結構如圖1,其中用戶層是遠程監測主機,負責實時監測電網運行參數確保電網運行安全。應用層為采用嵌入式Internet技術設計開發的電網遠程監測系統,每個監測設備分配一個獨立的IP,方便用戶層進行數據監測。數據層則為分布在各地的待監測的電網,提供電網運行參數。
2. 系統的硬件平臺
硬件平臺是實現嵌入式Internet接入的基礎,本文提出的電網遠程監測系統的硬件平臺采用ARM7代替了傳統的CPU,同時在外圍接入電流電壓監測模塊、功率因數監測模塊、鍵盤輸入模塊、以及網絡通信模塊,整個系統的硬件平臺結構圖如圖2。其中微處理器部分采用基于ARM7TDMI內核的LPC2290,它擁有16 kB 片內靜態RAM,32 位定時器、8 路10 位ADC,并且擁有多個串行接口,包括2個UART、高速I2C 接口和2個SPI接口,通過配置總線,LPC2290 最多可提供76個GPIO。由于LPC2290內置了寬范圍的串行通信接口,因此在通信網關、協議轉換器,遠程監測以及其它各種類型的應用中非常適合。
網絡通信模塊是實現嵌入式系統與Internet互聯的關鍵,本系統采用的是通用的以太網控制芯片DM9000E,它是MAC、PHY、MMU三合一的網絡芯片,精度高、速度快,具有10M/100M自適應、16KB大容量FIFO、4路多功能GPIO、掉電特性、全雙工工作等功能。由于它擁有3種等級的掉電模式,所以是作為網絡設備的理想選擇,在全雙工模式下,如果連接到一個同樣是全雙工的交換機或集線器,則可以實現同時接收和發送。通過該芯片可實現嵌入式系統與Internet的互聯。
3.1 嵌入式操作系統的選擇
嵌入式操作系統是整個嵌入式系統的核心,它具有實時性強、可靠性高等特點,在嵌入式系統中應用廣泛。商用的嵌入式實時操作系統比如Vxworks、Nucleaus、QNX等價格比較昂貴,一般不適宜廣泛應用。μC Linux是從Linux 2.0/2.4內核派生而來[2],適用于沒有虛擬內存或內存管理單元(MMU)的處理器,它在標準的Linux基礎上進行了適當的裁剪和優化,體積很小,而且保留了Linux的大多數的優點:穩定、良好的移植性、優秀的網絡功能,并內嵌了TCP/ IP 協議。考慮到嵌入式μCLinux的以上優點,本系統選擇采用嵌入式μCLinux作為嵌入式的實時操作系統。
3.2 Web服務器的實現
在電網遠程監測系統中,嵌入式Web服務器技術將有效降低系統運行維護費用,提高系統管理水平 [3]。本系統將嵌入式Web服務器以及B/S結構模型相結合。其中B/S結構中最底層為數據層,負責從采集電網數據;中間層為信息處理系統,負責將電網中的實時參數寫入掛接在這一層的Web服務器中,然后對數據進行統計、分析等處理,最后將處理過的數據實時的以網頁的形式發送到第三層客戶端,客戶端可以通過瀏覽器直接監測電網運行參數,實現了電網遠程監測系統。
嵌入式Web服務器(Embedded Web Server,簡稱EWS)是實現電網遠程監測的重要組成部分和關鍵技術,利用嵌入式Web服務器可對電網進行監測和實時參數的傳輸[4]。嵌入式web服務器通過CGI接口或其他方法,可以在HTML文件或表單中運行代碼,供RAM讀/寫數據。在μCLinux下,本系統選擇使用一個支持CGI的、非常適合于嵌入式系統的Boa Web Server。在Boa Web Server使用時需要對與Boa相關的文件做一些配置和修改:
1) 建立存放目錄
由于μClinux默認的根文件系統romfs是只讀的,不能用mkdir等命令來新建目錄,故應在編譯內核前先建好要用到的目錄,這通過修改。。/μClinux-dist/vendors/Philips/LPC2200/Makefile文件來實現。在ROMFS_DIRS=bin dev etc home lib mnt proc usr var的后邊增加home/cgi-bin,這樣修改后編譯內核,編譯好的根文件系統romfs中就包含這些目錄了。
2) 指定Web服務器的根目錄路徑。
進入。。/μClinux-dist/user/boa/src/目錄,通過修改defines.h文件中#define SERVER ROOT “/home/”語句來指定SERVER ROOT。
3) 修改boa.conf文件。修改。。/μClinux-dist/user/boa/examples/boa.conf主要內容如下:
Part 80
User 0
Group 0
ServerName μClinux
DocumentRoot /home/ /*設定存放路徑*/
Directoryindex index.html
MimeType /home/mime.types
ScriptAlias /cgi-bin/ /home/cgi-bin/
AddType text/plain.txt /*可支持的文件類型*/
AddType image/gif.gif
AddType text/html.html
AddType text/html.htm
AddType image/jpeg.jpeg
這樣指定后,index.html為遠程瀏覽客戶訪問Web Server所看到的首頁默認值。把C編寫的CGI程序編譯成二進制文件,存放到。。 /home/cgi-bin/目錄下。Boa.conf和mime.types文件必須放到Web服務器根目錄下,也就是把bao.conf和mime.types復制到“。。/μClinux-dist/romfs/home/”目錄下。然后在。。/μClinux-dist/Vendors/Philip/LPC2200/inittab里修改,在“inet:unknown:/bin/inetd”后加“boa:unknown: /bin/boa /home/”。
配置完成后,重新編譯內核。把編譯好的內核下載到ARM硬件平臺,啟動μClinux操作系統,完成IP配置,運行Boa Web Server,然后就可以通過瀏覽器訪問網頁了。
3.3 用戶與主機間安全交互的實現
為了在μCLinux系統中實現網頁的實時刷新,得到實時電網參數,實現客戶端與電網監測系統之間的交互,本系統采用了CGI的方法。當客戶端采用FORM POST形式向Boa服務器發出CGI請求時,服務器守護進程啟動相應的CGI程序,CGI程序通過CONTENT—LENGTH獲取客戶端傳輸數據的字節數,通過STDIN讀取客戶端傳輸數據,這些數據一般是客戶端在表單中輸入的簡單的監控信息。CGI獲取這些信息后通過串行通信將這些信息發送到電網監測系統中,等待監測系統模塊的應答消息,最后生成網頁文件,并且將返回結果嵌入到網頁文件中,通過cgi—send—string函數將此網頁發送給客戶端瀏覽器。一段時間后客戶端瀏覽器會再次向服務器發送一個CGI請求,相應的CGI函數會查詢最新的數據,刷新后將新數據發送給客戶端瀏覽器。這樣周而復始,實現了網頁的刷新功能,從而保證了遠程監測數據的實時性,實現客戶端與電網監測系統之間的交互。客戶端通過CGI接口與電網監測系統之間交互的關系如圖3所示[5]。