基于Web的變電站監控系統設計與實現
系統設計為遠程服務端和Web服務器兩部分。為了實時穩定的接受和存儲變電站總站傳輸的IEC104規約數據,采用JAVA多線程連接池和數據庫連接池方法設計服務端,將接收到的數據解析之后分組存入數據庫中。同時將SOE事件通過GPRS設備手機短信報警。在Web端使用JSP動態頁面技術實現變電站數據查詢,接線圖狀況,遠程控制設備,以及遠程視頻監控功能。
引言
傳統的監控一般構建于桌面應用,具有系統跨平臺,客戶端升級等缺點,更重要的是需要人員實時守在電腦旁,不利于工作人員對隨時出現的故障進行判斷。隨著互聯網技術和電力行業不斷發展,將互聯網與電力行業應用一體化已成趨勢.而萬維網(Web)具有編程簡單,跨平臺,客戶端免安裝、維護等優點,結合GPRS設備,可以給手機發送報警信息,開發基于B/S架構的監控系統有其廣闊的研究意義[1]。
本文結合IEC104電力行業規約,JAVA多線程,數據庫訪問技術,動態數據發布,Web動態圖形等分析與研究,從遠程監控系統角度出發,采用TCP連接池,數據庫連接池,串口通信,JQuery等技術,設計Web遠程監控系統。一方面研究Web監控系統實現過程中遇到的問題,另一方面能夠對其他類似性質的遠程監控的研究提供一些借鑒和幫助。
1.系統總體設計
1.1 IEC104簡介
IEC104是國際電工委員會制定的一個規范,標準定義了用于網絡的開放 TCP/IP接口,網絡可以包括例如傳輸IEC60870-5-101的應用服務數據單元的遠動設備的局域網。包含不同的廣域網類型的路由器可以通過公共的TCP/IP-局域網連接起來。
傳輸接口(用戶對TCP 接口)是面向數據量的接口,它并不定義 IEC60870-5-101的應用服務數據單元的任何啟動或者停止。為了檢出應用服務數據單元的啟動和結束,定義了啟動字符、應用服務數據單元的長度規范、以及應用規約控制信息的控制域。可傳輸一個完整的應用規約數據單元或者為了控制的目的僅僅傳輸應用規約控制信息域。

圖1 遠動配套標準定的應用服務數據單元
應用規約數據單元的長度定義了應用規約數據單元主體的長度,它由應用規約控制信息的四個控制域八位位組和應用服務數據單元所組成。第一個被計數的八位位組為控制域的第一個八位位組。最后一個被計數的八位位組為應用服務數據單元的最后一個八位位組。應用服務數據單元的最大幀長為249,而控制域的長度是4個八位位組,應用規約數據單元的最大長度為253 (APDUMAX=255 減掉啟動和長度八位位組)[2]。
1.2系統體系結構
Web遠程監控系統主要分為三個部分:服務端,數據庫層,web客戶端。
服務端:利用IEC104的TCP/IP網絡傳輸特性,采用JAVA的TCP連接池編寫通信鏈路層,和變電站主站連接。通過以太網和變電站主站進行通信,解析工作主站傳輸的IEC104規約報文,包括I幀,U幀,S幀等。將其遙測,遙信量,SOE事件信息進行分類,存入數據庫中。當其數據量達到報警值,或者有SOE事件信息時。通過與服務端相連GPRS模塊,利用JAVA串口通信將報警值和SOE事件信息,發送短信到指定用戶手機上,及時提醒工作人員設備狀況和信息。系統程序流程如圖2所示。

圖2 服務端程序流程圖
數據庫:設計為實時數據庫,根據104規約數據,將遙測,遙信,開關事件等信息分組存入數據庫,數據庫保存所有數據信息。
Web服務端:采用JSP動態頁面設計,利用JAVA數據庫連接池,可高效的連接數據庫層,用戶登錄之后能查詢各設備的運行參數;變電站的SOE事件和開關事件信息;控制設備開關變化;瀏覽變電站主接線圖和配電室主接線圖狀況;并可通過視頻監控查看遠程設備真實狀況。

