COM技術(shù)及OPC技術(shù)-文檔資料_第1頁
COM技術(shù)及OPC技術(shù)-文檔資料_第2頁
COM技術(shù)及OPC技術(shù)-文檔資料_第3頁
COM技術(shù)及OPC技術(shù)-文檔資料_第4頁
COM技術(shù)及OPC技術(shù)-文檔資料_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1COM技術(shù)及OPC技術(shù)2主要內(nèi)容vCOM基礎(chǔ)知識基礎(chǔ)知識vOPC的概念的概念vOPC的作用的作用vOPC基礎(chǔ)知識基礎(chǔ)知識v實驗室實驗室OPC組相關(guān)的工作組相關(guān)的工作3一、一、COM基礎(chǔ)知識基礎(chǔ)知識 COM(Component Object Model,組件對象模型)是Microsoft創(chuàng)建并已取得廣泛認可的一種組件標(biāo)準(zhǔn)。 在COM標(biāo)準(zhǔn)中,COM對象被很好的封裝起來,客戶無法訪問對象的實現(xiàn)細節(jié),提供給用戶的唯一的訪問途徑是通過COM接口來訪問。對于COM接口有兩方面的含義: 首先它是一組可供調(diào)用的函數(shù),由此客戶可以讓該對象做某些事情;其次,接口是組件程序及其客戶程序之間的協(xié)議。也就是說接口不但

2、定義了可用什么函數(shù),也定義了當(dāng)調(diào)用這些函數(shù)時對象要做什么。 COM提供了編寫組件的一個標(biāo)準(zhǔn)方法,遵循COM標(biāo)準(zhǔn)的組件可以被組合起來以形成應(yīng)用程序。組件和客戶之間通過“接口”來發(fā)生聯(lián)系,至于這些組件是誰編寫的、如何實現(xiàn)的都是無關(guān)緊要的。4v IOPCAsyncIO : public IUnknownv v public:v virtual HRESULT STDMETHODCALLTYPE Read( v /* in */ DWORD dwConnection,v /* in */ OPCDATASOURCE dwSource,v /* in */ DWORD dwCount,v /* size

3、_isin */ OPCHANDLE _RPC_FAR *phServer,v /* out */ DWORD _RPC_FAR *pTransactionID,v /* size_issize_isout */ HRESULT _RPC_FAR *_RPC_FAR *ppErrors) = 0;v v virtual HRESULT STDMETHODCALLTYPE Write( v /* in */ DWORD dwConnection,v /* in */ DWORD dwCount,v /* size_isin */ OPCHANDLE _RPC_FAR *phServer,v /*

4、 size_isin */ VARIANT _RPC_FAR *pItemValues,v /* out */ DWORD _RPC_FAR *pTransactionID,v /* size_issize_isout */ HRESULT _RPC_FAR *_RPC_FAR *ppErrors) = 0;v v virtual HRESULT STDMETHODCALLTYPE Refresh( v /* in */ DWORD dwConnection,v /* in */ OPCDATASOURCE dwSource,v /* out */ DWORD _RPC_FAR *pTrans

5、actionID) = 0;v v virtual HRESULT STDMETHODCALLTYPE Cancel( v /* in */ DWORD dwTransactionID) = 0;v v ;5OPC與COM間關(guān)系vOPC(OLE for process control)是建立在微軟公司OLE/COM技術(shù)基礎(chǔ)上。vCOM技術(shù)的出現(xiàn)為簡單地實現(xiàn)控制設(shè)備和控制管理系統(tǒng)之間的數(shù)據(jù)交換提供了技術(shù)基礎(chǔ)。但如果不提供一個工業(yè)標(biāo)準(zhǔn)化的COM接口,各個控制設(shè)備廠家開發(fā)的COM組件之間的相互連接仍然是不可能的。vOPC是作為工業(yè)標(biāo)準(zhǔn)定義的特殊的COM接口。對相關(guān)COM技術(shù)的理解是對OPC技術(shù)理解的

