李曉 沈海



摘要:火電廠中統計人員常常需從實時數據庫里導出數據作為統計報表的數據支撐,文章以國華徐州火力發電廠報表處理為例,闡述了在Excel中如何利用PI-Datalink系統對實時數據進行采集提取、統計計算的方法,以提高報表的可操作性和靈活性。
關鍵詞:統計;報表;Excel;PI數據庫;PI-Datalink
一、背景
(一)PI數據庫在火電廠統計應用現狀
目前,火電廠統計數據采集多為自動化數據采集和人工數據采集相結合模式。如今在自動化數據采集系統中,基于PI數據庫的廠級監控信息系統、綜合統計系統等已廣泛應用。
PI系統具有強大的實時數據采集功能,可實時地采集來自不同數據源的原始數據,并通過系統提供的用戶可配置報表、分析工具和Web軟件工具等,在遍布企業或管理部門的臺式計算機、便攜式電腦上,實時顯示當前和歷史的運行狀況,并隨時隨地連續不斷地為運行單元級、成套設施級、整個企業或管理機構級,提供實時數據與信息支持。
人工數據采集大多是作為自動化數據采集的補充方式或替代方式,適用于自動化采集實現難度較大、經濟成本較高的現場。以國華徐州電廠(以下簡稱電廠)為例,人工采集數據方面包括有煤化驗指標和水耗指標。因為煤化驗目前均為人工化驗;岸邊泵房距廠較遠,自動傳輸成本較高。
(二)PI系統應用存在的問題
目前基于PI數據庫的,無論SIS系統(廠級監控信息系統)或是綜合統計系統,均是技術服務供應商提供的成品模塊,一般是對數據進行24小時不間斷采集和計算,一旦出現啟停機或是設備、儀表故障等有異常數據或傳輸中斷出現時無法準確剔除無效數據使其不參與累計值或平均值的計算。
PI系統模塊一般以一日或一月為單位對指標進行統計計算,無法靈活調取某一時間段加以計算觀察。如電廠入爐煤化驗每天每8小時化驗一次,因無法準確得知該8小時期間相應的耗煤量,故每日入爐煤化驗指標只能簡單算數平均而無法進行加權平均計算,降低了采集數據的確定性。
另外對電廠而言,購買基于PI系統的監控統計軟件的運維服務一般是有有效時間的,且軟件投入使用后再進行變更比較困難。如使用后期想更改增加界面或數據指標,或是需要臨時調取界面內未顯示的數據時,實際實現起來費時費力,降低了工作效率。
(三)在Excel統計報表中應用PI-Datalink
PI數據庫系統擁有豐富的客戶端工具,其中PI-Datalink為PI數據庫與電子表格Excel提供連接,是在收集、分析PI 數據方面功能強大并易于使用的工具。
這樣可以在根據自身情況需求制定的報表中,靈活應用PI數據庫進行有針對性的數據定時定點采集和二次編輯,并結合電子表格程序的功能,實現報表需求功能,提高精確度,方便快捷,大大提高了工作效率。
二、PI-Datalink在統計Excel報表中使用的實現
(一)準備工作
由于PI-Datalink函數為Excel的外部函數,使用時有其自己規則,諸如日期時間格式,單元格的調用規則等,因此在未安裝PI-Datalink的計算機上無法識別和顯示。
在安裝完Pl-Datalink軟件后,需在Excel中加載了PI-DataLink的插件后,就可以通過Excel的“工具”菜單中選擇“加載宏”菜單項中,找到文件HPC32.xll。完成加載后,此時Excel菜單欄將出現“PI”菜單。利用該菜單可以方便調用PI-Datalink函數。
PI-Datalink中的時間標簽有指定的格式,下列均是有效的時間格式:“dd-mmm-yy hh:mm:ss”;“yyyy/mm/dd hh:mm:ss”;“yyyy-mm-dd hh:mm:ss”;“yyyy年mm月dd日 hh時mm分ss秒”,如“2019年5月1日晚八點半”寫作“2018/5/1 20:30:00”,如只輸入日期不輸入時間如“2018/5/1”,則默認為“2018/5/1 00:00:00”。
(二)使用PI-Datalink讀取數據
在Excel中取用PI數據庫中的數據,最直接的方式是使用Pl-Datalink提供的PIArcVal查詢函數。在要顯示數據信息的單元格內先輸入等號,并在等號后輸入查詢函數的公式PIArcVal(tagname, timestamp, outcode, PIServer, mode)。其中常用的“返回值outcode”為0,僅返回讀取值。
在電廠實際運用中,查詢采集值的函數為“=PIArcVal(數據點KKS碼,查詢時間,PI服務器地址,取值方式)”。如表1皮帶秤統計表單元格Q3需取用#1機C9A皮帶秤2019年3月1日0時的累積煤量,則需輸入“=PIArcVal("SM_DA160922_MC_SW",P3,0,"10.2.8.163","auto")”,其中“SM_DA1-
60922_MC_SW”為C9A皮帶秤的KKS碼,“P3”為單元格P3所輸入的“2019/3/1”由于缺少時間則默認為3月1日0時,返回值outcode為“0”,“10.2.8.163”為PI服務器地址。
將查詢時間寫入某一單元格并鏈接取用的好處是,這樣可以利用Excel的單元格拖放功能迅速查詢并顯示之后每一天的相同時間點的該數據點數值,比如可以將第一個單元格更換日期至下一個月或是歷史的某個月,后續單元格將一并更換至相應值,既直觀顯示又方便快捷地進行批量讀取。
(三)使用PI-Datalink計算數據
讀取采集值之后往往需要對其進行二次計算,這時會用到PI-datalink中的PICalcDat數據計算函數。它可以求取在一段指定的時間間隔內采集點數據的計算值,包括取總和、最值、平均值、計數等。格式為:“PICalcVal(tagname,stime,etime,cfactor,mode,outcode,PIServer)”。
例如電廠要計算從2018年11月19日到22日三日主汽壓平均值,需輸入“=PICalcDat($D$1,A3,B3,"720h","average",1,0,"10.2.8.163")”,如表2運行參數表。其中cfactor參數經驗證若大于等于所取時間段小時數均為有效且相等的數值,故表格中常取一個月小時數720;常用的“返回值outcode”為0,僅返回讀取值。
三、PI-Datalink在電廠統計Excel報表應用的實例
(一)通過PI-Datalink讀取函數計算入爐煤熱值的加權平均值
電廠之前入爐煤為每日采制一個綜合樣,每日化驗一次,并未按值(電廠為一日三值)劃分采制樣單元,綜合統計系統中的入爐煤化驗值錄入和計算也是相應的每日一次。本年度進行改進,將入爐煤按每班(值)的上煤量為一個采樣單元進行采制化驗。
改進措施實施后,采制化驗已按值劃分一日三次,但由于化驗班無法獲得該采樣單元時段對應的入爐煤量,只能將三個值的化驗值簡單算術平均,可如此計算與整改前的值并無實質性差別?,F應用PI讀取函數在原入爐煤分析月報表的基礎上,制作了增加入爐煤量參與計算的月報模板供化驗班填報,如表3入爐煤日報分析表。
其中C9A,C9B兩條輸煤皮帶表底值使用了PIArcVal查詢函數,如單元格L6=PIArcVal("SM_DA160922_MC_SW",K6,0,"10.2.8.163","auto"),含義如前文描述。日期輸入為“2019/5/1”,默認為“2019-5-1 00:00:00”,下一行輸入為“=K6+8/24”含義為“2019-5-1 00:08:00”,之后自動拖放K列值均為上一行時間點的8小時后。當下月填報該表時只需改動第一行時間的月份即可。于是可計算出2018年5月1日當班入爐煤量為L列和M列相鄰兩行差值的和,三個值的煤量相加得出當日總入爐煤量P8。那么當日加權熱值O8=(G6*N6+G7*N7+G8*N8)/(P8-IF(G6=0,N6)-IF(G7=0,N7)-IF(G8=0,N8)),加入IF函數是當某值采制樣或化驗儀器故障時,該值數據均不參與加權平均計算。
如此得到的日加權平均化驗值再輸入綜合統計系統進行月度匯總計算,將大大提高生成月報入爐煤化驗值的精確度。而且本模板直觀易懂,且與之前表格相比不增加任何人工錄入部分,現已在班組間順利推行。
(二)通過PI-Datalink計算函數計算有效時間的周發電煤耗
目前電廠SIS系統和綜合統計系統可以計算日、月、年的發電煤耗,但無法選擇其他時間段計算煤耗。而且一旦碰上開停機,系統則直接剔除開停機日,使其不參與煤耗的累計計算。而從統計分析的角度,開停機日耗煤率較大,反而更需要計入累計計算,統計分析出機組真實的煤耗水平。另外,系統模塊的計算周期太固定,無法滿足周例會或是突發事件時期的煤耗統計分析的需求。
現已建立通過PI計算函數計算周發電煤耗的統計表格,并且結合Excel中的IF函數,能比較精確地只剔除設定條件外小時段不參與煤耗計算。表4 周煤耗統計表顯示的是電廠2018年10月15日至10月21日的周發電煤耗計算表,期間2號機10月15日開機,1號機17日停機。
首行時間B3輸入“=TODAY()-7”,TODAY是實時日期函數含義是當前日期0時的7天前,這樣可以每日滾動計算前一周的平均煤耗,隨時進行監控和分析。A列是以每增加1小時為一次采集點,下一行時間單元格B4輸入“=B3+A4”,1號機發電量C3輸入“=PICalcDat($C$1,B3,B4,"1h","average",1,2,"10.2.8.163")”,取得1號機該一小時內發電量的平均值,1號機發電煤耗F3輸入“=PICalcDat($F$1,B3,B4,"1h","average",1,2,"10.2.8.163")”,取該小時對應發電煤耗的平均值,則1號機發電標煤量H3“=F3*C3”,若某臺機處于停機狀態時,其發電煤耗為無效數據不參與計算。啟停機過程中,負荷大于350MW方進入穩態,采集數據放能有效說明機組耗煤能力,故負荷值小于350的不參與計算。1號機周發電量C174輸入“=SUMIF(C3:C171,">350",C3:C171)”,含義是只取C列中大于350的值的和,1號機發電標煤量H174輸入“=SUMIF(C3:C171,">350",H3:H171)”,只取C列值大于350的行的H列值之和。D174、I174同理輸入,于是I176=(H174+I174)/E174得出該周全廠發電煤耗。
四、PI-Datalink使用中注意的問題
(一)表格中PI數據的刷新
(二)字符串參數的輸入
對于函數中要輸入的字符串參數,需要給它們加雙引號。例如表4中的L6=PIArcVal("SM_DA160922_MC_SW",K6,0,"10.2.8.163","auto"),KKS碼、獲取地址、輸出模式均是字符串參數,均需加上雙引號。如果將代碼和地址輸入單元后再引用,如時間戳值輸入K6,則直接鏈接即可,不再需要加引號。
(三)重要數據需用另一采集方式雙向驗證
在采集讀取重要數據,如電廠發電量通過PI函數采集讀取關口表表底數,計算取得的兩臺機組發電量,可以和SIS系統兩臺機組的均值負荷累計計算出的發電量進行相互比對,以防關口表的表計故障或通訊中斷。如SIS系統采集出錯,也可以以此反向驗證。同樣在目前電廠應用PI數據庫的統計報表中,還有通過化水石灰處理系統采集的補水量與岸邊泵房人工上報耗水量進行雙向驗證;通過發電煤耗、發電原煤耗反算的入爐煤熱值與化驗班所報送熱值雙向驗證等。
參考文獻:
吳志強,陳軍,朱云.基于VBA和PI-Datalink批量數據導出的設計和實現[J].企業技術開發,2013(Z3).
(作者單位:國華徐州發電有限公司)