新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于OPC技術的系統集成設計與實現

        基于OPC技術的系統集成設計與實現

        作者: 時間:2009-06-16 來源:網絡 收藏

        3 數據訪問服務器的
        服務器的一般有3種方法:通過快速開發工具開發服務器;通過MFC(微軟基本類庫)提供的COM支持開發OPC服務器;通過ATL(活動模板庫)開發OPC服務器。
        由于OPC快速開發工具功能有許多限制,而MFC開發窗口的應用程序雖然比較方便。但它不是開發COM組件的理想工具,需要手工添加很多支持COM的基礎代碼。ATL是VC++提供專門針對COM應用開發的活動模板庫。它內部的模板類了COM的一些基本特征。比如一些基本的COM接口,也支持COM的高級特征。如雙接口、連接點等,其基本目標是使COM應用開發盡可能的自動化。使用ATL可以快速地開發出高效、簡潔的代碼,同時對COM組件的開發提供了一定限度的代碼自動生成以及可視化支持。所以在此采用ATL研究OPC服務器的開發。
        OPCDA規范規定OPCDA Server包含3種對象:Server對象、Group對象和Item對象。Server對象包含了OPCDA Server的相關信息,它可以對Group對象進行添加、刪除,是Group對象的容器。Group對象包含了這個組的相關信息,并提供了邏輯上包含組織Item對象的機制。Item對象與數據項關聯,每個數據項必須具備Value,Quality和TimeStamp三個屬性。OPC數據訪問服務器程序結構如圖3所示。

        由于OPC數據服務器既要對底層硬件進行讀寫操作,又要通過OPC接口與客戶程序進行交互,為保證數據存取的效率,所以采用多線程模型,創建exe形式的進程外OPC服務器。實現OPC數據訪問服務器的主要步驟包括:
        (1)用ATL創建一個exe進程外服務器。將OPCDA規范中的IDL文件,加入項目中進行編譯,將組件接口引入到工程中;
        (2)添加OPCServer對象。創建一個簡單的ATL對象,命名為GstServer,按照OPC規范添加相應接口并實現其方法,其中AddGroup函數的實現是難點;
        (3)添加OPCGroup對象。Group對象是通過Server對象的創建實現的,因此不需要類型庫,所以要在工程的OPCDA.cpp文件的對象映射中將其刪除,然后用聚合實現接口的添加:

        BEGIN_COM_MAP()
        COM_INTERFACE_ENTRY_AGGREGATE()
        END_COM_MAP()
        (4)定義一個類CGstItem添加Item對象。OPCItem無需實現任何接口功能,只要根據實際情況增加相應的功能函數,如根據OPCltem的名稱與數據源進行連接、讀寫數據源等;
        (5)數據存儲區的。數據存儲區包含了服務器程序定義的數據項。要根據項的數目確定緩存的大小,使得每個項都有相對應的內存空間;
        (6)OPC服務器的結構和功能大同小異,主要的區別在于硬件驅動程序。可以針對不同設備開發相應的讀寫接口類,并與相應的OPC服務器里的項對象連接起來,實現OPC服務器對現場數據的存取功能。


        4 OPC客戶應用程序的實現
        在該集成系統中,通過自行開發的OPC客戶端實現集成平臺和子系統的數據交換。在應用程序運行時,客戶端將按照指定的采集頻率對數據進行采集。
        自動化接口封裝了COM底層的許多實現,使用戶能比較輕松地進行數據訪問,具有簡單、易于編程等優點。該系統的OPC客戶端程序使用VB6通過OPC自動化接口實現OPC數據訪問。程序示例如下:
        (1)啟動VB,新建一工程OPCClient,在VB主菜單的“工程”項中選擇“引用”,在彈出窗口可用的引用選項中選擇“OPC Automation 2.0”,就可以使用自動化接口;
        (2)聲明使用的對象及變量


        (3)連接OPC服務器、建立OPC組和添加OPC項


        5 結 語
        OPC作為一項逐漸成熟的已得到國內外廠商的高度重視,許多公司都在原有產品的基礎上增加了對OPC的支持。由于統一了數據訪問的接口,使控制系統進一步走向開放,實現了信息的集成和共享,所以用戶能夠得到更多的方便。相信隨著的發展,OPC會越來越廣泛地應用于工業過程控制領域。

        p2p機相關文章:p2p原理



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 刚察县| 内乡县| 临洮县| 昌平区| 通河县| 苗栗市| 云浮市| 达尔| 民县| 常德市| 天津市| 石景山区| 崇明县| 罗甸县| 小金县| 辰溪县| 岑巩县| 芜湖市| 洪洞县| 廊坊市| 西乌珠穆沁旗| 东海县| 平山县| 潞西市| 清丰县| 汝城县| 响水县| 贡觉县| 南宁市| 本溪市| 乐业县| 石楼县| 唐河县| 连南| 北海市| 遵义市| 吕梁市| 鸡西市| 昭平县| 绥阳县| 尖扎县|