6、關(guān)鍵所在。OPC技術(shù)還有著它本身的獨特性,理解了COM技術(shù)只是理解OPC技術(shù)的第一步。6COM組件的特點v遵循COM規(guī)范編寫的組件具有以下特點:vCOM組件是以二進制的形式發(fā)布,所以COM組件是完全與語言無關(guān)的。vCOM組件可以在不妨礙老客戶的情況下被升級。COM提供了一種實現(xiàn)同一組件不同版本的標(biāo)準(zhǔn)方法。升級其實就是在現(xiàn)有的組件上增加新的接口就可以了。vCOM組件可以透明地在網(wǎng)絡(luò)上被重新分配位置。對遠程機器上的組件同本地機器上的組件的處理方式?jīng)]有什么差別。vCOM組件是一種給其他應(yīng)用程序提供面向?qū)ο蟮腁PI服務(wù)的極好方法。7COM接口接口v客戶程序和組件程序通過接口進行相互之間的通信。組件程序

7、就是通過接口暴露它的功能給客戶程序的,而COM客戶程序是不可能看見組件對象本身的。僅有接口是可見的,它告訴客戶程序能利用組件能干什么,如何利用它的功能。v在組件內(nèi),接口以虛函數(shù)表的形式實現(xiàn)的。實際上,COM標(biāo)準(zhǔn)就是標(biāo)準(zhǔn)的接口和使用它所需協(xié)議的描述,所以說接口是COM允許對象跨進程、跨計算機進行交互的關(guān)鍵技術(shù)。8接口的定義、結(jié)構(gòu)與分類 vCOM對于接口的定義和接口的實現(xiàn)作了嚴格的區(qū)分。通過下面的IUnknown接口可以知道,在接口中只有接口方法的描述,而沒有實現(xiàn)。vCOM接口的名字以字母I打頭。其中IUnknown接口最重要,因為所有其它接口都是從IUnknown接口直接或間接繼承而來的。vIU

8、nkown接口定義了三個方法:v1、HRESULT QueryInterface(in REFIID riid,out void *ppv);v2、ULONG AddRef();v3、ULONG Release();9vCOM定義的每一個接口都必須從IUnkown接口繼承過來。原因在于IUnkown接口提供了兩個非常重要的特性:生存期控制和接口查詢??蛻舫绦蛑荒芡ㄟ^接口與COM對象進行通信,雖然客戶程序可以不管對象內(nèi)部實現(xiàn)的細節(jié),但它要控制對象存在與否。如果客戶還要繼續(xù)對對象進行操作,則它必須保證對象一直存在于內(nèi)存中;如果客戶對對象的操作已經(jīng)完成,以后也不再需要該對象了,則應(yīng)該及時地把對象釋放

9、掉,以提高系統(tǒng)資源的利用率。vIUnkown接口中的AddRef()和Release()負責(zé)對象引用計數(shù),實現(xiàn)組件對象生命周期的管理。每當(dāng)COM組件被引用一次就應(yīng)調(diào)用一次AddRef()方法。而當(dāng)客戶端在釋放COM組件的某個接口時就需要調(diào)用Release()方法。v如果一個COM對象實現(xiàn)了多個接口,在初始時刻客戶程序不太可能得到該對象的所有接口指針,它只會擁有一個接口指針。如果客戶程序需要其它的指針,則利用IUnkown接口中的QueryInterface()方法是用于查詢組件對象所實現(xiàn)的其它接口。10OPC對象接口定義 vOPC服務(wù)器采用的就是以EXE方式實現(xiàn)的COM組件,它可以運行在本地計

10、算機上,也可以運行在網(wǎng)絡(luò)上的遠程計算機上。實際上就是一個典型的進程外COM組件,只不過OPC服務(wù)器的接口是有OPC標(biāo)準(zhǔn)組織規(guī)定的標(biāo)準(zhǔn)接口。OPC技術(shù)實際上就是COM技術(shù)在工業(yè)控制中的一個具體的應(yīng)用。11客戶/服務(wù)器模型 v客戶/服務(wù)器模型是一種發(fā)展比較成功的軟件模型。組件對象和客戶程序之間的相互作用是建立在客戶/服務(wù)器模型的基礎(chǔ)之上的,并且COM組件是運行在分布式環(huán)境中的。COM不僅僅是簡單的客戶/服務(wù)器模型,有時客戶也反過來提供服務(wù),或服務(wù)器本身也需要其它對象的一些功能。一個組件對象可能既是服務(wù)器也是客戶,COM能有效地處理這些情況。在OPC異步通信訪問方式中,當(dāng)OPC服務(wù)器觸發(fā)OPC應(yīng)用程

