基于VisualC的OPC客戶端實(shí)現(xiàn)_第1頁(yè)
基于VisualC的OPC客戶端實(shí)現(xiàn)_第2頁(yè)
基于VisualC的OPC客戶端實(shí)現(xiàn)_第3頁(yè)
基于VisualC的OPC客戶端實(shí)現(xiàn)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、基于VisualC#的OPC客戶端實(shí)現(xiàn)時(shí)間:2009-04-2816:08:22來(lái)源:現(xiàn)代電子技術(shù)作者:朱立軍,安娜,陳未如沈陽(yáng)化工學(xué)院摘要:OPC是連接數(shù)據(jù)源(OPC服務(wù)器)和數(shù)據(jù)的使用者(OPC應(yīng)用程序)之間的軟件接口標(biāo)準(zhǔn)。這里以C#為開(kāi)發(fā)工具,按照OPC技術(shù)的規(guī)范標(biāo)準(zhǔn),將OPC技術(shù)應(yīng)用到虛擬儀器顯示組件中。具體實(shí)現(xiàn)了OPC客戶端數(shù)據(jù)訪問(wèn)服務(wù)器的過(guò)程,接口步驟及其讀寫(xiě)數(shù)據(jù)的方法,并根據(jù)OPC服務(wù)器提供的數(shù)據(jù),最終在虛擬儀器顯示組件中生成了虛擬的正弦波、方波、鋸齒波、三角波等。關(guān)鍵詞:OPC;OPC接口;OPC服務(wù)器;C#0引言隨著計(jì)算機(jī)技術(shù)和數(shù)字信號(hào)處理技術(shù)的發(fā)展,人們可以用計(jì)算機(jī)軟件替代

2、傳統(tǒng)的硬件實(shí)現(xiàn)的一些功能,將計(jì)算機(jī)硬件和軟件有機(jī)的融合為一體,這就是所謂的虛擬儀器。近年來(lái),世界各國(guó)的虛擬儀器公司開(kāi)發(fā)了不少基于LabVIEW,Matlab,VC+,VB等虛擬儀器開(kāi)發(fā)平臺(tái)軟件,當(dāng)硬件操作的設(shè)備驅(qū)動(dòng)改變時(shí),軟件開(kāi)發(fā)人員需要修改大量的驅(qū)動(dòng)程序來(lái)連接此設(shè)備,因此使得虛擬儀器開(kāi)發(fā)平臺(tái)開(kāi)發(fā)難度大、通用性差。為此,提出了基于OPC技術(shù)的虛擬儀器,它是由硬件供應(yīng)商和軟件開(kāi)發(fā)商之間建立一套完整的規(guī)則”,只要遵循這套規(guī)則,數(shù)據(jù)交互對(duì)兩者來(lái)說(shuō)都是透明的,硬件供應(yīng)商無(wú)需考慮應(yīng)用程序的多種需求和傳輸協(xié)議,軟件開(kāi)發(fā)商也無(wú)需了解硬件的實(shí)質(zhì)和操作過(guò)程。lOPC技術(shù)OPC(OLEProcessContro1

3、)是OPC基金會(huì)組織倡導(dǎo)的工業(yè)控制和生產(chǎn)自動(dòng)化領(lǐng)域中使用的硬件和軟件的接口標(biāo)準(zhǔn),以便有效地在應(yīng)用和過(guò)程控制設(shè)備之間讀寫(xiě)數(shù)據(jù),具體的功能實(shí)現(xiàn)要由開(kāi)發(fā)商根據(jù)需要自主的進(jìn)行研究與開(kāi)發(fā)。換句話說(shuō)OPC規(guī)范是一套公共的軟件標(biāo)準(zhǔn),任何OPC開(kāi)發(fā)人員所開(kāi)發(fā)的OPC軟件都要符合這個(gè)標(biāo)準(zhǔn)。OPC技術(shù)的特點(diǎn)可概括為如下3個(gè)方面:開(kāi)放性(Openness)、產(chǎn)業(yè)性(Productivity)和即插即用”的互聯(lián)性(Connectivity),因此可以說(shuō),"OPC=Openness+Productivity+Connectivity,這也是OPC優(yōu)點(diǎn)最概括的描述。因此OPC在短時(shí)間內(nèi)取得了飛速的發(fā)展。1.1O

