劉鋼+劉馮洋
【摘要】 在回顧控制系統(tǒng)報(bào)警功能的基礎(chǔ)上上,綜合分析了基于Modbus的DCS數(shù)據(jù)通信、基于OPC的DCS數(shù)據(jù)通信和基于實(shí)時(shí)歷史數(shù)據(jù)庫(kù)的數(shù)據(jù)采集,給出了數(shù)據(jù)通信在火電廠語(yǔ)音報(bào)警系統(tǒng)中的應(yīng)用方法和實(shí)例。
【關(guān)鍵詞】 語(yǔ)音報(bào)警數(shù)據(jù)采集 ModbusOPC
一、引言
報(bào)警系統(tǒng)作為流程型生產(chǎn)企業(yè)安全生產(chǎn)不可或缺的重要環(huán)節(jié),是大型火電單元機(jī)組熱工自動(dòng)化控制、報(bào)警、監(jiān)測(cè)、保護(hù)的四大功能之一[1],也是火電廠運(yùn)行人員實(shí)際集中監(jiān)控過(guò)程中依賴程度很高的重要系統(tǒng)。國(guó)內(nèi)外的主要分散控制系統(tǒng)(DCS)中均設(shè)置了專門的報(bào)警模塊,但DCS中的報(bào)警模塊一般采用顯示器或光字牌等形式實(shí)現(xiàn),這類實(shí)現(xiàn)方式對(duì)運(yùn)行人員的主動(dòng)性要求較高,即使通過(guò)聲音方式進(jìn)行提醒,也往往是單一的警示聲,這并不利于運(yùn)行人員快速發(fā)現(xiàn)異常并定位異常位置進(jìn)而快速確認(rèn)報(bào)警進(jìn)行下一步工作,因此在傳統(tǒng)的DCS系統(tǒng)之外,需要加裝專門的語(yǔ)音報(bào)警系統(tǒng)以語(yǔ)音的方式明確地播報(bào)報(bào)警類型[2-3]。DCS是火電廠信息化框架中的底層現(xiàn)場(chǎng)數(shù)據(jù)來(lái)源,以外加裝置形式存在的語(yǔ)音報(bào)警系統(tǒng)需要通過(guò)數(shù)據(jù)通信的方式從DCS(或輔控等其它主要控制系統(tǒng))中獲取生產(chǎn)數(shù)據(jù)并進(jìn)行處理,本文主要討論火電廠1000MW機(jī)組DCS加裝語(yǔ)音報(bào)警系統(tǒng)中的數(shù)據(jù)通信問(wèn)題。
二、基于Modbus的DCS數(shù)據(jù)通信
Modbus是由Modicon提出并實(shí)現(xiàn)的工業(yè)現(xiàn)場(chǎng)總線協(xié)議,是各家DCS生產(chǎn)廠商均支持的通用工業(yè)標(biāo)準(zhǔn),因此Modbus是從DCS進(jìn)行數(shù)據(jù)采集的首選通信方式。若語(yǔ)音報(bào)警系統(tǒng)設(shè)置在電子間或工程師站,距離作為通信站的DCS控制站較近,一般采用基于串行異步通信的Modbus協(xié)議,如果距離較遠(yuǎn),則可采用基于TCP/IP協(xié)議棧的Modbus-TCP協(xié)議,本文重點(diǎn)討論基于串口的情況。
標(biāo)準(zhǔn)Modbus端口采用的是定義了連接器、連接電纜、波特率、基本校驗(yàn)方法、信號(hào)等級(jí)的RS232兼容串口,Modbus控制器使用“主-從”模式進(jìn)行通信的,即主站以查詢方式主動(dòng)發(fā)起數(shù)據(jù)連接,從站根據(jù)現(xiàn)場(chǎng)情況和主站指令進(jìn)行響應(yīng)。在語(yǔ)音報(bào)警系統(tǒng)的數(shù)據(jù)采集過(guò)程中,語(yǔ)音報(bào)警系統(tǒng)的數(shù)據(jù)采集程序以主站方式存在,DCS通信模件以從站的方式存在,通信的發(fā)起是由語(yǔ)音報(bào)警系統(tǒng)發(fā)起的。
由于DCS中的Modbus模件采用的通訊模式是RTU(遠(yuǎn)程終端單元),因此語(yǔ)音報(bào)警系統(tǒng)主要采用RTU方式進(jìn)行通信,典型的Modbus信息幀如圖1所示。其中ADU是應(yīng)用數(shù)據(jù)單元,PDU是協(xié)議數(shù)據(jù)單元[4]。
根據(jù)以上分析,可知基于Modbus的數(shù)據(jù)采集過(guò)程,如圖2所示。
為了確保DCS中報(bào)警信息與語(yǔ)音報(bào)警系統(tǒng)中報(bào)警信息的一致性,語(yǔ)音報(bào)警系統(tǒng)僅從DCS中獲取開關(guān)量(線圈狀態(tài))而不是獲取模擬量進(jìn)行比對(duì),因此,整個(gè)通訊過(guò)程僅需要使用功能碼“01”讀線圈狀態(tài)。當(dāng)DCS從站地址為1時(shí),典型的請(qǐng)求指令(請(qǐng)求起始地址為1的16個(gè)數(shù)據(jù)點(diǎn))和回應(yīng)指令如圖3所示。
三、基于OPC的DCS數(shù)據(jù)通信
OPC是基于微軟DCOM實(shí)現(xiàn)的工業(yè)通信標(biāo)準(zhǔn),一般由DCS實(shí)現(xiàn)OPC服務(wù)器并通過(guò)專門內(nèi)部協(xié)議與OPC服務(wù)器進(jìn)行通信,客戶端通過(guò)OPC服務(wù)器獲取現(xiàn)場(chǎng)數(shù)據(jù)。在語(yǔ)音報(bào)警系統(tǒng)中實(shí)現(xiàn)OPC客戶端即可完成現(xiàn)場(chǎng)數(shù)據(jù)采集。在編制OPC客戶端時(shí),首先實(shí)現(xiàn)OPC對(duì)象,由此靠右使用OPC對(duì)象的各類屬性和方法[5],典型的OPC服務(wù)器對(duì)象如圖4所示。
典型的訪問(wèn)OPC服務(wù)器數(shù)據(jù)代碼如下(以C#為例):
//建立OPC服務(wù)器
pIOPCServer = (IOPCServer)Activator.CreateInstance(svrCo mponenttyp);
//建立OPC組
p I O P C S e r v e r . A d d G r o u p ( G R O U P _ N A M E , 0 , d w R e q u e s t e d U p d a t e R a t e , h C l i e n t G r o u p , h T i m e B i a s . A d d r O f P i n n e d O b j e c t ( ) , h D e a d b a n d . AddrOfPinnedObject(),LOCALE_ID, out pSvrGroupHandle, out pRevUpdateRate, ref iidRequiredInterface, out pobjGroup1);
//定義OPC點(diǎn)并進(jìn)行初始化,初始化內(nèi)容包括:szItemID、hClient、bActive、dwBlobSize
OPCITEMDEF opcitem = new OPCITEMDEF();
//添加數(shù)據(jù)點(diǎn)
((IOPCItemMgt)pobjGroup1).AddItems(LO.Count, ItemDeffArray, out pResults, out pErrors);
//讀取數(shù)據(jù)值
OPCITEMRESULT result = (OPCITEMRESULT)Marshal. PtrToStructure(pos, typeof(OPCITEMRESULT));
四、基于實(shí)時(shí)歷史數(shù)據(jù)庫(kù)應(yīng)用開發(fā)接口的數(shù)據(jù)通信
在諸如DCS負(fù)荷較高、DCS通信模件不足等情況下,需要從SIS(廠級(jí)監(jiān)控信息系統(tǒng))中間接獲取現(xiàn)場(chǎng)數(shù)據(jù)。SIS中一般采用諸如PI、eDNA等實(shí)時(shí)歷史數(shù)據(jù)庫(kù)作為核心,通過(guò)這些實(shí)時(shí)歷史數(shù)據(jù)庫(kù)提供的API(應(yīng)用開發(fā)接口)可獲取數(shù)據(jù)。
對(duì)于eDNA數(shù)據(jù)庫(kù),一般采用DNAGetRTValue方法獲取實(shí)時(shí)值。該函數(shù)的原型為:
IntWINAPI DNAGetRTValue(const char *szPoint,double*pdValue);
在使用時(shí)打包為C#函數(shù)
[DllImport(“ezdnaapi.dll”,EntryPoint=”DNAGetRTVal ue”)]
Public static extern intDNAGetRTValue(string szPoint,ref double pdValue);
其中szPoint是要獲取數(shù)據(jù)點(diǎn)的點(diǎn)名,通過(guò)對(duì)報(bào)警點(diǎn)表循環(huán)調(diào)用該函數(shù),即可獲取各個(gè)開關(guān)量的狀態(tài),從而進(jìn)行報(bào)警。
對(duì)于PI數(shù)據(jù)庫(kù),可以選擇使用PI-SDK進(jìn)行訪問(wèn),一般的訪問(wèn)步驟包括:
1)連接到PI
PISDK.IPISDK piSDK= new PISDK.PISDKClass();
PISDKDlg.ConnectionspiConn=new PISDKDlg. ConnectionsClass();
PISDK.ServerpiServer;
piServer=piSDK.Servers[“192.168.103.101”];
piConn.Login(ref piServer,refUID,refPWD,true,false);
2)讀取數(shù)據(jù)
PISDK.PIPointpiPoint;
piPoint=piServer.PIPoints[“TagName”];
piTagValue=Convert.ToDouble(piPoint.Data.Snapshot.Value);
五、現(xiàn)場(chǎng)應(yīng)用
以上對(duì)語(yǔ)音報(bào)警系統(tǒng)中現(xiàn)場(chǎng)數(shù)據(jù)采集常用方法進(jìn)行了分析,在實(shí)際應(yīng)用中需要根據(jù)現(xiàn)場(chǎng)實(shí)際情況進(jìn)行分析。以平圩電廠三期2*1000MW機(jī)組工程為例,該工程采用Ovation作為DCS,以DCS為監(jiān)控核心,實(shí)現(xiàn)對(duì)單元機(jī)組機(jī)、爐、電集中控制。Ovation按照開放式網(wǎng)絡(luò)標(biāo)準(zhǔn)建立了整套工業(yè)系統(tǒng)[6],在設(shè)計(jì)期加裝了Mobus串口通信模件并提供了開放的工業(yè)化通信環(huán)境,因此在該工程中采用Modbus與DCS進(jìn)行通信,通信數(shù)據(jù)點(diǎn)每臺(tái)機(jī)組232個(gè),其中備用點(diǎn)80個(gè),數(shù)據(jù)點(diǎn)涵蓋了電力生產(chǎn)的各個(gè)重要環(huán)節(jié),通信速度可以達(dá)到每秒1000點(diǎn)次,完全可以滿足語(yǔ)音報(bào)警的數(shù)據(jù)要求。
參 考 文 獻(xiàn)
[1]黃勇. 火電廠熱工自動(dòng)化的安全系統(tǒng)研究[J]. 硅谷,2011,20:81.
[2]李延華.1000MW機(jī)組熱控自動(dòng)化設(shè)計(jì)方案探討[J].中國(guó)高新技術(shù)企業(yè),2013,36:49-51.
[3]王君宇,王明春.電廠新型語(yǔ)音報(bào)警系統(tǒng)的研究和開發(fā)[J].發(fā)電設(shè)備,2014,06:421-423+427.
[4] 于樹新,戴毅姜,周黎輝,陳潔.Modbus協(xié)議在DCS通信中的應(yīng)用[J].儀器儀表與分析監(jiān)測(cè),2007,01:1-2+6.
[5] 劉志強(qiáng).OPC數(shù)據(jù)存取服務(wù)器和客戶端的研究與設(shè)計(jì)[D].內(nèi)蒙古大學(xué),2011.
[6] 李濱.OVATION控制系統(tǒng)在1000MW超超臨界機(jī)組的應(yīng)用[J].華東電力,2012,08:1452-1455.