劉廷才,王 堅(jiān),戴毅茹
(同濟(jì)大學(xué) CIMS中心,上海 200086)
傳統(tǒng)工控系統(tǒng)中,客戶端應(yīng)用程序從數(shù)據(jù)源(如現(xiàn)場(chǎng)設(shè)備)讀取數(shù)據(jù)需要為不同的客戶端應(yīng)用程序編寫不同的驅(qū)動(dòng)程序。這種情況下會(huì)導(dǎo)致開發(fā)成本的增加、重復(fù)性的開發(fā)、驅(qū)動(dòng)程序不一致和數(shù)據(jù)訪問沖突等問題,無法適應(yīng)當(dāng)今工控系統(tǒng)的開放性要求。OPC(OLE for Process Control)是OPC基金會(huì)組織倡導(dǎo)的工業(yè)控制和生產(chǎn)自動(dòng)化領(lǐng)域中使用的硬件和軟件的接口標(biāo)準(zhǔn)[1]。它根據(jù)微軟的OLE/COM/DCOM技術(shù)來達(dá)成自動(dòng)化控制的協(xié)定。OPC將硬件制造商與軟件開發(fā)商聯(lián)系起來,通過硬件廠商提供的OPC Server接口,軟件開發(fā)人員無需考慮各種不同硬件間的差異,只需遵循OPC數(shù)據(jù)接口協(xié)議便可輕松地從硬件端取得所需的信息。
本文將簡(jiǎn)述民用飛機(jī)生產(chǎn)能源管理系統(tǒng)利用OPC技術(shù),實(shí)現(xiàn)從數(shù)據(jù)源(現(xiàn)場(chǎng)設(shè)備)采集數(shù)據(jù)的實(shí)現(xiàn)過程。
系統(tǒng)的總體架構(gòu)如圖1所示。民用飛機(jī)生產(chǎn)能源管理系統(tǒng)主要包含能源介質(zhì)管理、設(shè)備管理、能耗統(tǒng)計(jì)、能源計(jì)劃管理、能源供需平衡管理等傳統(tǒng)的能源管理模塊,以實(shí)現(xiàn)對(duì)公司能源介質(zhì)、能耗設(shè)備、已消耗的能耗歷史數(shù)據(jù)的管理;此外還包含實(shí)時(shí)數(shù)據(jù)管理模塊,實(shí)現(xiàn)對(duì)各廠房車間的能耗設(shè)備的實(shí)時(shí)數(shù)據(jù)(如各相電流、有功功率、視在功率等)的監(jiān)測(cè)管理。由于OPC技術(shù)十分適宜于實(shí)時(shí)數(shù)據(jù)的采集,所以 “實(shí)時(shí)數(shù)據(jù)管理”模塊的實(shí)現(xiàn)主要基于OPC技術(shù)在數(shù)據(jù)采集過程的應(yīng)用。
圖1 民用飛機(jī)生產(chǎn)能源管理系統(tǒng)總體架構(gòu)Fig.1 The architecture of the civil airplane manufacture energy management system
OPC技術(shù)是由OPC服務(wù)器和OPC客戶端應(yīng)用兩部分組成。OPC服務(wù)器負(fù)責(zé)收集現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)信息,然后通過標(biāo)準(zhǔn)的OPC接口傳送給OPC客戶端應(yīng)用。OPC客戶端則通過標(biāo)準(zhǔn)的OPC接口接收OPC服務(wù)器采集到的數(shù)據(jù)信息。
OPC訪問接口主要有兩種:CUSTOM標(biāo)準(zhǔn)接口和OLE自動(dòng)化標(biāo)準(zhǔn)接口,如圖2所示。自定義接口是服務(wù)商必須提供的,而自動(dòng)化接口則是可選的[2]。 其中,自定義接口是一組COM接口,主要用于采用C++語言的應(yīng)用程序開發(fā);自動(dòng)化接口是一組OLE接口,主要用于采用VB,C#,DELPHI等編程語言的應(yīng)用程序開發(fā)。
在OPC數(shù)據(jù)存取規(guī)范中,一個(gè)OPC數(shù)據(jù)存取服務(wù)器中包含三種層次的對(duì)象:服務(wù)器 (OPC Server)、組(OPC Group)和項(xiàng)(OPC Item)。OPC服務(wù)器對(duì)象維護(hù)有關(guān)服務(wù)器的信息并作為一個(gè)或多個(gè)組對(duì)象的容器,服務(wù)器對(duì)象鞏固和優(yōu)化各種客戶端所請(qǐng)求的數(shù)據(jù)存取,利于提高與設(shè)備的有效通信;OPC組對(duì)象維護(hù)有關(guān)其自身的信息,可作為一或多個(gè)OPC項(xiàng)的容器并從邏輯上實(shí)現(xiàn)對(duì)這些項(xiàng)的管理[3]。OPC組可以分為公共組(Public)和私有組(Private)。公共組可以被多個(gè)客戶端程序使用,而私有組只能被一個(gè)客戶端程序使用;OPC項(xiàng)提供OPC服務(wù)器與數(shù)據(jù)源的連接,即每一個(gè)項(xiàng)都與一個(gè)相對(duì)應(yīng)的的信號(hào)變量連接,它可以為OPC客戶端提供信號(hào)變量的數(shù)值(Value)、 數(shù)據(jù)類型(Type)、 品質(zhì)(Quality)以及時(shí)間戳(Time Stamp)等信息[4]。嚴(yán)格來說OPC項(xiàng)不屬于COM對(duì)象,不提供與客戶端的接口,所以所有對(duì)它的訪問都必須通過包容此項(xiàng)的OPC Group對(duì)象完成的。
(1)連接OPC服務(wù)器。本例中使用的OPC服務(wù)器名稱為:
String clsidOPCserver[5];//定義連接的服務(wù)器字段
Private object OPCserverObject =null;//定義連接對(duì)象
public OpcServer energySrv=null;//定義服務(wù)器對(duì)象
public OpcGroup energyGrp=null;//定義組對(duì)象
Type.GetTypeFromProgID(clsidOPCserver);//從服務(wù)器獲取與指定程序標(biāo)示符相關(guān)聯(lián)的類型。
Activator.CreateInstance(OPCserverType);//創(chuàng)建連接實(shí)例
(2)添加組。
energySrv.AddGroup("energyGruop",true,500);
AddGroup定義了Group的三個(gè)重要的屬性:
Group的名字: “energyGroup“;
Group的激活狀態(tài)為 “true”,準(zhǔn)備收發(fā)數(shù)據(jù);
Group的刷新頻率為500ms。
(3)添加數(shù)據(jù)項(xiàng)。
energyGrp.AddItems(aD,out arrRes);
這段程序的結(jié)果是添加具有已定義屬性的指定的項(xiàng)。
(4)對(duì)OPC數(shù)據(jù)進(jìn)行讀寫。OPC服務(wù)器中的數(shù)據(jù)項(xiàng)可以通過group組的DataChange事件觸發(fā)來讀取。
energyGrp.DataChanged += new Data Change Event Handler( this.energy Grp_Data Change ) ;//定義Data Change 事件
protected void energy Grp_Data Change(object sender,Data Change Event Args e)
斷開OPC服務(wù)器
int rc=Marshal.Release Com Object(OPCserver Object);OPC server Object=null;
某飛機(jī)制造企業(yè)民用飛機(jī)生產(chǎn)能源管理系統(tǒng)的OPC技術(shù)主要應(yīng)用于,對(duì)該企業(yè)各主要電柜的各相電流、有功功率、視在功率等數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè),其客戶端程序軟件運(yùn)行結(jié)果如圖3所示。
圖3 民用飛機(jī)生產(chǎn)能源管理系統(tǒng)實(shí)時(shí)數(shù)據(jù)采集畫面Fig.3 The real-time data acquisition screen of civil airplane manufacture energy management system
傳統(tǒng)的能源管理系統(tǒng)一般包含能耗、計(jì)量設(shè)備的管理,能耗數(shù)據(jù)的管理,能耗的統(tǒng)計(jì),報(bào)表的生成等功能模塊。這些功能模塊一般都是基于對(duì)企業(yè)能耗的歷史數(shù)據(jù)的統(tǒng)計(jì)分析完成的,因此存在能源管理系統(tǒng)無法對(duì)各廠房、設(shè)備等能耗數(shù)據(jù)的實(shí)時(shí)管理,通過將OPC技術(shù)引入到能源管理系統(tǒng)可以有效的解決上述問題,實(shí)現(xiàn)能源管理系統(tǒng)對(duì)歷史數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)的同時(shí)管理,大大提高了能源管理系統(tǒng)的功能范圍,方便了企業(yè)用戶。
OPC數(shù)據(jù)訪問規(guī)范把硬件供應(yīng)商和軟件開發(fā)者分離開來,極大地減小了雙方工作的耦合關(guān)系。軟件開發(fā)人員無需了解硬件的實(shí)質(zhì)和操作過程,只要嚴(yán)格遵循OPC數(shù)據(jù)訪問規(guī)范便可訪問OPC服務(wù)器中的數(shù)據(jù)。
目前,飛機(jī)制造企業(yè)能源管理系統(tǒng)的功能主要集中于對(duì)能耗歷史數(shù)據(jù)的統(tǒng)計(jì)分析上,無法實(shí)現(xiàn)對(duì)實(shí)時(shí)能耗數(shù)據(jù)的管理。將OPC技術(shù)引入到能源管理系統(tǒng)很好的解決了上述問題,管理人員可以方便的通過該系統(tǒng)對(duì)廠區(qū)或設(shè)備的能耗數(shù)據(jù)進(jìn)行實(shí)時(shí)的管理。
[1]OPC Data Access Custom Interface StandardVersion 2.04.OPC Foundation,2000.
[2]潘愛民.COM原理與應(yīng)用[M].北京:清華大學(xué)出版社,1999.
[3]OPC Common Definations and Interfaces 1.0[S].OPC Fundation,1998.
[4]馬云鵬,等.OPC通用接口與OPC服務(wù)器的注冊(cè)[J].工業(yè)控制計(jì)算機(jī),2000.
[5]Christian Nagel,Bill Evjen;李銘(譯).C# 高級(jí)編程[M].北京:清華大學(xué)出版社,2008.