4、PC服務(wù)器的組成OPC標(biāo)準(zhǔn)采用C/S模式,OPC服務(wù)器負(fù)責(zé)向OPC客戶端不斷的提供數(shù)據(jù)。OPC服務(wù)器包括3類對(duì)象(Object):服務(wù)器對(duì)象(Server)、組對(duì)象(roup)和項(xiàng)對(duì)象(Item)3類對(duì)象都包括一系列接口,關(guān)系如圖1所示。圖I接口關(guān)系示意圖OPC服務(wù)器對(duì)象維護(hù)有關(guān)服務(wù)器信息,并作為OPC組對(duì)象的包容器,它提供了對(duì)數(shù)據(jù)源進(jìn)行讀/寫(xiě)和通信的接口方法,可以動(dòng)態(tài)地創(chuàng)建或釋放組對(duì)象。OPC組對(duì)象由客戶端定義和維護(hù),它維護(hù)有關(guān)其自身的信息,提供包容OPC項(xiàng)對(duì)象的機(jī)制,從邏輯上實(shí)現(xiàn)對(duì)OPC項(xiàng)的管理。OPC項(xiàng)對(duì)象包含在OPC組中,可由客戶端定義和維護(hù)。項(xiàng)代表了與數(shù)據(jù)源的連接,所有的OPC項(xiàng)的操

5、作都是通過(guò)包容此項(xiàng)的OPc組對(duì)象完成的。1.2OPC的接口方式OPC服務(wù)器通常支持兩種類型的訪問(wèn)接口:自定義接口(TheOPCCustomInterfaces)和自動(dòng)化接口(TheOPCAutomationInterfaces),它們分別為不同的編程語(yǔ)言環(huán)境提供訪問(wèn)機(jī)制。自定義接口是任何OPC服務(wù)器所必須實(shí)現(xiàn)的接口,它描述了OPC組件對(duì)象的接口和其實(shí)現(xiàn)的方法,適合C+語(yǔ)言設(shè)計(jì),并可實(shí)現(xiàn)最佳運(yùn)行性能的客戶應(yīng)用程序。自動(dòng)化接口是可選接口(OptionalInterface),它提供了自動(dòng)配置和存取過(guò)程控制數(shù)據(jù)的接口,方便了VisualBasic,Delphi,C#及其他可以使用自動(dòng)化服務(wù)器應(yīng)用程序

6、接口的高級(jí)商業(yè)軟件使用。自動(dòng)化接口實(shí)際上是定制接口上的自動(dòng)化封裝,OPC規(guī)范通過(guò)提供一套標(biāo)準(zhǔn)的自動(dòng)化接口包裝器來(lái)實(shí)現(xiàn)這一功。1.3OPC通信方式OPC規(guī)范規(guī)定了兩種通信方式:同步通信方式和異步通信方式。同步通信時(shí),OPC客戶程序?qū)PC服務(wù)器進(jìn)行讀寫(xiě)操作時(shí),OPC客戶程序必須等到OPC服務(wù)器對(duì)應(yīng)的操作全部完成以后才能返回,在此期間OPC客戶程序一直處于等待狀態(tài)。如果有大量數(shù)據(jù)進(jìn)行操作或者有大量OPC客戶程序?qū)PC服務(wù)器進(jìn)行讀寫(xiě)操作,必然造成OPC客戶程序的阻塞現(xiàn)象。因此同步通信適用于OPC客戶較少,數(shù)據(jù)量較小時(shí)的場(chǎng)合。異步通信時(shí),OPC客戶程序?qū)Ψ?wù)器進(jìn)行讀寫(xiě)操作時(shí),OPC客戶程序操作后立刻

7、返回,不用等待OPC服務(wù)器的操作,可以進(jìn)行其他操作。當(dāng)0PC服務(wù)器完成操作后再通知OPC客戶程序。因此,相對(duì)于同步通信和異步通信的效率更高,適用于多客戶訪問(wèn)同一OPC服務(wù)器和大量數(shù)據(jù)的場(chǎng)合。2OPC客戶端程序的設(shè)計(jì)方法(1)安裝OPC自動(dòng)化接口服務(wù)。在.NET環(huán)境下,點(diǎn)擊項(xiàng)目”子菜單下,添加引用”,在彈出的對(duì)話框COM中選中“OPCDAAutomationWrapper2.02”項(xiàng),點(diǎn)擊確定”按鈕,這樣才能使用自動(dòng)化接口的服務(wù)。(2)連接OPC服務(wù)器。本例中使用的OPC服務(wù)器名為“I©NICS.SimulatorOPCDA.2"。首先聲明變量,這樣才能觸發(fā)事件(DataCh