11、序的異步訪問完成事件時,OPC服務(wù)器此時就扮演了客戶端的角色,將數(shù)據(jù)訪問結(jié)果傳送給OPC應(yīng)用程序。12組件存在的類型 v一般而言,組件具有三種類型:進程內(nèi)組件、進程外組件和遠程組件。v第一種是駐留在本地機器上以DLL形式提供,該服務(wù)程序被調(diào)用時,嵌入到調(diào)用程序的線程中運行。此時客戶程序和組件程序位于同一臺計算機上,客戶程序調(diào)用組件時,客戶程序會把組件程序裝入自己的進程空間,即客戶程序和組件程序在同一個進程地址空間內(nèi)。由于它占用和客戶端應(yīng)用程序同樣的地址空間,它可以與客戶端更快地通信。在客戶端和服務(wù)器端組件有大量數(shù)據(jù)轉(zhuǎn)移操作的情況下是最理想的,進程內(nèi)服務(wù)器會更快地裝載。v第二種是駐留在本地機器上

12、以EXE形式提供,具有獨立的進程。客戶程序和組件程序也位于同一臺計算機上,但客戶程序和組件程序分別在不同的進程地址空間中。在COM中,采用了本地過程調(diào)用LRC(Local Procedure Call)來進行本地通信。v第三種駐留在遠端機器上以EXE形式提供,服務(wù)程序通過網(wǎng)絡(luò)被調(diào)用,它在遠端機器上運行,結(jié)果通過網(wǎng)絡(luò)返回給調(diào)用者。這種功能是使用DCOM實現(xiàn)的。DCOM的優(yōu)點在于它并不要求任何特別的編程來使其具有功能。另外服務(wù)器和客戶端通信是通過RRC(Remote Procedure Call)通信協(xié)議進行的。v雖然客戶程序和組件程序交互的內(nèi)在方式是完全不同的,但是對于功能相同的進程內(nèi)和進程外組

13、件,從程序編寫的角度看,客戶程序是以同樣的方法來使用組件程序的。OPC服務(wù)器采用的就是以EXE方式實現(xiàn)的COM組件。13通過COM庫創(chuàng)建COM對象 vCOM庫充當(dāng)了組件程序和客戶程序之間的橋梁,在Microsoft Windows操作系統(tǒng)環(huán)境下,這些庫以DLL文件的形式存在。在組件對象的創(chuàng)建過程、對象管理、內(nèi)存管理、以及在標(biāo)準(zhǔn)化操作等方面,都起了重要的作用。COM庫可以保證所有的組件按統(tǒng)一的方式進行交互操作,而且它使我們在編寫COM時,可不編寫為進行COM通信而必需的大量基礎(chǔ)代碼,而是直接利用COM庫的API進行編程,從而大大加快開發(fā)的速度。14客戶程序通過COM庫訪問組件程序的步驟v(1)在

14、進行函數(shù)調(diào)用以前,必須調(diào)用COM庫的初始化函數(shù):HRESULT= CoInitialize(NULL);v(2)通過函數(shù)CLSIDFromProgID()或CLSIDFromProgIDEx()ProgID,查找注冊表中相關(guān)組件的CLSID。v(3)客戶端程序調(diào)用CoCreateInstance(),創(chuàng)建COM對象,傳遞組件對象類的CLSID以及所要接口的IID。v(4)COM庫在HKEY_CLASSES_ROOTCLSID.鍵值下查找服務(wù)器的CLSID鍵值,這個鍵值包含服務(wù)器的注冊信息。v(5)COM庫讀取服務(wù)器的全路徑并將組件程序加載。v(6)COM庫為組件對象類請求類工廠。COM庫在類工

15、廠中調(diào)用CreateInstance()方法創(chuàng)建客戶端程序請求的COM對象。v(7)CreateInstance()返回一個接口指針給客戶端程序。15通過COM庫刪除COM對象 vIUnknown是每一個COM對象必須實現(xiàn)的接口,其中有一個Release()方法。調(diào)用這個方法通知COM對象你不再需要對象。一旦調(diào)用了這個方法之后,就不能再次使用這個接口,因為這個COM對象可能從此就從內(nèi)存中消失了。v如果應(yīng)用程序使用許多不同的COM對象,因此在用完某個接口后調(diào)用Release()就顯得非常重要。如果你不釋放接口,這個COM對象將保留在內(nèi)存中,這會增加不必要的開銷。如果應(yīng)用程序要長時間運行,就應(yīng)該在

