趙子龍,李 妮,周衛(wèi)斌,游國(guó)棟
(天津科技大學(xué),天津 300222)
全球能源日益枯竭,環(huán)境污染問題逐步凸顯,可持續(xù)能源的開發(fā)、利用尤為重要,其中以風(fēng)能為代表的風(fēng)力發(fā)電技術(shù)越來越受到世界各國(guó)的高度關(guān)注。為了能夠高效、靈活地應(yīng)用風(fēng)能資源發(fā)電,使風(fēng)電機(jī)組穩(wěn)定可靠運(yùn)行,考慮采用風(fēng)電場(chǎng)監(jiān)控與數(shù)據(jù)采集(SCADA)系統(tǒng)解決該問題。系統(tǒng)主要對(duì)現(xiàn)場(chǎng)數(shù)據(jù)實(shí)時(shí)采集、調(diào)節(jié)運(yùn)行參數(shù)、查詢歷史數(shù)據(jù)以及故障報(bào)警。目前我國(guó)風(fēng)電場(chǎng)SCADA系統(tǒng)的底層PLC監(jiān)控普遍采用國(guó)際標(biāo)準(zhǔn)OPC協(xié)議進(jìn)行通信,該技術(shù)的應(yīng)用在很大程度上解決了各工控PLC廠家之間通信難的問題。但是隨著工業(yè)監(jiān)控領(lǐng)域的發(fā)展,OPC的應(yīng)用只局限于本地局域網(wǎng),無法通過防火墻、不支持互聯(lián)網(wǎng)通信的弊病越發(fā)明顯[1]。本文重點(diǎn)分析了OPC XML-DA通信協(xié)議的開發(fā),將其應(yīng)用到SCADA系統(tǒng)中以實(shí)現(xiàn)可靠的遠(yuǎn)程通信,解決現(xiàn)有SCADA系統(tǒng)中OPC通信協(xié)議無法與互聯(lián)網(wǎng)連接的弊病。
隨著工業(yè)信息技術(shù)的發(fā)展,傳統(tǒng)工業(yè)控制系統(tǒng)中不同廠家的非標(biāo)準(zhǔn)通信方式導(dǎo)致系統(tǒng)的可靠性、穩(wěn)定性及擴(kuò)展性較差,不利于系統(tǒng)的后期拓展及維護(hù),阻礙了工控行業(yè)的自動(dòng)化、智能化發(fā)展。為了解決軟硬件設(shè)備之間的數(shù)據(jù)接口問題,OPC技術(shù)隨之產(chǎn)生。它將OPC客戶與服務(wù)器在物理上分開,減少硬件制造商和軟件開發(fā)商之間的依賴,極大地提高了雙方的工作效率;有效解決了工控行業(yè)復(fù)雜驅(qū)動(dòng)程序造成的數(shù)據(jù)接口問題,減少資源浪費(fèi),提升通信質(zhì)量等[2]。
由于OPC DA技術(shù)不能滿足互聯(lián)網(wǎng)遠(yuǎn)程監(jiān)控的需求,故OPC基金會(huì)推出OPC XML-DA規(guī)范著重解決OPC DA技術(shù)的集成性、通用性和開放性等問題。OPC XML規(guī)范根據(jù)Web Service整體概念,將OPC應(yīng)用擴(kuò)展到互聯(lián)網(wǎng),使得企業(yè)能夠通過Internet發(fā)布OPC通信指令,為解決系統(tǒng)不能通過防火墻,僅限于本地局域網(wǎng)的問題提供了研究方向,從而高效實(shí)時(shí)地進(jìn)行通信調(diào)度。
傳統(tǒng)的風(fēng)電場(chǎng)監(jiān)控系統(tǒng)由于采用OPC DA技術(shù),故不支持互聯(lián)網(wǎng)通信,僅局限于本地局域網(wǎng)。因此,本文針對(duì)風(fēng)電場(chǎng)監(jiān)控需求,提出采用基于OPC XML-DA技術(shù)的遠(yuǎn)程監(jiān)控系統(tǒng),并且介紹了OPC XML-DA服務(wù)器及客戶端的具體組成。
實(shí)現(xiàn)風(fēng)電場(chǎng)的遠(yuǎn)程在線監(jiān)控,關(guān)鍵是設(shè)計(jì)一個(gè)OPC XML-DA服務(wù)器,即在OPC DA服務(wù)器的基礎(chǔ)上進(jìn)行二次開發(fā),通過一個(gè)XML封裝器,將工控設(shè)備中已有的OPC DA服務(wù)器XML化,使系統(tǒng)在保持較高性能的同時(shí)滿足跨平臺(tái)集成的要求,并通過Internet傳遞數(shù)據(jù)[4]。
OPC XML-DA服務(wù)器與OPC DA服務(wù)器組成基本相同,由服務(wù)器對(duì)象(Server)、組對(duì)象(Group)和項(xiàng)對(duì)象(Item)組成。其中服務(wù)器對(duì)象提供數(shù)據(jù)源以及數(shù)據(jù)源訪問的方法,可以動(dòng)態(tài)的創(chuàng)建或釋放組對(duì)象,由一個(gè)或多個(gè)OPC組對(duì)象及OPC瀏覽器對(duì)象組成。OPC組對(duì)象通過OPC項(xiàng)對(duì)象的集合進(jìn)行數(shù)據(jù)訪問,滿足OPC應(yīng)用程序要求的數(shù)據(jù)訪問方式,由一個(gè)或多個(gè)OPC項(xiàng)對(duì)象組成[5]。其中OPC服務(wù)器的框架結(jié)構(gòu)如圖1所示。
圖1 OPCDA服務(wù)器的框架結(jié)構(gòu)圖
OPC XML-DA服務(wù)器支持8種服務(wù),具體類型有:Browse、Get Properties、Get Status、Read、Write、Subscribe、Subscription Cancel和Subscription Polled Refresh。
根據(jù)風(fēng)電場(chǎng)監(jiān)控系統(tǒng)的實(shí)際需求分析,OPC XML-DA客戶端可以對(duì)OPC XML-DA規(guī)定的8項(xiàng)基本服務(wù)進(jìn)行管理操作,此外還具有報(bào)警、報(bào)表、曲線顯示等功能。
實(shí)現(xiàn)瀏覽OPC服務(wù)器的步驟包括:創(chuàng)建瀏覽器對(duì)象,通過該對(duì)象的接口獲得OPC服務(wù)器名稱列表,再添加OPC組對(duì)象及項(xiàng)對(duì)象,進(jìn)行數(shù)據(jù)交換。讀取標(biāo)簽數(shù)據(jù)。其具體實(shí)現(xiàn)過程如下:
(1)創(chuàng)建一個(gè)接口對(duì)象
Opc.IDiscovery discover=new OpcCom.ServerEnumerator();
(2)創(chuàng)建一個(gè)服務(wù)器對(duì)象,并實(shí)例化
Opc.Server[] servers=discover.GetAvailableServers(Specification.COM_DA_20, Dns.GetHostName(), null);
(3)連接服務(wù)器
KepServer.Connect();
(4)向服務(wù)器添加一個(gè)OPC組對(duì)象
registeredGroup=(Opc.Da.Subscription)KepServer.CreateSubscription(state);
(5)創(chuàng)建數(shù)據(jù)項(xiàng)item數(shù)組對(duì)象
Item[] items=new Item[ItemNum];
(6)向OPC組對(duì)象中添加OPC數(shù)據(jù)項(xiàng)item對(duì)象
registeredGroup.AddItems(items);
(7)讀取kep組中的數(shù)據(jù)
public void ReadItemValue()
{
ItemValueResult[] values=registeredGroup.Read(registeredGroup.Items);
foreach (ItemValueResult item in values)
{
if (item.Quality=Quality.Good)
{
DataDic[item.ItemName].DataQuality=true;
DataDic[item.ItemName].DataValue=System.Convert.ToInt32(item.Value);
}
else
{
DataDic[item.ItemName].DataQuality=false;
}
}
}
(8)寫入kep組中的數(shù)據(jù)
public void WriteItemValue()
{
int writeNum=0;
foreach (ItemDataClass itemData in DataDic.Values)
{
if (itemData.WriteOnce)
writeNum++;
}
if (writeNum > 0)
{
int tempcount=0;
ItemValue[] itemValue=new ItemValue[writeNum];
foreach (ItemDataClass itemData in DataDic.Values)
{
if (itemData.WriteOnce)
{
itemValue[tempcount]=new ItemValue(itemData.DataItem);
itemValue[tempcount++].Value=itemData.DataValue;
itemData.WriteOnce=false;
}
}
registeredGroup.Write(itemValue);
}
}
}
(9)斷開服務(wù)器連接
KepConnected=false;
本文簡(jiǎn)要介紹了OPC XML技術(shù)及其實(shí)際應(yīng)用。工業(yè)現(xiàn)場(chǎng)設(shè)備可以通過開發(fā)OPC XML-DA服務(wù)器和OPC XML-DA客戶端實(shí)現(xiàn)企業(yè)的互聯(lián)網(wǎng)在線監(jiān)控,結(jié)合本地局域網(wǎng)監(jiān)控,實(shí)現(xiàn)線上、線下雙重監(jiān)控,提高了監(jiān)控質(zhì)量和管理效率,使系統(tǒng)高效、經(jīng)濟(jì)、安全的運(yùn)行。
參考文獻(xiàn):
[1]宋國(guó)輝.基于OPC XML-DA技術(shù)及.NET平臺(tái)的遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[D].蘭州:蘭州理工大學(xué), 2012.
[2]王華忠.監(jiān)控與數(shù)據(jù)采集(SCADA)系統(tǒng)及其應(yīng)用(第二版)[M].北京:電子工業(yè)出版社, 2010.
[3]盧建剛,方弢,許鋒,王智,孫優(yōu)賢.基于XM L技術(shù)的分布式現(xiàn)場(chǎng)總線遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].信息與控制, 2004,05(33):609-613.
[4]戚中奎,林果園,孫統(tǒng)風(fēng).OPC數(shù)據(jù)訪問服務(wù)器的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì), 2011,04(32):1517-1520.
[5]馬亮,張志鴻.OPC DA服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息, 2008,09(24):228-230.