8、ange)來(lái)獲取實(shí)時(shí)數(shù)據(jù)。連接不同的OPC服務(wù)器只要改變其服務(wù)器名稱和OPC服務(wù)器所在的計(jì)算機(jī)名稱即可。(3)添加組/增加一個(gè)名稱為group的組tOpcfiroup=<OPCGraupClass)OPCServerClass.OPO(rroups.Add(;激活該組,準(zhǔn)備收發(fā)數(shù)據(jù).tOpcGroup,IsActive=true?設(shè)置組的刷新頻率.單位為m寫(xiě)本例中使用的刷新頻率最小為1mslOpcGroup.UpdateRate=1;C4)添加數(shù)據(jù)項(xiàng)privateOPCItemitemly啟動(dòng)數(shù)據(jù)訂閱功能.否則Dat-aChange事件不能觸發(fā)tOpcGroup.IsSubscribed

9、=true;(5)OPC數(shù)據(jù)的讀和寫(xiě)。對(duì)OPC服務(wù)器中的數(shù)據(jù)項(xiàng)數(shù)讀可以通過(guò)group組的DataChange事件觸發(fā)來(lái)讀取。該事件有多個(gè)參數(shù):其中:NumItems是指數(shù)據(jù)項(xiàng)的個(gè)數(shù);ltemValues為數(shù)據(jù)項(xiàng)的數(shù)據(jù);Qualities為數(shù)據(jù)項(xiàng)的品質(zhì);TimeStamps為數(shù)據(jù)項(xiàng)的更改時(shí)間;ClientHandles是數(shù)據(jù)項(xiàng)的標(biāo)簽索引,其所指的OPC標(biāo)簽的值在ItemValues(1)中,只有數(shù)據(jù)發(fā)生變化時(shí)才會(huì)觸發(fā)該事件。也只會(huì)傳輸發(fā)生了變化的數(shù)據(jù),沒(méi)有變化的數(shù)據(jù)不會(huì)出現(xiàn)在本事件ItemValues中。使用C#事件處理機(jī)制,將DataChange注冊(cè)到事件,一旦服務(wù)器端數(shù)據(jù)有變化,自動(dòng)觸發(fā)此過(guò)

10、程,觸發(fā)函數(shù)為:voidtOpcGroup_DataChange(iatTransactionlD,intNirmlterns,refArray(4ientHandlestrefArrayItetnVaiuestrefArrayQualities*refArrayTimeStamps)tOpcGroup,DataChange+=newDlOPCGroupEveni_Dat-aChangeEventHandlerttOpcGroup_DataChange)$(6)斷開(kāi)OPC服務(wù)器。OPC客戶端連接后占用服務(wù)器的資源,所以長(zhǎng)時(shí)間不需要使用的OPC讀寫(xiě)數(shù)據(jù),則應(yīng)及時(shí)斷開(kāi)OPC連接以釋放資源。一力刪除

11、所有的數(shù)據(jù)項(xiàng)OPCltemLRemoveAllOPCServerClass,Disconnect0;opchServerShutDown+=newDIOPCServerEvent_Server'ShutDownEventHandler(opcl_ServerShtJiDown);采用C#開(kāi)發(fā)工具,按照OPC規(guī)范來(lái)實(shí)現(xiàn)OPC客戶程序。OPC客戶程序?qū)崿F(xiàn)的功能有:通過(guò)OPC標(biāo)準(zhǔn)接口與OPC數(shù)據(jù)服務(wù)器連接,按照OPC服務(wù)器提供的Sine,Triangle,R8等波形數(shù)據(jù),并取得OPC服務(wù)器中相關(guān)OPC點(diǎn)的數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行綜合處理,實(shí)現(xiàn)各種波形圖案,運(yùn)行程序結(jié)果如圖2所示。霜金9耳.1*同fu*.皆圖2Sine波形圖3結(jié)語(yǔ)OPC規(guī)范的應(yīng)用簡(jiǎn)化了OPC客戶/服務(wù)器的開(kāi)發(fā)過(guò)程,統(tǒng)一了數(shù)據(jù)存取的接口標(biāo)準(zhǔn),將硬件供應(yīng)商與應(yīng)用軟件開(kāi)發(fā)者分離,使得軟件開(kāi)發(fā)者

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論