王淑春,陸志云
(江西贛能股份有限公司居龍潭水電廠,江西 贛州 341000)
生產報表是水電廠生產信息即時整理和分析數據的信息管理系統的重要組成部分,有效的生產報表對安全生產工作發揮著重要的決策和指導作用。計算機管理生產報表的主要優點是數據動態化,格式多樣化,并且實現報表數據和報表格式的完全分離,通過修改格式就可以得到各種形式的報表,系統管理靈活方便。
居龍潭水電廠信息管理系統(以下簡稱:MIS)在開發投入時,也設計了生產報表模塊。但由于設計者對現場需求了解不足,設計出來的報表軟件脫離實際應用;另外,隨著生產管理水平的提高,對生產數據報表的要求也相應提高。非計算機專業人員無法對其進行相應的管理,導致在試用一段時間后,就放棄了使用。EXCEL、WORD等主流辦公軟件雖然可以做出復雜的報表格式,但是普通用戶無法動態地加載數據,存在數據容易丟失、管理權限無法分配、數據無法在線共享展示、容易產生多處報表、容錯率低等問題,也無法滿足生產報表系統的需求。根據居龍潭水電廠多年的生產工作經驗,以及對多個電廠的考察,以上問題也是眾多水電廠共同面對的難題。設計一款符合實際、好用且適應新需求的生產數據報表模塊就迫在眉睫。經過調查分析、針對居龍潭水電廠生產需要,設計開發了一套適用于中小型水電廠的生產報表系統。
水電廠生產報表常用的主要包括電量計算、水情統計、可調小時、電量數據分析、水能利用效率統計分析等。運行值班人員根據表計、監控系統、水情系統的顯示值以及機組、設備的運行狀態,將所需數據錄入至報表系統,報表系統按照一定的變比、算法、格式對數據進行處理,將有效的數據保存在服務器數據庫中。運行及其他人員可通過系統查詢功能查詢相關數據,生成相應的日報表、月報表和年報表并進行打印。還可以對數據進行分析,指導水庫調度和機組經濟運行[1]。
管理員可根據機組設備的改造和變化,對報表字段、人員名冊進行更新。如:居龍潭水電廠2013年110kV居韓線線路改造后,報表需新增居韓線電量數據。
簡單、清晰的界面設計,人性化的設計理念,方便運行人員的數據錄入,較好的數據容錯能力減少了數據的錯誤。
系統構架包括電量計算、水情統計和可調小時三個基礎模塊及其對應的報表功能,后臺管理模塊包括字段管理、數據變比以及人員管理[2]。
設計概圖如圖1所示:

圖1 設計概圖
2.2.1數據庫的邏輯結構設計[3]

DL(電量)

DLJS(電量基數)

DLBB(電量變比)

SQ(水情統計)

KT(可調小時)

YXname(人員名單)
2.2.2基礎模塊界面的設計
1)電量計算是指運行人員日常抄錄機組、線路、主變及廠用變等關口電度表當日讀數后,與前一日電度表基數進行對比,其差值與電度表電壓互感器和電流互感器變比的乘積即為該關口處當日的電量數。值班人員每日零點進行一次抄錄,錄入的電度表讀數保存為后一天的電量基數存入數據庫的DLJS表中,并默認為電度表當日讀數。電度表基數默認為電量關口表的前一天的讀數。當該電度表進行校驗后讀數歸零時,錄入的電量基數也需要相應的進行清零。在輸入的過程中系統根據變比自動計算出設備日電量并顯示,運行人員錄入后進行保存,如圖2所示。
界面初始化時,根據需要錄入的數據遍歷讀取數據庫數據,形成表格的方式進行輸入。
核心代碼如下:
namers.Open"select name from dl,conn//根據日期遍歷數據及名稱
for(i=1;i<=dlrs.length ;i++)
{var newTd0=newTr.insertCell();
var newTd1=newTr.insertCell();
var newTd2=newTr.insertCell();}//輸出至表格相應的位置

圖2 電量計算初始化界面
通過JS腳本進行數據容錯,如電量為負數或數據格式錯誤,保存數據時,通過簡單的JS腳本判斷,界面彈出警告窗口如圖3所示:

圖3 數據容錯提示框
2)水情統計是運行人員根據水情系統的數據和機組的基本運行狀態,將有關數據保存在數據庫中,界面設計如圖4所示。核心代碼如下:
sqrs.Open"select*fromsql where dldate=#"&today&"#",conn//根據日期遍歷數據及名稱
for(i=1;i<=sqrs.length ;i++)
{var newTd0=newTr.insertCell();//輸出至表格相應的位置
var newTd1=newTr.insertCell();}