16、應(yīng)用程序處于空閑期間調(diào)用CoFreeUnusedLibraries()API函數(shù)。這個API函數(shù)將卸載任何沒有明顯引用的COM服務(wù)器,因此這也降低了應(yīng)用程序使用的內(nèi)存開銷。16v/ 像上面一樣創(chuàng)建COM對象,然后,vif ( SUCCEEDED ( hr ) )vv/通知COM對象不再使用它vm_IOPCServer -Release();vv應(yīng)用程序?qū)OM庫進行初始化之后,可以調(diào)用COM庫提供的各種服務(wù),在調(diào)用過程中必然要消耗COM庫管理的資源。因此,COM程序在完成COM庫服務(wù)之后,通常在程序退出之前,終止COM庫服務(wù)函數(shù),以便釋放COM庫所維護的資源。COM庫的終止函數(shù)為:vvoid

17、CoUninitialize(void);v凡是調(diào)用CoInitialize函數(shù)返回S_OK的進程或者程序模塊,都一定要調(diào)用對應(yīng)的CoUninitialize函數(shù)以保證COM庫資源的有效利用。17C+調(diào)用OPC服務(wù)器的關(guān)鍵性代碼 vOPC服務(wù)器實際上就是一種COM組件,以下是一個OPC客戶程序調(diào)用OPC服務(wù)器對象的關(guān)鍵性代碼,創(chuàng)建一個OPCServer對象的實例并請求指向這個對象m_IOPCServer接口指針。vHRESULT hr; / 首先聲明一個接受CoCreateInstance()返回值的HRESULTvbool m_bComInitialized;vIOPCServer* m_I

18、OPCServer;/ 指向IID_IOPCServer接口的指針vhr= CoInitialize(NULL) /初始化COM庫vm_bComInitialized = SUCCEEDED (hr);vif (!m_bComInitialized)vvreturn (FALSE); /如果初始化COM庫失敗,程序就不必向下執(zhí)行vv/通過ProgID,查找注冊表中的相關(guān)CLSID,vhr = CLSIDFromProgID(LNAPOPC.Svr, &clsid); vif (hr != S_OK)vv AfxMessageBox(獲取CLSID失敗);v CoUninitialize

19、(); /調(diào)用CoUninitialize函數(shù)釋放COM庫的資源v return (FALSE);v18v/創(chuàng)建OPC服務(wù)器對象,并查詢對象的IID_IOPCServer接口vhr = CoCreateInstance ( clsid, /coclass的CLSIDvNULL, /不是用聚合vCLSCTX_LOCAL_SERVER, /服務(wù)器類型vIID_IOPCServer, /接口的IIDv(void*) &m_IOPCServer); /指向接口的指針vif ( SUCCEEDED ( hr ) )vv/用m_IOPCServer調(diào)用其它的方法vvelsevv/不能創(chuàng)建OPC服務(wù)

20、器對象vAfxMessageBox(創(chuàng)建OPC服務(wù)器對象失敗); vCoUninitialize(); /調(diào)用CoUninitialize函數(shù)釋放COM庫的資源vv調(diào)用CoCreateInstance()來創(chuàng)建新的OPC服務(wù)器對象。如果hr接受到一個表示成功的代碼,即S_OK,則SUCCEEDED宏返回TRUE,否則返回FALSE。FAILED是一個與SUCCEEDED對應(yīng)的宏用來檢查失敗代碼。19二、二、 OPCOPC的概念的概念vOLE for Process Control (用于過程控制的OLE(Object Lingking and Embedding))vOPC是一種過程控制中的標(biāo)

