王智卜 張玉婷 (衡水供電公司,河北,衡水,053000)
[摘 要]通過對衡水電網SCADA系統數據利用現狀的分析,找出了數據利用率低的原因,提出將SCADA系統非標準數據庫轉換成Oracle標準數據庫,用標準數據庫語言對數據進行管理,從而提高了數據的利用率。
[關鍵詞] Orcle SCADA 數據利用率
0 引言
隨著衡水電網調度
自動化水平的不斷提高,遙測、遙信數據的準確性也不斷提高,電網運行的大量數據不僅成為科學調度的依據,在輔助公司決策方面也發揮著越來越重要的作用。比如:方式人員在安排電網運行方式時,需要每月各站有功、電壓等大量統計信息;計劃部門需要歷年的電網運行數據作為制定計劃的依據;用電處需要市區電網的遙測
信息作為開展工作的參考。總之,企業各部門對數據的需求量不斷增長。
1.1 衡水電網數據利用率
衡水電網調度
自動化系統所存儲的數據有兩類:遙測值和計算量。系統每天存儲的數據不僅包括288個整5分鐘的實時值,還包括每天的統計值,(如:最大值、最小值及相應的時間等14個屬性)。目前系統中共有計算量685個,遙測量2430個。實時數據報表占128張,統計數據報表占19張,每張報表的平均容量為576個數據點,在以上分析的基礎上我們計算出了目前的數據利用率。
|
遙測數據 |
統計數據 |
合 計 |
系統每天存儲數據總數 |
897120 |
43610 |
940730 |
可利用數據總數 |
73728 |
10944 |
84672 |
數據利用率 |
8.22% |
25.10% |
9.00% |
(系統每天存儲實時數據總數=288×(2430+685)=897120個,可用數據總數=576×128=73728個
系統每天存儲統計數據總數=14×(2430+685)=43610個, 可用數據總數=576×19=10944個)
從上表中我們可以看到,衡水電網調度
自動化系統中所存儲數據的利用率只有約9%,大量的電網運行數據不能被直接訪問。
圖1 SCADA系統數據訪問流程
系統設計時采用了非標準數據庫,對系統數據的訪問只能使用PGC2000系統提供的功能來完成,從而限制了對數據的訪問。
2 解決對策
通過上面的分析可以得出,系統功能的限制和系統未采用標準數據庫是導致數據利用率低的主要原因。
對于系統功能的限制,在單一的SCADA系統中,數據庫的建立和管理都采用文件方式,[1]調度員的操作只是調用畫面,由系統維護人員來完成數據的插入、修改等操作,如果通過增加畫面的數量來提高數據利用率,勢必以犧牲系統的響應時間和穩定性為代價,這是不可取的。
對于系統未采用標準數據庫,由于系統未采用標準的數據庫,導致了利用數據方法繁瑣,數據訪問方式不合理,利用數據方法繁瑣導致用戶不能在期望的時間內訪問到所需要的數據,數據訪問方式不合理導致主機負載過高,不能在有效響應用戶的數據請求,這些都限制了用戶對系統數據的訪問,導致了數據可用率低的現狀。
我們決定在不對現有軟件進行改動的前提下,通過將非標準數據庫轉換成標準數據庫的方法來提高數據的利用率。
為此,我們制定了如下解決方案:
a.選擇合適的網絡結構;
b.安裝Oracle數據庫管理軟件,建立數據庫表結構;
c.理清SCADA系統數據的存放格式,編寫數據轉換模塊;
d.利用標準數據庫查詢語言進行數據查詢。
3 實施步驟
3.1 網絡結構的選擇
為減輕實時服務器的負擔,將原有的兩臺COMPAQ DS-10小型機作為歷史服務器,分別安裝Oracle 數據庫,采用C/S結構,標準數據庫存放在歷史服務器上,同時在工作站上安裝Oracle客戶端,用戶通過網絡從工作站上訪問數據庫。
3.2 建立表結構
衡水電網SCADA系統中,數據的存儲是以天為單位,每天生成一個數據文件,少數計算量以年為單位,每年生成一個文件,每天零點進行統計后對該文件進行更新,增加記錄。
由于數據量大,也為了與習慣一致,在設計ORACLE數據庫時要建立一個包含站名、站號、點名、點號等的數據字典文件,同時將每年的遙測數據建立一個歷史數據表文件,將每年遙測數據的統計值建立一個統計數據表文件。
a. 創建一個包含站名、站號、點名、點號的數據字典文件
CREATE TABLE DBDICTIONARY (
SERIAL int NOT NULL ,
STNNO int NOT NULL ,
PNTNO int NOT NULL ,
PNTTYPE char (1) NOT NULL ,
STNNAME varchar2 (40) NOT NULL ,
PNTNAME varchar2 (40) NOT NULL ,
DTCREATE date NULL ,
PRIMARY KEY("SERIAL"),
UNIQUE("SERIAL")
)
PARTITION BY RANGE(STNNO)
(…)
… [2]
b. 創建包括日最大(小)值、最大(小)值時刻、平均值等的年度統計值表
CREATE TABLE DBSTATISTICS2005 (
SERIAL int NOT NULL ,
DTDATE date NOT NULL ,
NUM_VALID int NOT NULL ,
NUM_NORMAL int NOT NULL ,
MAXIMUM real NOT NULL ,
DTMAXIMUM date NOT NULL ,
…
)
PARTITION BY RANGE(DTDATE)
(…)
…
c. 創建包括所有遙測點、計算量點的全天288個點的年度實時值表
CREATE TABLE DBHISTORY2005 (
SERIAL int not null,
DTDATE date not null,
D1 real, D2 real,…)
PARTITION BY RANGE(DTDATE)
(…)
…
3.3 編寫數據轉換模塊
由于在數據存儲中廠家采用了非標準的數據庫,我們不清楚數據的存儲形式,因此與廠家協作編寫數據轉據轉換模塊,在設計數據轉換模塊時我們考慮了下面幾個問題:
a. 數據轉換模塊應不依賴于調度
自動化主程序,應具有良好的可移植性;
b. 由于采用雙機冗余的網絡結構,數據轉換模塊應具有靈活選擇數據源和目的數據庫的功能。
c. 數據轉換模塊可以自動運行,也可手動運行,以保證在修改了實時數據庫后能及時對歷史數據庫做出相應的修改。
d. 為滿足數據查詢靈活性的要求,數據轉換模塊應具備靈活選擇轉換時間段的功能。
4 實施效果
4.1 經過反復修改,數據轉換程序主界面如下圖所示:


