VC環(huán)境下的OPC客戶端程序開發(fā)_第1頁
VC環(huán)境下的OPC客戶端程序開發(fā)_第2頁
VC環(huán)境下的OPC客戶端程序開發(fā)_第3頁
VC環(huán)境下的OPC客戶端程序開發(fā)_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、VC環(huán)境下的OPC客戶端程序開發(fā)來源:中國論文下載中心     08-07-30 15:41:00     作者:趙健 師奕兵    編輯:studa0714Ads by Google 曙光刀片服務(wù)器TC2600支持Intel® Xeon® 5000系列處理器 高密度 高能效 易管理 低成本OPC Grape Seed ExtractSave 70% on our Premium Blend: Worldwide Shipping Quoted Upfro

2、ntwww.WholeHSapphireTrendPremier OPC Trending solution for realtime process control &  摘  要  本文通過分析OPC 數(shù)據(jù)訪問規(guī)范,介紹了有關(guān)OPC技術(shù)的基本概念、數(shù)據(jù)訪問方式以及編寫OPC客戶端接口程序的一般方法。同時給出了一個具體實(shí)例,用Visual C+編寫了一個OPC客戶端接口程序,并利用OPC服務(wù)器KEPServer對其進(jìn)行測試,實(shí)現(xiàn)了OPC客戶端與OPC服務(wù)器之間的數(shù)據(jù)交換。     關(guān)鍵詞  OPC服務(wù)器;OPC客戶

3、端;COM技術(shù)1  引言    隨著通信技術(shù)、計(jì)算機(jī)技術(shù)和自動化技術(shù)的快速發(fā)展,大范圍信息共享的需求在自動化系統(tǒng)中顯得越來越來越重要,現(xiàn)代工業(yè)控制系統(tǒng)已逐漸發(fā)展成為以現(xiàn)場設(shè)備層、過程控制層和中央管理層三個層次組成的系統(tǒng),因而對其開放性也提出了更高的要求。在傳統(tǒng)的控制系統(tǒng)中,現(xiàn)場設(shè)備之間以及現(xiàn)場設(shè)備與控制軟件之間的信息共享主要是通過驅(qū)動程序來實(shí)現(xiàn)的,不同廠家的設(shè)備使用不同的驅(qū)動程序,使得軟件開發(fā)商不得不開發(fā)大量驅(qū)動程序來連接這些設(shè)備,即使設(shè)備廠家在硬件上做小小的改動,應(yīng)用程序就可能重寫,這也勢必造成工業(yè)控制軟硬件的升級與維護(hù)不便,給用戶和軟件開發(fā)商帶來巨大

4、的工作負(fù)擔(dān)。同時,由于不同設(shè)備的驅(qū)動程序也有所不同,使得不同的應(yīng)用程序也不能同時訪問同一設(shè)備的數(shù)據(jù),因此,需要制定一種統(tǒng)一開放的接口標(biāo)準(zhǔn),使應(yīng)用程序能夠方便的存取一臺或多臺現(xiàn)場設(shè)備的數(shù)據(jù),為不同廠商的軟硬件提供一種系統(tǒng)集成和數(shù)據(jù)交換的途徑。正是在自動化系統(tǒng)開放性要求的驅(qū)使下,促使了OPC技術(shù)的產(chǎn)生。2  OPC技術(shù)簡介    OPC(OLE for Process Control)是基于微軟公司的DNA(Distributed InterNet Application)構(gòu)架和COM (Component Object Model)/DCOM(Distri

5、buted COM)技術(shù),根據(jù)易擴(kuò)展性而設(shè)計(jì)的,OPC規(guī)范定義了一個工業(yè)標(biāo)準(zhǔn)接口,這個標(biāo)準(zhǔn)使得COM技術(shù)適用于過程控制和制造自動化等應(yīng)用領(lǐng)域。OLE最初意思為對象鏈接與嵌入,是微軟的復(fù)合文檔技術(shù)。隨著后續(xù)版本OLE2中導(dǎo)入了COM技術(shù)之后,現(xiàn)在的OLE在原版的基礎(chǔ)上增加了更多新的功能,包括結(jié)構(gòu)化存儲、統(tǒng)一數(shù)據(jù)傳輸和自動化等,它已經(jīng)成為獨(dú)立于計(jì)算機(jī)語言、操作系統(tǒng)甚至硬件平臺的一種規(guī)范,進(jìn)一步推廣了面向?qū)ο蟪绦蛟O(shè)計(jì)的概念。OPC正是建立在OLE2規(guī)范之上,為工業(yè)控制領(lǐng)域提供了一種標(biāo)準(zhǔn)的數(shù)據(jù)訪問機(jī)制。2.1  OPC數(shù)據(jù)訪問規(guī)范    OPC規(guī)范是由世界主要的