圖4 水情統計初始化界面
3)可調小時模塊用于運行人員記錄機組的開停機和備用時間,根據所記錄的時間段計算出各機組的發電時長、檢修時長和備用時長。
記錄時間的格式通過JS腳本的格式化處理,再計算出需要的時長,并設置全天運行、備用或者檢修狀態的快速選擇鍵,方便錄入,如圖5所示。
核心代碼如下:
$(document).ready(function(){
$("#yx1").click(function(){//置全天運行、備用或者檢修狀態的快速選擇鍵
for(i=1;i<9;i++){document.getElementById("1yk"+i+"").value=""}
document.getElementById("1yk1").value="00:00"
document.getElementById("1yj1").value="24:00"});
//全天多態情況下手動輸入時間處理
for(i=1;i<9;i++){//時段字符的容錯及格式化處理
if(!document.getElementById("1yk"+i+"").value)continue;
document.getElementById("1yk"+i+"").value=document.getElementById("1yk"+i+"").value.replace(".",":")}//時間格式可使用“.”符號,方便輸入;
h=Math.floor(arr/60);m=arr%60
if(Math.floor(arr/60)<10){h="0"+Math.floor(arr/60)}//時間型轉換成直觀的浮點型表現形式

圖5 可調小時初始化界面
2.2.3生成報表功能的實現
根據日期選擇需要的數據,通過系統的換算顯示在報表上。報表具有顯示查詢日期的機組、線路和變壓器的日、月、年以及長年累積匯總電量或時間的功能。用戶使用scriptx插件進行報表的快捷打印。部分核心代碼如下:
yue=left(request.form("theday"),7)//按月度檢索數據
nian=left(request.form("theday"),4)/按年度檢索數據
rs.Open sql="select sum(F1YG),from DL where DateDL like'"&yue&"%'and id<=(select id from dl where datedl='"&js&"')",conn//月總電量
rs.Open sql="select sum(F1YG),from DL where DateDL like'"&nian&"%'and id<=(select id from dl where datedl='"&js&"')",conn//年總電量
打印報表格式如圖6所示:

圖6 報表生成界面
2.2.4數據分析的實現
基于數據庫的查詢功能,ichartjs組件利用HTML5 canvas完成圖形繪折線圖工作。用戶根據時間范圍和所需查詢的數據,快速得到所需數據的折線圖,直觀地得出數據的變化曲線。
折線圖查詢界面如圖7所示:

圖7 數據趨勢折線圖
2.3.1人員權限管理
管理人員根據人員變動情況,更新人員信息表,如圖8所示。
核心代碼如下:
rs.Open.sql="inset into YXname(YXname,Authority,YXid,password)VALUES('"&name&",”&authority&”,””&id&””,”&password&”')",conn//添加人員信息
rs.Open.sql="updateYXnameYXname(YX-name, Authority, YXid, password)VALUES('"&name&",”&authority&”,””&id&””,”&password&”')",conn//修改人員信息
rs.Open.sql="DELETE from YXname WHERE YXname="&name&",conn//刪除人員

圖8 人員管理界面
2.3.2電量計算字段的更新
字段的修改與刪減主要針對電廠更新機組、設備和線路等電量數據,相應的修改錄入、輸出格式。更新后的字段可以在界面直接顯示并進行數據的錄入、輸出,字段更新后錄入界面自動讀取該數據,報表的設計需要對代碼進行簡單地修改重新布局。增加字段界面如圖9所示。

圖9 字段管理界面
1)經過長期的測試和不斷的優化改進,水電廠通用性生產報表系統已經在居龍潭水電廠得到了充分的應用,在該電廠的生產管理工作中起著重要的作用。對其他中小型電廠有一定的借鑒作用。
2)水電廠通用型生產報表系統減少了運行人員的工作量,系統管理員無需編程基礎即可對系統進行實時在線管理,其他人員可通過客戶端瀏覽器查詢所需數據,數據共享方便,存儲安全可靠。
3)在研發的過程中,筆者對多個水電廠的需求進行了分析研究,其基礎模塊能滿足一般水電廠的生產需要,獨立的開發和簡單的代碼使得系統的移植以及拓展模塊的二次開發變得簡單,無需搭建復雜的配置環境。