圖3系統總體框圖
2.系統軟件設計
2.1 IEC104的I幀U幀S幀簡介
控制域的這些類型被用于完成計數的信息傳輸的(I格式)、計數的監視功能(S格式)和不計數的控制功能(U格式)。控制域的第一個八位位組的第1位比特=0定義了I格式。I格式應用規約數據單元常常包含應用服務數據單元。I格式的控制信息如圖4所示。
比特 8 7 6 5 4 3 2 1
|
發送序列N(S) LSB |
0 |
|
MSB 發送序列N(S) | |
|
接受序列N(R) LSB |
0 |
|
MSB 接受序列N(R) | |
圖4 信息傳輸格式類型(I格式)控制域
控制域的第一個八位位組的第 1 位比特=1,第 2 位比特=0 定義了 S 格式。S格式應用規約數據單元由控制信息所組成。S格式的控制信息如圖5所以。
比特 8 7 6 5 4 3 2 1
|
0 |
0 |
1 |
|
0 | ||
|
接受序列N(R) LSB |
||
|
MSB 接受序列N(R) | ||
圖5 計數的監視功能類型(S格式)控制域
控制域的第一個八位位組的第1位比特=1,第2為比特=1定義了U格式。U格式應用數據規約數據單元僅有應用規約控制信息所組成。U格式的控制信息如圖6所示。在同一時刻僅TESTFR,STOPDT,STARTDT功能之一被激活[2]。
比特 8 7 6 5 4 3 2 1
|
TESTFR |
STOPDT |
STARTDT |
1 |
1 | |||
|
CON |
ACT |
CON |
ACT |
CON |
ACT | ||
|
0 | |||||||
|
0 |
0 | ||||||
|
0 | |||||||
圖6 信息傳輸格式類型(U格式)控制域
2.2 服務端連接
在服務端采用JAVA的TCP連接池和數據庫連接池技術,使用EchoServer的server()方法。
public void service(){
While(!isShutdown){
…
try{
Thread workThread=new (new Handler(socket));
…
}
…
}
以上工作線程workThread執行Handler的run()方法。Handler類實現了Runnable接口,它的run()方法負責與單個客戶通信,與客戶通信結束后,就會斷開連接,執行Handler的 run()方法的工作線程也會自然終止[3]。
使用總召喚命令(0x68,0x04,0x07,0x00,0x00,0x00);召喚變電站總站向服端發送數據,服務端解析之后按照遙測,遙信,開關事件等存入數據庫。在后續開發的Android和IOS客戶端,只要執行標準的104協議規約數據,即可與服務端建立通信。這樣簡化二次開發難度,并且在與JAVA串口通信的連接中多線程的調度執行效率更高。
2.3 數據庫連接
數據庫采用SQL server2005,采用C3P0連接池,它是一個開源的JDBC連接池,它實現了數據源和JNDI綁定,支持JDBC3規范和JDBC2的標準擴展。與普通JDBC相比,效率更高,穩定性更強[4]。設置C3P0基本配置:
ds = new ComboPooledDataSource();
ds.setDriverClass(className);
ds.setJdbcUrl(url);
ds.setUser(user);
ds.setPassword(password);
//設置連接池的最大最小初始化連接數
ds.setInitialPoolSize(30);
ds.setMaxPoolSize(100);
ds.setMinPoolSize(10);
創建一個一個數據庫接口:private Connection newConnection()。以供數據存儲使用。
2.4 網頁端訪問
網頁端主要建立與數據庫連接,主要查詢變電站遙測,遙信,開關,SOE事件信息。另外通過建立TCP套接字與服務端建立連接,Socket socket = new Socket("localhost",8082);實現變電站遠程控制事件。
變電站主接線圖部分為采用Java Applet的多線程和繪圖功能來實現,接線圖的主要功能是用來監視變電站運行狀態的直觀反映,在本文監控設計中,需要將實時數據與接線圖緊密結合,通過線程每次運行,查詢數據庫中的新數據,并更具新數據使用repaint(); getImage();和drawImage();等函數對圖像重繪制,通過顏色和狀態的區別可直觀的查詢到變電站的運行狀態[5]。驗證圖如7所示。

圖7 變電站運行部分狀態
3.總結
隨著互聯網行業的發展以及云計算的到來,加快了信息的交流和信息的共享,工業監控系統由Web的跨平臺和隨時使用的特點替代傳統的桌面軟件風格是一種潮流和必然。借助于手機和電腦瀏覽器,用戶可隨時遠程監控變電站的實時運行情況和控制變電站開關狀態,對電力系統的安全、經濟運行起到了促進作用。并且本文所設計的服務端104鏈路層,可和任意標準104協議通信,這樣在以后開發的Android和IOS移動客戶端,直接通過TCP發送標準的104協議數據,可與服務端建立連接。減少了了后續開發難度。但在網絡傳輸過程中,時延是基于Web監控的關鍵問題,影響這系統的穩定性和控制的高效性,怎樣減小這種影響成為了日后改進和研究的重點之一。
基金項目:物聯網科普系列叢書(cstc2012gg-kplB40006)
物聯網互動體驗館科普展品及教具研發(cstc2012gg-kplB40005)