圖2 數據轉換程序主界面
利用這個數據轉換模塊可以方便的將SCADA系統生成的非標準數據庫文件轉換成標準Oracle數據庫文件。
4.2 轉換后數據訪問流程如圖3所示。

圖3 數據訪問流程圖
這種數據訪問形式的優點在于:
a. 利于用標準數據庫查詢語言對數據進行查詢
b. 利于實現網絡負載平衡;
d. 提高數據存儲的安全性。
4.3 應用
例如查詢PID為 "02A011" 在2005年的最大值,可使用下列語句:
select max(maximum)
from dbdictionary, dbstatistics2005
where dbdictionary.serial = dbstatistics2005.serial
and dbdictionary.stnno = 02
and dbdictionary.pnttype = A
and dbdictionary.pntno = 11
5 結束語
通過將電網運行數據轉換到ORACLE標準數據庫中的方式,可以用標準數據庫查詢語言實現對任意點的數據查詢,SCADA采集的數據能更好的被企業各部門所共享,數據的利用率大大提高。
參考文獻:
[1] 王強 韓英鐸 電力系統廠站及調度自動化綜述 北京 清華大學 2004
[2] 文宏 Oracle 9i簡明教程 北京 清華大學出版社 2003
作者簡介:
王智卜(1979- ),男,助理工程師,主要從事電網調度自動化系統的運行和維護工作 0318-2042207
hs_wzb@126.com
張玉婷(1977- ),女,工程師,主要從事電網調度自動化系統的運行和維護工作 0318-2042207