21、準(zhǔn)化技術(shù)該技術(shù)基于OLECOMDCOM,采用客戶服務(wù)器模式。vOPC建立了一組符合工業(yè)控制要求的接口規(guī)范,主要包括:OPC數(shù)據(jù)訪問規(guī)范,OPC報警與事件規(guī)范,OPC歷史數(shù)據(jù)存取規(guī)范,OPC安全規(guī)范,OPC批處理規(guī)范,OPC服務(wù)器數(shù)據(jù)交換規(guī)范和OPC XML規(guī)范。20v其中應(yīng)用最多的是數(shù)據(jù)訪問規(guī)范。不同的規(guī)范定義了不同的接口集合,以及這些接口需要實現(xiàn)的功能。只要硬件開發(fā)商提供了實現(xiàn)OPC接口的服務(wù)器,任何支持OPC接口的客戶程序均可采用統(tǒng)一的方式對不同硬件廠商的設(shè)備數(shù)據(jù)進行存取。21OPC 特性vOPC標(biāo)準(zhǔn)前22OPC 特性vOPC標(biāo)準(zhǔn)后23vOPC是連接數(shù)據(jù)源(OPC服務(wù)器)和數(shù)據(jù)的使用者(O

22、PC應(yīng)用程序)之間的接口標(biāo)準(zhǔn)。數(shù)據(jù)源可以是PLC,DCS,條形碼讀取器等控制設(shè)備。服務(wù)器既可以是本地服務(wù)器,也可以是遠程服務(wù)器。OPC是具有高度柔軟性的接口標(biāo)準(zhǔn)。目前,OPC技術(shù)主要應(yīng)用于以下幾大工業(yè)控制:在線數(shù)據(jù)監(jiān)測,報警和事件處理,歷史數(shù)據(jù)訪問遠程數(shù)據(jù)訪問。24OPC 的客戶/服務(wù)器模型(C/S)vOPC一般采用客戶/服務(wù)器模式。通常把符合OPC規(guī)范的設(shè)備驅(qū)動程序稱為OPC服務(wù)器,它是一個典型的數(shù)據(jù)源程序。將符合OPC規(guī)范的應(yīng)用軟件稱為OPC客戶,它是一個典型的數(shù)據(jù)接受程序。服務(wù)器充當(dāng)客戶和硬件設(shè)備之間的橋梁??蛻魧τ布O(shè)備的讀寫操作由服務(wù)器代理完成。25v在客戶端和服務(wù)器端都各自定義了統(tǒng)

23、一的標(biāo)準(zhǔn)接口,接口具有不變特性。接口明確定義了客戶同服務(wù)器間的通信機制,是連接客戶同服務(wù)器的橋梁和紐帶??蛻敉ㄟ^接口實現(xiàn)與服務(wù)器通信,獲取現(xiàn)場設(shè)備的各種信息。統(tǒng)一的標(biāo)準(zhǔn)接口是OPC的實質(zhì)和靈魂。26三、三、OPC的作用的作用vOPC的優(yōu)勢,在于異構(gòu)系統(tǒng)的集成可以通過OPC技術(shù)來解決(也可以通過協(xié)議轉(zhuǎn)換橋來解決)。OPC服務(wù)器集成了多種總線協(xié)議,在服務(wù)器中實現(xiàn)協(xié)議轉(zhuǎn)換,并將接收到的數(shù)據(jù)通過COM或DCOM傳給客戶端。vOPC服務(wù)器由硬件廠商提供,因為硬件廠商了解底層協(xié)議,方便編寫OPC服務(wù)器。上層用戶可以用任意一個客戶端(很多組態(tài)軟件集成OPC客戶端),從接口把數(shù)據(jù)讀出即可。2728異構(gòu)網(wǎng)絡(luò)互聯(lián)

24、的實現(xiàn)異構(gòu)網(wǎng)絡(luò)互聯(lián)的實現(xiàn)v現(xiàn)場總線至今仍然是多種總線共存的局面,致使系統(tǒng)集成和異構(gòu)網(wǎng)段之間的數(shù)據(jù)交換面臨許多困難。以O(shè)PC作為異構(gòu)網(wǎng)段集成的中間件可以形成如下圖所示的系統(tǒng)集成軟件解決方案。每個總線段提供各自的OPC服務(wù)器,任一OPC客戶端軟件都可以通過一致的OPC接口訪問這些OPC服務(wù)器,從而獲得各個總線段的數(shù)據(jù)。29OPC優(yōu)勢優(yōu)勢異構(gòu)網(wǎng)絡(luò)的互聯(lián)異構(gòu)網(wǎng)絡(luò)的互聯(lián)30利用協(xié)議轉(zhuǎn)換橋?qū)崿F(xiàn)異構(gòu)網(wǎng)絡(luò)集成31四、四、OPC基礎(chǔ)知識基礎(chǔ)知識32OPC客戶端模型客戶端模型33OPC服務(wù)器的結(jié)構(gòu)vOPC數(shù)據(jù)訪問服務(wù)器在結(jié)構(gòu)上由服務(wù)器(Server)、組(Group)、項(Item)三級對象組成。邏輯關(guān)系上,服務(wù)

