王淑春,陸志云
(江西贛能股份有限公司居龍?zhí)端姀S,江西 贛州 341000)
生產(chǎn)報表是水電廠生產(chǎn)信息即時整理和分析數(shù)據(jù)的信息管理系統(tǒng)的重要組成部分,有效的生產(chǎn)報表對安全生產(chǎn)工作發(fā)揮著重要的決策和指導(dǎo)作用。計算機管理生產(chǎn)報表的主要優(yōu)點是數(shù)據(jù)動態(tài)化,格式多樣化,并且實現(xiàn)報表數(shù)據(jù)和報表格式的完全分離,通過修改格式就可以得到各種形式的報表,系統(tǒng)管理靈活方便。
居龍?zhí)端姀S信息管理系統(tǒng)(以下簡稱:MIS)在開發(fā)投入時,也設(shè)計了生產(chǎn)報表模塊。但由于設(shè)計者對現(xiàn)場需求了解不足,設(shè)計出來的報表軟件脫離實際應(yīng)用;另外,隨著生產(chǎn)管理水平的提高,對生產(chǎn)數(shù)據(jù)報表的要求也相應(yīng)提高。非計算機專業(yè)人員無法對其進行相應(yīng)的管理,導(dǎo)致在試用一段時間后,就放棄了使用。EXCEL、WORD等主流辦公軟件雖然可以做出復(fù)雜的報表格式,但是普通用戶無法動態(tài)地加載數(shù)據(jù),存在數(shù)據(jù)容易丟失、管理權(quán)限無法分配、數(shù)據(jù)無法在線共享展示、容易產(chǎn)生多處報表、容錯率低等問題,也無法滿足生產(chǎn)報表系統(tǒng)的需求。根據(jù)居龍?zhí)端姀S多年的生產(chǎn)工作經(jīng)驗,以及對多個電廠的考察,以上問題也是眾多水電廠共同面對的難題。設(shè)計一款符合實際、好用且適應(yīng)新需求的生產(chǎn)數(shù)據(jù)報表模塊就迫在眉睫。經(jīng)過調(diào)查分析、針對居龍?zhí)端姀S生產(chǎn)需要,設(shè)計開發(fā)了一套適用于中小型水電廠的生產(chǎn)報表系統(tǒng)。
水電廠生產(chǎn)報表常用的主要包括電量計算、水情統(tǒng)計、可調(diào)小時、電量數(shù)據(jù)分析、水能利用效率統(tǒng)計分析等。運行值班人員根據(jù)表計、監(jiān)控系統(tǒng)、水情系統(tǒng)的顯示值以及機組、設(shè)備的運行狀態(tài),將所需數(shù)據(jù)錄入至報表系統(tǒng),報表系統(tǒng)按照一定的變比、算法、格式對數(shù)據(jù)進行處理,將有效的數(shù)據(jù)保存在服務(wù)器數(shù)據(jù)庫中。運行及其他人員可通過系統(tǒng)查詢功能查詢相關(guān)數(shù)據(jù),生成相應(yīng)的日報表、月報表和年報表并進行打印。還可以對數(shù)據(jù)進行分析,指導(dǎo)水庫調(diào)度和機組經(jīng)濟運行[1]。
管理員可根據(jù)機組設(shè)備的改造和變化,對報表字段、人員名冊進行更新。如:居龍?zhí)端姀S2013年110kV居韓線線路改造后,報表需新增居韓線電量數(shù)據(jù)。
簡單、清晰的界面設(shè)計,人性化的設(shè)計理念,方便運行人員的數(shù)據(jù)錄入,較好的數(shù)據(jù)容錯能力減少了數(shù)據(jù)的錯誤。
系統(tǒng)構(gòu)架包括電量計算、水情統(tǒng)計和可調(diào)小時三個基礎(chǔ)模塊及其對應(yīng)的報表功能,后臺管理模塊包括字段管理、數(shù)據(jù)變比以及人員管理[2]。
設(shè)計概圖如圖1所示:
圖1 設(shè)計概圖
2.2.1數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計[3]
DL(電量)
DLJS(電量基數(shù))
DLBB(電量變比)
SQ(水情統(tǒng)計)
KT(可調(diào)小時)
YXname(人員名單)
2.2.2基礎(chǔ)模塊界面的設(shè)計
1)電量計算是指運行人員日常抄錄機組、線路、主變及廠用變等關(guān)口電度表當(dāng)日讀數(shù)后,與前一日電度表基數(shù)進行對比,其差值與電度表電壓互感器和電流互感器變比的乘積即為該關(guān)口處當(dāng)日的電量數(shù)。值班人員每日零點進行一次抄錄,錄入的電度表讀數(shù)保存為后一天的電量基數(shù)存入數(shù)據(jù)庫的DLJS表中,并默認(rèn)為電度表當(dāng)日讀數(shù)。電度表基數(shù)默認(rèn)為電量關(guān)口表的前一天的讀數(shù)。當(dāng)該電度表進行校驗后讀數(shù)歸零時,錄入的電量基數(shù)也需要相應(yīng)的進行清零。在輸入的過程中系統(tǒng)根據(jù)變比自動計算出設(shè)備日電量并顯示,運行人員錄入后進行保存,如圖2所示。
界面初始化時,根據(jù)需要錄入的數(shù)據(jù)遍歷讀取數(shù)據(jù)庫數(shù)據(jù),形成表格的方式進行輸入。
核心代碼如下:
namers.Open"select name from dl,conn//根據(jù)日期遍歷數(shù)據(jù)及名稱
for(i=1;i<=dlrs.length ;i++)
{var newTd0=newTr.insertCell();
var newTd1=newTr.insertCell();
var newTd2=newTr.insertCell();}//輸出至表格相應(yīng)的位置
圖2 電量計算初始化界面
通過JS腳本進行數(shù)據(jù)容錯,如電量為負(fù)數(shù)或數(shù)據(jù)格式錯誤,保存數(shù)據(jù)時,通過簡單的JS腳本判斷,界面彈出警告窗口如圖3所示:
圖3 數(shù)據(jù)容錯提示框
2)水情統(tǒng)計是運行人員根據(jù)水情系統(tǒng)的數(shù)據(jù)和機組的基本運行狀態(tài),將有關(guān)數(shù)據(jù)保存在數(shù)據(jù)庫中,界面設(shè)計如圖4所示。核心代碼如下:
sqrs.Open"select*fromsql where dldate=#"&today&"#",conn//根據(jù)日期遍歷數(shù)據(jù)及名稱
for(i=1;i<=sqrs.length ;i++)
{var newTd0=newTr.insertCell();//輸出至表格相應(yīng)的位置
var newTd1=newTr.insertCell();}
圖4 水情統(tǒng)計初始化界面
3)可調(diào)小時模塊用于運行人員記錄機組的開停機和備用時間,根據(jù)所記錄的時間段計算出各機組的發(fā)電時長、檢修時長和備用時長。
記錄時間的格式通過JS腳本的格式化處理,再計算出需要的時長,并設(shè)置全天運行、備用或者檢修狀態(tài)的快速選擇鍵,方便錄入,如圖5所示。
核心代碼如下:
$(document).ready(function(){
$("#yx1").click(function(){//置全天運行、備用或者檢修狀態(tài)的快速選擇鍵
for(i=1;i<9;i++){document.getElementById("1yk"+i+"").value=""}
document.getElementById("1yk1").value="00:00"
document.getElementById("1yj1").value="24:00"});
//全天多態(tài)情況下手動輸入時間處理
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)}//時間型轉(zhuǎn)換成直觀的浮點型表現(xiàn)形式
圖5 可調(diào)小時初始化界面
2.2.3生成報表功能的實現(xiàn)
根據(jù)日期選擇需要的數(shù)據(jù),通過系統(tǒng)的換算顯示在報表上。報表具有顯示查詢?nèi)掌诘臋C組、線路和變壓器的日、月、年以及長年累積匯總電量或時間的功能。用戶使用scriptx插件進行報表的快捷打印。部分核心代碼如下:
yue=left(request.form("theday"),7)//按月度檢索數(shù)據(jù)
nian=left(request.form("theday"),4)/按年度檢索數(shù)據(jù)
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數(shù)據(jù)分析的實現(xiàn)
基于數(shù)據(jù)庫的查詢功能,ichartjs組件利用HTML5 canvas完成圖形繪折線圖工作。用戶根據(jù)時間范圍和所需查詢的數(shù)據(jù),快速得到所需數(shù)據(jù)的折線圖,直觀地得出數(shù)據(jù)的變化曲線。
折線圖查詢界面如圖7所示:
圖7 數(shù)據(jù)趨勢折線圖
2.3.1人員權(quán)限管理
管理人員根據(jù)人員變動情況,更新人員信息表,如圖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電量計算字段的更新
字段的修改與刪減主要針對電廠更新機組、設(shè)備和線路等電量數(shù)據(jù),相應(yīng)的修改錄入、輸出格式。更新后的字段可以在界面直接顯示并進行數(shù)據(jù)的錄入、輸出,字段更新后錄入界面自動讀取該數(shù)據(jù),報表的設(shè)計需要對代碼進行簡單地修改重新布局。增加字段界面如圖9所示。
圖9 字段管理界面
1)經(jīng)過長期的測試和不斷的優(yōu)化改進,水電廠通用性生產(chǎn)報表系統(tǒng)已經(jīng)在居龍?zhí)端姀S得到了充分的應(yīng)用,在該電廠的生產(chǎn)管理工作中起著重要的作用。對其他中小型電廠有一定的借鑒作用。
2)水電廠通用型生產(chǎn)報表系統(tǒng)減少了運行人員的工作量,系統(tǒng)管理員無需編程基礎(chǔ)即可對系統(tǒng)進行實時在線管理,其他人員可通過客戶端瀏覽器查詢所需數(shù)據(jù),數(shù)據(jù)共享方便,存儲安全可靠。
3)在研發(fā)的過程中,筆者對多個水電廠的需求進行了分析研究,其基礎(chǔ)模塊能滿足一般水電廠的生產(chǎn)需要,獨立的開發(fā)和簡單的代碼使得系統(tǒng)的移植以及拓展模塊的二次開發(fā)變得簡單,無需搭建復(fù)雜的配置環(huán)境。