<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于OPC技術(shù)的系統集成設計與實(shí)現

基于OPC技術(shù)的系統集成設計與實(shí)現

作者: 時(shí)間:2009-06-16 來(lái)源:網(wǎng)絡(luò ) 收藏

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

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

BEGIN_COM_MAP()
COM_INTERFACE_ENTRY_AGGREGATE()
END_COM_MAP()
(4)定義一個(gè)類(lèi)CGstItem添加Item對象。OPCItem無(wú)需實(shí)現任何接口功能,只要根據實(shí)際情況增加相應的功能函數,如根據OPCltem的名稱(chēng)與數據源進(jìn)行連接、讀寫(xiě)數據源等;
(5)數據存儲區的。數據存儲區包含了服務(wù)器程序定義的數據項。要根據項的數目確定緩存的大小,使得每個(gè)項都有相對應的內存空間;
(6)OPC服務(wù)器的結構和功能大同小異,主要的區別在于硬件驅動(dòng)程序??梢葬槍Σ煌O備開(kāi)發(fā)相應的讀寫(xiě)接口類(lèi),并與相應的OPC服務(wù)器里的項對象連接起來(lái),實(shí)現OPC服務(wù)器對現場(chǎng)數據的存取功能。


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


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


5 結 語(yǔ)
OPC作為一項逐漸成熟的已得到國內外廠(chǎng)商的高度重視,許多公司都在原有產(chǎn)品的基礎上增加了對OPC的支持。由于統一了數據訪(fǎng)問(wèn)的接口,使控制系統進(jìn)一步走向開(kāi)放,實(shí)現了信息的集成和共享,所以用戶(hù)能夠得到更多的方便。相信隨著(zhù)的發(fā)展,OPC會(huì )越來(lái)越廣泛地應用于工業(yè)過(guò)程控制領(lǐng)域。

p2p機相關(guān)文章:p2p原理



上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>