隨著計算機技術和信息技術的不斷發(fā)展,環(huán)境監(jiān)控與安全防范系統在智能建筑中的應用越來越廣泛。隨著系統規(guī)模的不斷擴大,應用于工業(yè)控制領域的軟件與硬件設備的種類也越來越豐富,不同設備的通信協議也不盡相同,系統集成難度越來越大。因此,如何有效處理系統的互聯和互操作問題成為迫切需要解決的問題。由于OPC技術采用即插即用的軟件方式,統一了數據訪問接口,簡化了系統集成環(huán)境,并且易于實現功能擴展,使控制系統進一步開放,從而使得每一個子系統都能夠自由的通信,實現了信息共享,所以OPC技術的應用越來越廣泛,已成為建筑智能化系統集成的一種新途徑。這里以智能建筑領域某環(huán)境監(jiān)控與安全防范系統為例,探討OPc技術的應用。
l 系統構建
在某些智能樓宇中,對環(huán)境溫濕度、火災報警與人員出入管理有較高要求,因此一套設計合理、價格適宜的環(huán)境監(jiān)控與安全防范系統就顯得尤為重要。這里所設計研究的系統主要包括溫濕度監(jiān)控、火災報警和門禁控制3個子系統。由于現場設備種類和數量繁多并且在樓宇建筑內分布廣泛,所以采用基于OPC技術的系統集成方案,從而成功的解決系統集成及各子系統之間的互聯性和互操作性問題。系統集成原理如圖1所示。
各子系統OPC服務器封裝了子系統的訪問細節(jié),并向上提供標準的OPC接口,集成平臺各應用軟件作為客戶端通過OPC標準接口模塊與子系統進行通信和控制,并對收集到的各個子系統信息進行整理、統計和分析,實現信息共享,協調各個子系統之間的工作,從而達到控制與管理的目的,實現了系統集成。
2 OPC技術簡介
OPC(OLE for Process Control)即是把OLE應用于工業(yè)過程控制領域。工業(yè)控制領域要用到大量的現場設備,在OPC:出現以前,軟件開發(fā)商需要開發(fā)大量的驅動程序連接這些設備。由于不同設備或者同一設備不同單元的驅動程序有可能不同,軟件開發(fā)商很難同時對這些設備進行訪問以優(yōu)化操作,且一旦硬件系統改動或升級,應用程序就可能需要重寫;同時不同客戶有著不同的應用需求,不同硬件設備也存在不同的數據傳輸協議,傳統集成方法已越來越不適應發(fā)展需要。
OPC技術的出現有效地解決了這一問題。OPC建立在OLE規(guī)范之上,它為工業(yè)控制領域提供了一種標準的數據訪問機制。它將底層硬件驅動程序和上層應用程序的開發(fā)有效地分隔開,使用統一的數據接口實現了不同設備協議間的數據互訪,不僅易于系統維護和升級,而且縮短了開發(fā)時間。
OPC規(guī)范的內容涵蓋了數據存取、事件報警、安全性等諸多方面,主要包括:數據存取規(guī)范、報警事件規(guī)范、歷史數據存儲規(guī)范、批量過程規(guī)范和安全性規(guī)范等。OPC開發(fā)包括OPC服務器和OPC客戶端兩個部分。[nextpage]
其實質是在硬件供應商和軟件開發(fā)商之間建立了一套完整的標準,只要遵循這套標準,數據交互對雙方來說就是透明的,OPC客戶端就可以方便地讀取OPC服務器中的數據,無需重復開發(fā)單獨的驅動程序,應用程序之間可以很容易地實現信息的共享與交互,從而大大降低集成成本。典型的OPC體系如圖2所示。
3 OPC數據訪問服務器的實現
OPC服務器的實現一般有3種方法:通過快速開發(fā)工具開發(fā)OPC服務器;通過MFC(微軟基本類庫)提供的COM支持開發(fā)OPC服務器;通過ATL(活動模板庫)開發(fā)OPC服務器。
由于OPC快速開發(fā)工具功能有許多限制,而MFC開發(fā)基于窗口的應用程序雖然比較方便。但它不是開發(fā)COM組件的理想工具,需要手工添加很多支持COM的基礎代碼。ATL是VC++提供專門針對COM應用開發(fā)的活動模板庫。它內部的模板類實現了COM的一些基本特征。比如一些基本的COM接口,也支持COM的高級特征。如雙接口、連接點等,其基本目標是使COM應用開發(fā)盡可能的自動化。使用ATL可以快速地開發(fā)出高效、簡潔的代碼,同時對COM組件的開發(fā)提供了一定限度的代碼自動生成以及可視化支持。所以在此采用ATL研究OPC服務器的開發(fā)。
OPCDA規(guī)范規(guī)定OPCDA Server包含3種對象:Server對象、Group對象和Item對象。Server對象包含了OPCDA Server的相關信息,它可以對Group對象進行添加、刪除,是Group對象的容器。Group對象包含了這個組的相關信息,并提供了邏輯上包含組織Item對象的機制。Item對象與數據項關聯,每個數據項必須具備Value,Quality和TimeStamp三個屬性。OPC數據訪問服務器程序結構如圖3所示。
由于OPC數據服務器既要對底層硬件進行讀寫操作,又要通過OPC接口與客戶程序進行交互,為保證數據存取的效率,所以采用多線程模型,創(chuàng)建exe形式的進程外OPC服務器。實現OPC數據訪問服務器的主要步驟包括:
(1)用ATL創(chuàng)建一個exe進程外服務器。將OPCDA規(guī)范中的IDL文件,加入項目中進行編譯,將組件接口引入到工程中;
(2)添加OPCServer對象。創(chuàng)建一個簡單的ATL對象,命名為GstServer,按照OPC規(guī)范添加相應接口并實現其方法,其中AddGroup函數的實現是難點;
(3)添加OPCGroup對象。Group對象是通過Server對象的創(chuàng)建實現的,因此不需要類型庫,所以要在工程的OPCDA.cpp文件的對象映射中將其刪除,然后用聚合實現接口的添加:
BEGIN_COM_MAP()
COM_INTERFACE_ENTRY_AGGREGATE()
END_COM_MAP()[nextpage]
(4)定義一個類CGstItem添加Item對象。OPCItem無需實現任何接口功能,只要根據實際情況增加相應的功能函數,如根據OPCltem的名稱與數據源進行連接、讀寫數據源等;
(5)數據存儲區(qū)的設計。數據存儲區(qū)包含了服務器程序定義的數據項。要根據項的數目確定緩存的大小,使得每個項都有相對應的內存空間;
(6)OPC服務器的結構和功能大同小異,主要的區(qū)別在于硬件驅動程序??梢葬槍Σ煌O備開發(fā)相應的讀寫接口類,并與相應的OPC服務器里的項對象連接起來,實現OPC服務器對現場數據的存取功能。
4 OPC客戶應用程序的實現
在該集成系統中,通過自行開發(fā)的OPC客戶端實現集成平臺和子系統的數據交換。在應用程序運行時,客戶端將按照指定的采集頻率對數據進行采集。
自動化接口封裝了COM底層的許多實現,使用戶能比較輕松地進行數據訪問,具有簡單、易于編程等優(yōu)點。該系統的OPC客戶端程序使用VB6通過OPC自動化接口實現OPC數據訪問。程序示例如下:
(1)啟動VB,新建一工程OPCClient,在VB主菜單的“工程”項中選擇“引用”,在彈出窗口可用的引用選項中選擇“OPC Automation 2.0”,就可以使用自動化接口;
(2)聲明使用的對象及變量
(3)連接OPC服務器、建立OPC組和添加OPC項
5 結 語
OPC作為一項逐漸成熟的技術已得到國內外廠商的高度重視,許多公司都在原有產品的基礎上增加了對OPC的支持。由于統一了數據訪問的接口,使控制系統進一步走向開放,實現了信息的集成和共享,所以用戶能夠得到更多的方便。相信隨著技術的發(fā)展,OPC會越來越廣泛地應用于工業(yè)過程控制領域。