基于OPC技術的系統(tǒng)集成設計與實現
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()
(4)定義一個類CGstItem添加Item對象。OPCItem無需實現任何接口功能,只要根據實際情況增加相應的功能函數,如根據OPCltem的名稱與數據源進行連接、讀寫數據源等;
(5)數據存儲區(qū)的設計。數據存儲區(qū)包含了服務器程序定義的數據項。要根據項的數目確定緩存的大小,使得每個項都有相對應的內存空間;
(6)OPC服務器的結構和功能大同小異,主要的區(qū)別在于硬件驅動程序??梢葬槍Σ煌O備開發(fā)相應的讀寫接口類,并與相應的OPC服務器里的項對象連接起來,實現OPC服務器對現場數據的存取功能。
4 OPC客戶應用程序的實現
在該集成系統(tǒng)中,通過自行開發(fā)的OPC客戶端實現集成平臺和子系統(tǒng)的數據交換。在應用程序運行時,客戶端將按照指定的采集頻率對數據進行采集。
自動化接口封裝了COM底層的許多實現,使用戶能比較輕松地進行數據訪問,具有簡單、易于編程等優(yōu)點。該系統(tǒng)的OPC客戶端程序使用VB6通過OPC自動化接口實現OPC數據訪問。程序示例如下:
(1)啟動VB,新建一工程OPCClient,在VB主菜單的“工程”項中選擇“引用”,在彈出窗口可用的引用選項中選擇“OPC Automation 2.0”,就可以使用自動化接口;
(2)聲明使用的對象及變量
(3)連接OPC服務器、建立OPC組和添加OPC項
5 結 語
OPC作為一項逐漸成熟的技術已得到國內外廠商的高度重視,許多公司都在原有產品的基礎上增加了對OPC的支持。由于統(tǒng)一了數據訪問的接口,使控制系統(tǒng)進一步走向開放,實現了信息的集成和共享,所以用戶能夠得到更多的方便。相信隨著技術的發(fā)展,OPC會越來越廣泛地應用于工業(yè)過程控制領域。
p2p機相關文章:p2p原理
評論