25、器和組之間是聚合關(guān)系,組和項之間是包容關(guān)系。其中項對應(yīng)著硬件設(shè)備中某個具體設(shè)備單元,它包括當(dāng)前設(shè)備單元數(shù)據(jù)值、當(dāng)前設(shè)備單元的數(shù)據(jù)時間標(biāo)簽、數(shù)據(jù)品質(zhì)信息等。34客戶端與服務(wù)器的關(guān)系OPC Client #1OPCServerVendor AOPCServerVendor COPCServerVendor BOPC Client #2OPC Client #335服務(wù)器中組與項目的關(guān)系:Item 1GroupItem 2Item 336OPC數(shù)據(jù)傳輸方式:同步和異步方式是同步和異步方式是OPC Client與與OPC Server之間交換數(shù)據(jù)的兩種方式:之間交換數(shù)據(jù)的兩種方式: 同步方式是按照一定

26、的時間頻率交換所同步方式是按照一定的時間頻率交換所有數(shù)據(jù)的方式,方法簡單,但效率較低。適有數(shù)據(jù)的方式,方法簡單,但效率較低。適用于發(fā)送數(shù)據(jù)量教少的場合。用于發(fā)送數(shù)據(jù)量教少的場合。 異步方式則當(dāng)服務(wù)器緩沖區(qū)發(fā)生更改時,異步方式則當(dāng)服務(wù)器緩沖區(qū)發(fā)生更改時,向客戶發(fā)出通知,客戶得到通知后在進行處向客戶發(fā)出通知,客戶得到通知后在進行處理的一種方式。異步方式需要在客戶程序中理的一種方式。異步方式需要在客戶程序中實現(xiàn)服務(wù)器的回調(diào)函數(shù)。適用于發(fā)送數(shù)據(jù)量實現(xiàn)服務(wù)器的回調(diào)函數(shù)。適用于發(fā)送數(shù)據(jù)量大的場合。大的場合。37同步訪問方式38異步訪問方式異步訪問方式 39Cache方式與Device方式:OPC Serv

27、er有一個數(shù)據(jù)緩沖區(qū),存儲來自設(shè)備最新的數(shù)據(jù)值,OPC Client通過該緩沖區(qū)讀寫數(shù)據(jù)的方式為Cache方式 不通過數(shù)據(jù)緩沖區(qū),直接從設(shè)備讀取數(shù)據(jù)的方式為Device方式40OPC DA服務(wù)器對象接口41OPC DA組對象的接口42客戶端需實現(xiàn)的接口IOPCDataCallbackIOPCShutdownIAdviseSink (old)43三、三、OPC組所做的工作組所做的工作v以前版本的OPC服務(wù)器vOPC服務(wù)器開發(fā)工具包v新版本的OPC服務(wù)器44OPC服務(wù)器模型451 1、基于、基于EPAEPA的的OPCOPC服務(wù)器模型服務(wù)器模型vOPC服務(wù)器總體結(jié)構(gòu)由OPC標(biāo)準(zhǔn)接口實現(xiàn)模塊、服務(wù)器界

28、面模塊、存儲緩沖區(qū)模塊、硬件驅(qū)動模塊組成,OPC服務(wù)器與EPA協(xié)議中的詳細交互部分,如圖所示。這樣,OPC保證了EPA與其它標(biāo)準(zhǔn)的產(chǎn)品互聯(lián)互通,解決了EPA設(shè)備與其它標(biāo)準(zhǔn)設(shè)備間的互操作性問題。46OPC服務(wù)器工作流程圖47存儲緩沖區(qū)模塊v存儲緩沖區(qū)中緩存從EPA現(xiàn)場設(shè)備采集到的實時數(shù)據(jù),和存儲來自O(shè)PC客戶端的數(shù)據(jù),而且在OPC客戶端需要時傳給客戶端。存儲緩沖區(qū)高速緩存現(xiàn)場設(shè)備的數(shù)據(jù),使得OPC客戶端的調(diào)用不需等待而快速地從OPC服務(wù)器中返回,減少了OPC客戶端的應(yīng)用程序阻塞時間,加快了其應(yīng)用程序的執(zhí)行。48服務(wù)器界面模塊v服務(wù)器界面的主要功能是方便用戶配置服務(wù)器的參數(shù)。組對象是用來管理標(biāo)簽的

