楊龍 杜鑫 陳明明 王敏
摘 要:本文介紹了萊鋼通過計算機(jī)網(wǎng)絡(luò)構(gòu)成的能源管理與遠(yuǎn)程控制系統(tǒng)(簡稱EMS系統(tǒng))。主要對事務(wù)存儲過程在EMS中的應(yīng)用作了闡述,并用實(shí)例說明了利用存儲過程簡單化解決復(fù)雜事務(wù)問題,提高系統(tǒng)分析處理速度和安全性的技術(shù),提高軟件開發(fā)水平。
關(guān)鍵詞:事務(wù)存儲過程;能源管理;信息化
前言
根據(jù)《鋼鐵企業(yè)能源管理中心建設(shè)實(shí)施方案》 (工信部節(jié)[2009]365號) 、 《關(guān)于發(fā)布〈鋼鐵企業(yè)能源管控信息系統(tǒng)建設(shè)指導(dǎo)意見〉的通知》 (鋼協(xié)[2010]128 號)文件要求,為加快推進(jìn)工業(yè)化和信息化融合,加大節(jié)能技術(shù)改造力度,對能源生產(chǎn)、輸配和消耗實(shí)施動態(tài)監(jiān)控和管理,改進(jìn)和優(yōu)化能源平衡,實(shí)現(xiàn)系統(tǒng)性節(jié)能降耗,萊蕪鋼鐵集團(tuán)有限公司決定建設(shè)符合萊鋼特色的能源管理中心。
數(shù)據(jù)作為整個系統(tǒng)的重要因素,在后期的能源平衡分析、報表、決策支持都起到至關(guān)重要的作用。但是如何能夠保證數(shù)據(jù)的準(zhǔn)確性、可靠性、穩(wěn)定性,提高系統(tǒng)的響應(yīng)速度,是系統(tǒng)實(shí)施過程中一個亟待解決的問題。
1 原有的解決辦法
通常系統(tǒng)開發(fā)人員多是通過定時器或者線程控制去進(jìn)行采集數(shù)據(jù)與分析數(shù)據(jù),并將分析后的結(jié)果寫入數(shù)據(jù)庫中進(jìn)行保存,一旦采集的點(diǎn)多,數(shù)據(jù)量大,并發(fā)性處理將會影響到系統(tǒng)的。一旦一些處理機(jī)制沒有處理得當(dāng),會出現(xiàn)部分采集點(diǎn)的數(shù)據(jù)無法上傳,造成數(shù)據(jù)準(zhǔn)確性下降,質(zhì)量不高等現(xiàn)象。如果關(guān)鍵點(diǎn)的數(shù)據(jù)采集不上來,可能會造成能源平衡分析的延后,甚至無法準(zhǔn)確的提供領(lǐng)導(dǎo)決策的依據(jù),造成嚴(yán)重的生產(chǎn)事故。
2 技術(shù)準(zhǔn)備
現(xiàn)代軟件的設(shè)計倡導(dǎo)將用戶界面、業(yè)務(wù)邏輯、數(shù)據(jù)相分離的設(shè)計原則。這樣便于對程序功能維護(hù)和移植??紤]到存儲過程具有以下四個優(yōu)點(diǎn):
(1)減少網(wǎng)絡(luò)通信量。調(diào)用一個行數(shù)不多的存儲過程與直接調(diào)用SQL語句的網(wǎng)絡(luò)通信量可能不會有很大的差別,可是如果存儲過程包含上百行SQL語句,那么其性能絕對比一條一條的調(diào)用SQL語句要高得多。
(2)執(zhí)行速度更快。有兩個原因:首先,在存儲過程創(chuàng)建的時候,數(shù)據(jù)庫已經(jīng)對其進(jìn)行了一次解析和優(yōu)化。其次,存儲過程一旦執(zhí)行,在內(nèi)存中就會保留一份這個存儲過程,這樣下次再執(zhí)行同樣的存儲過程時,可以從內(nèi)存中直接調(diào)用。
(3)更強(qiáng)的適應(yīng)性:由于存儲過程對數(shù)據(jù)庫的訪問是通過存儲過程來進(jìn)行的,因此數(shù)據(jù)庫開發(fā)人員可以在不改動存儲過程接口的情況下對數(shù)據(jù)庫進(jìn)行任何改動,而這些改動不會對應(yīng)用程序造成影響。
(4)布式工作:應(yīng)用程序和數(shù)據(jù)庫的編碼工作可以分別獨(dú)立進(jìn)行,而不會相互壓制。
因此決定采用存儲過程的方式對采集上來的數(shù)據(jù)進(jìn)行分析匯總,并將分析匯總后的數(shù)據(jù)及時寫入數(shù)據(jù)庫里,為后期的平衡分析、報表等提供有力的依據(jù)。
3 存儲過程在EMS中的應(yīng)用
了解到存儲過程的優(yōu)點(diǎn),針對目前系統(tǒng)進(jìn)行數(shù)據(jù)采集和處理的現(xiàn)狀,我們將設(shè)計思路分兩部分:
一部分將老的能源管理系統(tǒng)中采集上來的數(shù)據(jù)通過分解拆包,保存在EMS系統(tǒng)數(shù)據(jù)庫中,主要針對現(xiàn)場正在生產(chǎn),不宜進(jìn)行更換的儀表(主要是支持RS-485通訊標(biāo)準(zhǔn)的二次儀表),為EMS系統(tǒng)做補(bǔ)充使用,同時對于一些比較重要的采集點(diǎn),可能既有二次表又有PLC等采集的,我們將EMS與老能源管理系統(tǒng)進(jìn)行比對,給能源計量包括決策者一個數(shù)據(jù)比對分析使用。
具體的處理方法是:
(1)在數(shù)據(jù)緩存服務(wù)器的數(shù)據(jù)庫中創(chuàng)建t_gzzybdz表,存放的是需要采集的能源管理系統(tǒng)點(diǎn)的地址編號;
(2)從三臺不同的服務(wù)器進(jìn)行數(shù)據(jù)采集匯總保存在t_shuju表中;
(3)介質(zhì)為水和氣體的溫度、瞬時流量、壓力、差壓、累計值,介質(zhì)為電的正向峰平谷值、反向峰平谷值、正向有功、反向有功,正向無功,反向無功等數(shù)據(jù)通過橫向、縱向的拆分事務(wù)存儲過程的處理,上傳至EMS數(shù)據(jù)庫服務(wù)器中。便于系統(tǒng)進(jìn)行平衡分析和報表等系統(tǒng)使用。
另外一部分是將kpware軟件采集了部分通過PLC上傳上來的數(shù)據(jù),已經(jīng)保存在EMS數(shù)據(jù)庫服務(wù)器中,我們也是通過配置好的數(shù)據(jù)采集點(diǎn)的對照關(guān)系,將每個采集周期(通常是300ms一次)數(shù)據(jù)經(jīng)過橫向、縱向的組合、打包、事務(wù)存儲過程的處理。
具體的處理方法是:
(1)在數(shù)據(jù)緩存服務(wù)器中設(shè)置t_cedian表,保存的是需要從EMS匯聚層采集的數(shù)據(jù)點(diǎn)的Tag名稱;
(2)將通過Modbus 、DTU等方式采集的數(shù)據(jù)進(jìn)行高位與低位的計算處理、消除部分噪聲數(shù)據(jù)處理、壓縮處理等三大事務(wù)存儲過程處理后,匯總至數(shù)據(jù)緩存服務(wù)器的t_ybztmp表,并對該表的數(shù)據(jù)進(jìn)行后期的挖掘處理,將最后的處理結(jié)果存放至數(shù)據(jù)服務(wù)器中,必要時進(jìn)行同期數(shù)據(jù)比較支持熱線生產(chǎn)、能源調(diào)配使用,為生產(chǎn)做決策依據(jù)。
代碼如下:
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
經(jīng)過用戶使用測算,采用存儲過程的方式進(jìn)行數(shù)據(jù)采集能夠大大減少了數(shù)據(jù)的冗余,節(jié)省了磁盤空間。同時通過使用,一分鐘處理大約3800多個數(shù)據(jù)點(diǎn),16秒的時間即可完成三大并發(fā)事務(wù)存儲過程的處理,大大縮短了數(shù)據(jù)的處理時間,提高了系統(tǒng)的可用性和現(xiàn)場數(shù)據(jù)的一致性。
5 結(jié)束語
通過本次應(yīng)用可以減少數(shù)據(jù)庫開發(fā)人員的工作量,節(jié)約開發(fā)和管理的成本。通過數(shù)據(jù)庫的權(quán)限和用戶設(shè)定,提高數(shù)據(jù)的安全性,并且提供了高效的數(shù)據(jù)存取,穩(wěn)定的事務(wù)管理,降低網(wǎng)絡(luò)的通信量,提高了數(shù)據(jù)的質(zhì)量,保證了現(xiàn)場數(shù)據(jù)的實(shí)時穩(wěn)定性,為萊鋼今后的生產(chǎn)提供了重要的能源數(shù)據(jù)支持。