趙子龍,李 妮,周衛斌,游國棟
(天津科技大學,天津 300222)
全球能源日益枯竭,環境污染問題逐步凸顯,可持續能源的開發、利用尤為重要,其中以風能為代表的風力發電技術越來越受到世界各國的高度關注。為了能夠高效、靈活地應用風能資源發電,使風電機組穩定可靠運行,考慮采用風電場監控與數據采集(SCADA)系統解決該問題。系統主要對現場數據實時采集、調節運行參數、查詢歷史數據以及故障報警。目前我國風電場SCADA系統的底層PLC監控普遍采用國際標準OPC協議進行通信,該技術的應用在很大程度上解決了各工控PLC廠家之間通信難的問題。但是隨著工業監控領域的發展,OPC的應用只局限于本地局域網,無法通過防火墻、不支持互聯網通信的弊病越發明顯[1]。本文重點分析了OPC XML-DA通信協議的開發,將其應用到SCADA系統中以實現可靠的遠程通信,解決現有SCADA系統中OPC通信協議無法與互聯網連接的弊病。
隨著工業信息技術的發展,傳統工業控制系統中不同廠家的非標準通信方式導致系統的可靠性、穩定性及擴展性較差,不利于系統的后期拓展及維護,阻礙了工控行業的自動化、智能化發展。為了解決軟硬件設備之間的數據接口問題,OPC技術隨之產生。它將OPC客戶與服務器在物理上分開,減少硬件制造商和軟件開發商之間的依賴,極大地提高了雙方的工作效率;有效解決了工控行業復雜驅動程序造成的數據接口問題,減少資源浪費,提升通信質量等[2]。
由于OPC DA技術不能滿足互聯網遠程監控的需求,故OPC基金會推出OPC XML-DA規范著重解決OPC DA技術的集成性、通用性和開放性等問題。OPC XML規范根據Web Service整體概念,將OPC應用擴展到互聯網,使得企業能夠通過Internet發布OPC通信指令,為解決系統不能通過防火墻,僅限于本地局域網的問題提供了研究方向,從而高效實時地進行通信調度。
傳統的風電場監控系統由于采用OPC DA技術,故不支持互聯網通信,僅局限于本地局域網。因此,本文針對風電場監控需求,提出采用基于OPC XML-DA技術的遠程監控系統,并且介紹了OPC XML-DA服務器及客戶端的具體組成。
實現風電場的遠程在線監控,關鍵是設計一個OPC XML-DA服務器,即在OPC DA服務器的基礎上進行二次開發,通過一個XML封裝器,將工控設備中已有的OPC DA服務器XML化,使系統在保持較高性能的同時滿足跨平臺集成的要求,并通過Internet傳遞數據[4]。
OPC XML-DA服務器與OPC DA服務器組成基本相同,由服務器對象(Server)、組對象(Group)和項對象(Item)組成。其中服務器對象提供數據源以及數據源訪問的方法,可以動態的創建或釋放組對象,由一個或多個OPC組對象及OPC瀏覽器對象組成。OPC組對象通過OPC項對象的集合進行數據訪問,滿足OPC應用程序要求的數據訪問方式,由一個或多個OPC項對象組成[5]。其中OPC服務器的框架結構如圖1所示。

圖1 OPCDA服務器的框架結構圖
OPC XML-DA服務器支持8種服務,具體類型有:Browse、Get Properties、Get Status、Read、Write、Subscribe、Subscription Cancel和Subscription Polled Refresh。
根據風電場監控系統的實際需求分析,OPC XML-DA客戶端可以對OPC XML-DA規定的8項基本服務進行管理操作,此外還具有報警、報表、曲線顯示等功能。
實現瀏覽OPC服務器的步驟包括:創建瀏覽器對象,通過該對象的接口獲得OPC服務器名稱列表,再添加OPC組對象及項對象,進行數據交換。讀取標簽數據。其具體實現過程如下:
(1)創建一個接口對象
Opc.IDiscovery discover=new OpcCom.ServerEnumerator();
(2)創建一個服務器對象,并實例化
Opc.Server[] servers=discover.GetAvailableServers(Specification.COM_DA_20, Dns.GetHostName(), null);
(3)連接服務器
KepServer.Connect();
(4)向服務器添加一個OPC組對象
registeredGroup=(Opc.Da.Subscription)KepServer.CreateSubscription(state);
(5)創建數據項item數組對象
Item[] items=new Item[ItemNum];
(6)向OPC組對象中添加OPC數據項item對象
registeredGroup.AddItems(items);
(7)讀取kep組中的數據
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組中的數據
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)斷開服務器連接
KepConnected=false;
本文簡要介紹了OPC XML技術及其實際應用。工業現場設備可以通過開發OPC XML-DA服務器和OPC XML-DA客戶端實現企業的互聯網在線監控,結合本地局域網監控,實現線上、線下雙重監控,提高了監控質量和管理效率,使系統高效、經濟、安全的運行。
參考文獻:
[1]宋國輝.基于OPC XML-DA技術及.NET平臺的遠程監控系統設計[D].蘭州:蘭州理工大學, 2012.
[2]王華忠.監控與數據采集(SCADA)系統及其應用(第二版)[M].北京:電子工業出版社, 2010.
[3]盧建剛,方弢,許鋒,王智,孫優賢.基于XM L技術的分布式現場總線遠程監控系統設計[J].信息與控制, 2004,05(33):609-613.
[4]戚中奎,林果園,孫統風.OPC數據訪問服務器的研究與實現[J].計算機工程與設計, 2011,04(32):1517-1520.
[5]馬亮,張志鴻.OPC DA服務器的設計與實現[J].微計算機信息, 2008,09(24):228-230.