劉廷才,王 堅,戴毅茹
(同濟大學 CIMS中心,上海 200086)
傳統工控系統中,客戶端應用程序從數據源(如現場設備)讀取數據需要為不同的客戶端應用程序編寫不同的驅動程序。這種情況下會導致開發成本的增加、重復性的開發、驅動程序不一致和數據訪問沖突等問題,無法適應當今工控系統的開放性要求。OPC(OLE for Process Control)是OPC基金會組織倡導的工業控制和生產自動化領域中使用的硬件和軟件的接口標準[1]。它根據微軟的OLE/COM/DCOM技術來達成自動化控制的協定。OPC將硬件制造商與軟件開發商聯系起來,通過硬件廠商提供的OPC Server接口,軟件開發人員無需考慮各種不同硬件間的差異,只需遵循OPC數據接口協議便可輕松地從硬件端取得所需的信息。
本文將簡述民用飛機生產能源管理系統利用OPC技術,實現從數據源(現場設備)采集數據的實現過程。
系統的總體架構如圖1所示。民用飛機生產能源管理系統主要包含能源介質管理、設備管理、能耗統計、能源計劃管理、能源供需平衡管理等傳統的能源管理模塊,以實現對公司能源介質、能耗設備、已消耗的能耗歷史數據的管理;此外還包含實時數據管理模塊,實現對各廠房車間的能耗設備的實時數據(如各相電流、有功功率、視在功率等)的監測管理。由于OPC技術十分適宜于實時數據的采集,所以 “實時數據管理”模塊的實現主要基于OPC技術在數據采集過程的應用。

圖1 民用飛機生產能源管理系統總體架構Fig.1 The architecture of the civil airplane manufacture energy management system
OPC技術是由OPC服務器和OPC客戶端應用兩部分組成。OPC服務器負責收集現場設備的數據信息,然后通過標準的OPC接口傳送給OPC客戶端應用。OPC客戶端則通過標準的OPC接口接收OPC服務器采集到的數據信息。
OPC訪問接口主要有兩種:CUSTOM標準接口和OLE自動化標準接口,如圖2所示。自定義接口是服務商必須提供的,而自動化接口則是可選的[2]。 其中,自定義接口是一組COM接口,主要用于采用C++語言的應用程序開發;自動化接口是一組OLE接口,主要用于采用VB,C#,DELPHI等編程語言的應用程序開發。

在OPC數據存取規范中,一個OPC數據存取服務器中包含三種層次的對象:服務器 (OPC Server)、組(OPC Group)和項(OPC Item)。OPC服務器對象維護有關服務器的信息并作為一個或多個組對象的容器,服務器對象鞏固和優化各種客戶端所請求的數據存取,利于提高與設備的有效通信;OPC組對象維護有關其自身的信息,可作為一或多個OPC項的容器并從邏輯上實現對這些項的管理[3]。OPC組可以分為公共組(Public)和私有組(Private)。公共組可以被多個客戶端程序使用,而私有組只能被一個客戶端程序使用;OPC項提供OPC服務器與數據源的連接,即每一個項都與一個相對應的的信號變量連接,它可以為OPC客戶端提供信號變量的數值(Value)、 數據類型(Type)、 品質(Quality)以及時間戳(Time Stamp)等信息[4]。嚴格來說OPC項不屬于COM對象,不提供與客戶端的接口,所以所有對它的訪問都必須通過包容此項的OPC Group對象完成的。
(1)連接OPC服務器。本例中使用的OPC服務器名稱為:
String clsidOPCserver[5];//定義連接的服務器字段
Private object OPCserverObject =null;//定義連接對象
public OpcServer energySrv=null;//定義服務器對象
public OpcGroup energyGrp=null;//定義組對象
Type.GetTypeFromProgID(clsidOPCserver);//從服務器獲取與指定程序標示符相關聯的類型。
Activator.CreateInstance(OPCserverType);//創建連接實例
(2)添加組。
energySrv.AddGroup("energyGruop",true,500);
AddGroup定義了Group的三個重要的屬性:
Group的名字: “energyGroup“;
Group的激活狀態為 “true”,準備收發數據;
Group的刷新頻率為500ms。
(3)添加數據項。
energyGrp.AddItems(aD,out arrRes);
這段程序的結果是添加具有已定義屬性的指定的項。
(4)對OPC數據進行讀寫。OPC服務器中的數據項可以通過group組的DataChange事件觸發來讀取。
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服務器
int rc=Marshal.Release Com Object(OPCserver Object);OPC server Object=null;
某飛機制造企業民用飛機生產能源管理系統的OPC技術主要應用于,對該企業各主要電柜的各相電流、有功功率、視在功率等數據的實時監測,其客戶端程序軟件運行結果如圖3所示。

圖3 民用飛機生產能源管理系統實時數據采集畫面Fig.3 The real-time data acquisition screen of civil airplane manufacture energy management system
傳統的能源管理系統一般包含能耗、計量設備的管理,能耗數據的管理,能耗的統計,報表的生成等功能模塊。這些功能模塊一般都是基于對企業能耗的歷史數據的統計分析完成的,因此存在能源管理系統無法對各廠房、設備等能耗數據的實時管理,通過將OPC技術引入到能源管理系統可以有效的解決上述問題,實現能源管理系統對歷史數據和實時數據的同時管理,大大提高了能源管理系統的功能范圍,方便了企業用戶。
OPC數據訪問規范把硬件供應商和軟件開發者分離開來,極大地減小了雙方工作的耦合關系。軟件開發人員無需了解硬件的實質和操作過程,只要嚴格遵循OPC數據訪問規范便可訪問OPC服務器中的數據。
目前,飛機制造企業能源管理系統的功能主要集中于對能耗歷史數據的統計分析上,無法實現對實時能耗數據的管理。將OPC技術引入到能源管理系統很好的解決了上述問題,管理人員可以方便的通過該系統對廠區或設備的能耗數據進行實時的管理。
[1]OPC Data Access Custom Interface StandardVersion 2.04.OPC Foundation,2000.
[2]潘愛民.COM原理與應用[M].北京:清華大學出版社,1999.
[3]OPC Common Definations and Interfaces 1.0[S].OPC Fundation,1998.
[4]馬云鵬,等.OPC通用接口與OPC服務器的注冊[J].工業控制計算機,2000.
[5]Christian Nagel,Bill Evjen;李銘(譯).C# 高級編程[M].北京:清華大學出版社,2008.