29、,實際上就是對標(biāo)簽的分類。最后就是創(chuàng)建標(biāo)簽對象,數(shù)值就是服務(wù)器從現(xiàn)場設(shè)備取得的實時變化的數(shù)據(jù)。標(biāo)簽對象和現(xiàn)場設(shè)備是一一對應(yīng)的,OPC客戶端程序從OPC服務(wù)器讀取標(biāo)簽對象的數(shù)據(jù),就等于從現(xiàn)場設(shè)備讀取數(shù)據(jù)。49硬件驅(qū)動模塊v現(xiàn)場設(shè)備通過驅(qū)動程序與OPC服務(wù)器進行數(shù)據(jù)交互,簡單的說,即對現(xiàn)場設(shè)備進行讀寫操作。在這里,我們通過EPA協(xié)議與主控制器的通信來實現(xiàn)OPC服務(wù)器的驅(qū)動部分。這里用到的EPA應(yīng)用層服務(wù)是變量訪問服務(wù),包含讀服務(wù)、寫服務(wù)和信息分發(fā)服務(wù)。50v由于EPA協(xié)議數(shù)據(jù)傳輸是基于TCP(UDP)/IP傳輸協(xié)議的,為了使數(shù)據(jù)傳輸?shù)男侍岣?,OPC服務(wù)器采用UDP套接字進行通信,其中,讀寫服務(wù)的

30、通信過程采用客戶機/服務(wù)器(C/S)模式進行通信。下面結(jié)合上圖以變量讀服務(wù)來說明數(shù)據(jù)傳輸流程。v首先,EPA通信發(fā)起方通過鏈接對象標(biāo)識ID查找與其相對應(yīng)的EPA鏈接對象,將EPA鏈接對象中本次通信所需的EPA鏈路信息,包括EPA通信應(yīng)答方的設(shè)備IP地址、功能塊實例ID。v其次,當(dāng)獲得這些信息后,調(diào)用相應(yīng)的應(yīng)用層服務(wù),進行EPA報文的編碼。51v把EPA報文頭和變量讀請求服務(wù)報文封裝好后,EPA服務(wù)報文下傳到EPA套接字映射接口實體。套接字映射接口主要完成兩個功能:第一,按照應(yīng)用層服務(wù)內(nèi)容(本例中為讀服務(wù))確定其優(yōu)先級,并將報文送到相應(yīng)的優(yōu)先級緩沖隊列中去;第二,監(jiān)控EPA鏈路,當(dāng)鏈路空閑時按優(yōu)

31、先級順序進行報文的發(fā)送。v第三,EPA現(xiàn)場設(shè)備收到讀請求報文后,采用EPA服務(wù)中的變量讀正響應(yīng)服務(wù)回答,OPC硬件驅(qū)動程序模塊接收線程函數(shù)通過套接字接收到報文數(shù)據(jù)后,按照變量讀正響應(yīng)報文進行報文解析,刷新OPC數(shù)據(jù)。52系統(tǒng)結(jié)構(gòu)圖53v下面采用EPA服務(wù)中的信息分發(fā)服務(wù)為例說明數(shù)據(jù)傳輸過程。整個過程的流程如圖所示。首先,現(xiàn)場設(shè)備中集成了EPA協(xié)議棧,把現(xiàn)場實時數(shù)據(jù)打包成EPA數(shù)據(jù),發(fā)送到EPA網(wǎng)絡(luò)上;然后,OPC服務(wù)器中的硬件驅(qū)動模塊把接收到EPA報文解包,并把數(shù)據(jù)放到存儲緩沖區(qū)中;第三,OPC客戶端從存儲緩沖區(qū)中讀取數(shù)據(jù);最后,OPC客戶端將數(shù)據(jù)顯示出來。54基于OPC的EPA監(jiān)控系統(tǒng)界面55vEPA系統(tǒng)中集成的現(xiàn)場

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論