6、自動化設(shè)備制造商、OPC基金會和微軟公司共同協(xié)商制定而成的,為不同廠商的設(shè)備和應(yīng)用程序之間實(shí)現(xiàn)了接口標(biāo)準(zhǔn)化。它把硬件供應(yīng)商和軟件開發(fā)商分離開來,在設(shè)備、數(shù)據(jù)庫等數(shù)據(jù)源和客戶之間架起了一座橋梁,為解決統(tǒng)一接口標(biāo)準(zhǔn)問題提供了解決方案。這其中包括OPC數(shù)據(jù)訪問規(guī)范(OPC DA)、OPC報警和事件規(guī)范(OPC AE)和OPC歷史數(shù)據(jù)訪問規(guī)范(OPC HDA)等,而OPC數(shù)據(jù)訪問規(guī)范是最常用的規(guī)范之一。    通過對OPC數(shù)據(jù)訪問規(guī)范的分析可知,在OPC數(shù)據(jù)訪問規(guī)范中主要包括3類對象,分別是OPC Server、OPC Group和OPC Item。OPC服務(wù)器對象維護(hù)有

7、關(guān)服務(wù)器的信息并作為OPC組對象的包容器,能夠動態(tài)地創(chuàng)建和釋放組對象;OPC組對象除了維護(hù)有關(guān)自身的信息之外,還提供了包容OPC項(xiàng)的機(jī)制,從邏輯上管理OPC項(xiàng)。它提供了客戶組織數(shù)據(jù)的一種方法,客戶可以對其進(jìn)行讀寫,還可以設(shè)置客戶端的數(shù)據(jù)更新速率。當(dāng)服務(wù)器緩沖區(qū)內(nèi)的數(shù)據(jù)發(fā)生改變時,OPC將向客戶發(fā)出通知,客戶得到通知后再進(jìn)行必要處理,而無需浪費(fèi)大量的時間進(jìn)行查詢;OPC項(xiàng)則表示了與OPC服務(wù)器的連接,它并不提供對外接口,客戶端不能直接對其進(jìn)行操作,而是通過組對象對其進(jìn)行操作的。圖1表示了這3類對象的相互關(guān)系以及它們與OPC客戶端程序之間的關(guān)系。圖1  OPC DA服務(wù)器對象與OPC D

8、A客戶端的對應(yīng)關(guān)系2.2  OPC數(shù)據(jù)訪問方式    OPC客戶端在對OPC服務(wù)器進(jìn)行數(shù)據(jù)訪問時,可以選擇兩種不同的訪問方式,即同步訪問方式和異步訪問方式。其中同步訪問方式的實(shí)現(xiàn)相對簡單,OPC服務(wù)器將OPC應(yīng)用程序所要求得到的數(shù)據(jù)訪問結(jié)果作為方法引數(shù)返回給OPC應(yīng)用程序,此時OPC應(yīng)用程序一直處于等待狀態(tài),直到結(jié)果被返回為止。當(dāng)客戶數(shù)目較少并且與服務(wù)器交互的數(shù)據(jù)量也較少的時候可以采用同步訪問方式。與此相對,異步訪問方式的實(shí)現(xiàn)較為復(fù)雜,OPC服務(wù)器接到OPC應(yīng)用程序的要求后,立即將方法引數(shù)返回,OPC應(yīng)用程序隨后可以進(jìn)行其它處理。當(dāng)OPC服務(wù)器完成數(shù)據(jù)訪

9、問時,觸發(fā)OPC應(yīng)用程序的異步訪問完成事件,將數(shù)據(jù)訪問結(jié)果傳送給OPC應(yīng)用程序,OPC應(yīng)用程序在VC的事件處理程序中接收從OPC服務(wù)器傳來的數(shù)據(jù)。當(dāng)有大量客戶和大量數(shù)據(jù)交互時,異步訪問方式的效率更高,能夠避免客戶數(shù)據(jù)請求的阻塞,從而最大限度的節(jié)省CPU和網(wǎng)絡(luò)資源。圖2和圖3分別表示了兩種數(shù)據(jù)訪問方式的處理過程。圖2  同步數(shù)據(jù)訪問處理 圖3  異步數(shù)據(jù)訪問處理3  VC環(huán)境下OPC客戶端程序設(shè)計(jì)    OPC客戶端程序在設(shè)計(jì)時需要遵守OPC數(shù)據(jù)訪問規(guī)范,實(shí)現(xiàn)規(guī)范所規(guī)定的全部必需接口。同時,客戶端模塊需要有獨(dú)立的設(shè)備連接界面和監(jiān)控運(yùn)行界

