楊龍 杜鑫 陳明明 王敏
摘 要:本文介紹了萊鋼通過計算機網絡構成的能源管理與遠程控制系統(簡稱EMS系統)。主要對事務存儲過程在EMS中的應用作了闡述,并用實例說明了利用存儲過程簡單化解決復雜事務問題,提高系統分析處理速度和安全性的技術,提高軟件開發水平。
關鍵詞:事務存儲過程;能源管理;信息化
前言
根據《鋼鐵企業能源管理中心建設實施方案》 (工信部節[2009]365號) 、 《關于發布〈鋼鐵企業能源管控信息系統建設指導意見〉的通知》 (鋼協[2010]128 號)文件要求,為加快推進工業化和信息化融合,加大節能技術改造力度,對能源生產、輸配和消耗實施動態監控和管理,改進和優化能源平衡,實現系統性節能降耗,萊蕪鋼鐵集團有限公司決定建設符合萊鋼特色的能源管理中心。
數據作為整個系統的重要因素,在后期的能源平衡分析、報表、決策支持都起到至關重要的作用。但是如何能夠保證數據的準確性、可靠性、穩定性,提高系統的響應速度,是系統實施過程中一個亟待解決的問題。
1 原有的解決辦法
通常系統開發人員多是通過定時器或者線程控制去進行采集數據與分析數據,并將分析后的結果寫入數據庫中進行保存,一旦采集的點多,數據量大,并發性處理將會影響到系統的。一旦一些處理機制沒有處理得當,會出現部分采集點的數據無法上傳,造成數據準確性下降,質量不高等現象。如果關鍵點的數據采集不上來,可能會造成能源平衡分析的延后,甚至無法準確的提供領導決策的依據,造成嚴重的生產事故。
2 技術準備
現代軟件的設計倡導將用戶界面、業務邏輯、數據相分離的設計原則。這樣便于對程序功能維護和移植。考慮到存儲過程具有以下四個優點:
(1)減少網絡通信量。調用一個行數不多的存儲過程與直接調用SQL語句的網絡通信量可能不會有很大的差別,可是如果存儲過程包含上百行SQL語句,那么其性能絕對比一條一條的調用SQL語句要高得多。
(2)執行速度更快。有兩個原因:首先,在存儲過程創建的時候,數據庫已經對其進行了一次解析和優化。其次,存儲過程一旦執行,在內存中就會保留一份這個存儲過程,這樣下次再執行同樣的存儲過程時,可以從內存中直接調用。
(3)更強的適應性:由于存儲過程對數據庫的訪問是通過存儲過程來進行的,因此數據庫開發人員可以在不改動存儲過程接口的情況下對數據庫進行任何改動,而這些改動不會對應用程序造成影響。
(4)布式工作:應用程序和數據庫的編碼工作可以分別獨立進行,而不會相互壓制。
因此決定采用存儲過程的方式對采集上來的數據進行分析匯總,并將分析匯總后的數據及時寫入數據庫里,為后期的平衡分析、報表等提供有力的依據。
3 存儲過程在EMS中的應用
了解到存儲過程的優點,針對目前系統進行數據采集和處理的現狀,我們將設計思路分兩部分:
一部分將老的能源管理系統中采集上來的數據通過分解拆包,保存在EMS系統數據庫中,主要針對現場正在生產,不宜進行更換的儀表(主要是支持RS-485通訊標準的二次儀表),為EMS系統做補充使用,同時對于一些比較重要的采集點,可能既有二次表又有PLC等采集的,我們將EMS與老能源管理系統進行比對,給能源計量包括決策者一個數據比對分析使用。
具體的處理方法是:
(1)在數據緩存服務器的數據庫中創建t_gzzybdz表,存放的是需要采集的能源管理系統點的地址編號;
(2)從三臺不同的服務器進行數據采集匯總保存在t_shuju表中;
(3)介質為水和氣體的溫度、瞬時流量、壓力、差壓、累計值,介質為電的正向峰平谷值、反向峰平谷值、正向有功、反向有功,正向無功,反向無功等數據通過橫向、縱向的拆分事務存儲過程的處理,上傳至EMS數據庫服務器中。便于系統進行平衡分析和報表等系統使用。
另外一部分是將kpware軟件采集了部分通過PLC上傳上來的數據,已經保存在EMS數據庫服務器中,我們也是通過配置好的數據采集點的對照關系,將每個采集周期(通常是300ms一次)數據經過橫向、縱向的組合、打包、事務存儲過程的處理。
具體的處理方法是:
(1)在數據緩存服務器中設置t_cedian表,保存的是需要從EMS匯聚層采集的數據點的Tag名稱;
(2)將通過Modbus 、DTU等方式采集的數據進行高位與低位的計算處理、消除部分噪聲數據處理、壓縮處理等三大事務存儲過程處理后,匯總至數據緩存服務器的t_ybztmp表,并對該表的數據進行后期的挖掘處理,將最后的處理結果存放至數據服務器中,必要時進行同期數據比較支持熱線生產、能源調配使用,為生產做決策依據。
代碼如下:
select distinct gzz,ybdz ,CONVERT( varchar(19 ),@sj, 121),'1' ,dwmc, cdmc,jzmc ,CONVERT( varchar(19 ),@sj, 121),isnull (lldwsd, ''),isnull (yldwsd, ''),isnull (llbz, ''),isnull (max( case cdjz when '流量' then ItemValue end ),0) [流量] ,0,isnull(max (case cdjz when '壓力' then ItemValue end),0 )[壓力] ,
isnull(max (case cdjz when '溫度' then ItemValue end),0 )溫度,0 ,'',case rsj when 'EMS' then isnull(max (case cdjz when '累計流量高位' then ItemValue end),0 )*100+isnull(max (case cdjz when '累計流量低位' then ItemValue end),0 )else isnull(max (case cdjz when '累積流量' then ItemValue end),0 ) end [累積流量],ybdz,'',CONVERT( varchar(19 ),@sj, 121) from (select gzz,ybdz ,ItemTime, ItemState,dwmc ,cdmc, jzmc,lldwsd ,yldwsd, llbz,ItemValue ,cdjz,rsj from (select ROW_NUMBER() OVER( PARTITION BY ems.ItemName ORDER BY ems.ItemTime DESC)lev ,yb.gzz,yb.ybdz, ems.ItemTime ,ems.ItemState,yb.dwmc,
yb.cdmc ,yb.jzmc,yb .lldwsd, yb.yldwsd,yb.llbz,ems.ItemValue,cd.cdjz,rsj from NY_OPCITems_test ems, cedian cd ,yb where cd.cdmc =ems.ItemName and ems. ItemTime <= @sj and cd.lgnyw is not null and cd .lgnyw= CAST(yb .gzz as varchar(10 ))+'-'+ CAST(yb .ybdz as varchar (10)) )as tempp WHERE LEV = 1 ) as ttt group by gzz,ybdz ,ItemState, dwmc,cdmc ,jzmc, lldwsd,yldwsd ,llbz,rsj order by gzz,ttt.ybdz
經過用戶使用測算,采用存儲過程的方式進行數據采集能夠大大減少了數據的冗余,節省了磁盤空間。同時通過使用,一分鐘處理大約3800多個數據點,16秒的時間即可完成三大并發事務存儲過程的處理,大大縮短了數據的處理時間,提高了系統的可用性和現場數據的一致性。
5 結束語
通過本次應用可以減少數據庫開發人員的工作量,節約開發和管理的成本。通過數據庫的權限和用戶設定,提高數據的安全性,并且提供了高效的數據存取,穩定的事務管理,降低網絡的通信量,提高了數據的質量,保證了現場數據的實時穩定性,為萊鋼今后的生產提供了重要的能源數據支持。