10、面,并能夠支持多服務(wù)器的連接。下面詳細(xì)介紹VC環(huán)境下的OPC客戶端程序開發(fā)步驟,并給出關(guān)鍵源代碼:    (1)包含OPC頭文件。首先創(chuàng)建新的工程,編輯StdAfx.h文件,加載opcda.h、opccomn.h、opcerrors.h、opcprops.h、opcquality.h以及opcda_i.c、opccomn_i.c文件。    (2)初始化COM庫。由于OPC是基于COM技術(shù)制定的,所以在使用接口類之前必須首先使用CoInitialize(NULL)函數(shù)對COM庫進(jìn)行初始化,如果成功,函數(shù)返回值等于S_ OK。 

11、;   HRESULT h1;    h1=CoInitialize(NULL);    if(h1!=S_OK)    return(FAUSE);    (3)通過OPC服務(wù)器的ProgID查詢注冊表中相關(guān)CLSID。每個COM服務(wù)器都有一個字符串型的ProgID,通過ProgID可以得到全球惟一的CLSID,使用CLSIDFromProgID( )函數(shù)實(shí)現(xiàn)ProgID到CLSID的轉(zhuǎn)換。    h1=CLSIDFromP

12、rogID(ProgID,&CLSID);    (4)連接OPC服務(wù)器,查詢對象的IID_IOPCServer接口。在連接OPC服務(wù)器前,OPC客戶端需要事先指定計(jì)算機(jī)名和OPC數(shù)據(jù)訪問服務(wù)器名,建立連接后,創(chuàng)建OPC組并添加OPC數(shù)據(jù)項(xiàng)。    h1=CoCreateInstance(clsid,NULL,CLSCTX_ LOCAL_ SERVER,IID_IOPCServer,(void*)&m_OPCServer);    (5)創(chuàng)建OPC組,查詢IOPCItemMgt接口。IOP

13、CServer接口的AddGroup()方法可以創(chuàng)建一個有指定名稱和屬性的OPC組。    h1=m_IOPCServer->AddGroup(L,” ”,TRUE,800,111,&TimeBias,&PercentDeadBand,LOCAL_ID,& m_ GrpSrvHandle,&RevisedUpdateRate,IID_IOPCItemMgt,(LPUNKNOWN*)m_IOPCItemMgt);    (6)添加OPC數(shù)據(jù)項(xiàng)。使用IOPCItemMgt接口的AddItem()方法可

14、以添加具有特殊屬性的指定數(shù)量的數(shù)據(jù)項(xiàng)。    pOPCItemMgt->AddItems(ItemNumber,ItemArray,(OPCITEMRESULT*)&pItemResult,(HRESULT *) & pErrors);    (7)OPC的數(shù)據(jù)項(xiàng)讀寫。對OPC數(shù)據(jù)項(xiàng)的讀寫可以有同步與異步之分,對于大量的數(shù)據(jù)傳輸,異步是更佳的選擇,但對少量的數(shù)據(jù)傳輸,同步表現(xiàn)得更好。本程序采用異步訪問方式,需要指向IOPCAsyncIO2指針。h1=m_IOPCItemMgt->QueryInte

15、rface(IID_IOPCAsyncIO2,(void*)&m_IOPCAsyncIO2);void CAsynOPCDlg:OnRead ( ) 實(shí)現(xiàn)異步讀數(shù)據(jù)。h1=m_IOPCAsyncIO2->Read(1,phServer,1,&dwCancelID,&pErrors);    delete phServer;    void CAsynOPCDlg:OnWrite( ) 實(shí)現(xiàn)異步寫數(shù)據(jù)。h1=m_IOPCAsyncIO2->Write(1,phServer,values,2,&

16、dwCancelID,&pErrors);    delete phServer;    (8)OPC連接斷開,釋放接口指針。當(dāng)程序退出或停止服務(wù)器時,依次刪除Item(RemoveItems)、Group(RemoveGroups),釋放資源。 void CAsynOPCDlg:OnStop( ) 停止服務(wù)器。h1=m_IOPCItemMgt->RemoveItems(1,phServer,&pErrors);刪除Items。h1=m_IOPCServer->RemoveGroup(m_GrpSrvHandle,TRUE);刪除Group。m_IOPCServer->Release( );釋放服務(wù)器。m_IOPCServer=NULL;CoUninitialize( );關(guān)閉COM庫。圖4  OPC客戶端程序    使用OPC技術(shù)之后,我們就可以通過OPC客戶端直接訪問由硬件供應(yīng)商提供的OPC服務(wù)器,從而達(dá)到直接獲取現(xiàn)場設(shè)備數(shù)據(jù)的目的。圖4顯示的即是基于VC開發(fā)的OPC客戶端程序?qū)PC服務(wù)器KEPS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論