基于Visual C#的OPC客戶端實(shí)現(xiàn)
摘 要:OPC是連接數(shù)據(jù)源(OPC服務(wù)器)和數(shù)據(jù)的使用者(OPC應(yīng)用程序)之間的軟件接口標(biāo)準(zhǔn)。這里以C#為開發(fā)工具,按照OPC技術(shù)的規(guī)范標(biāo)準(zhǔn),將OPC技術(shù)應(yīng)用到虛擬儀器顯示組件中。具體實(shí)現(xiàn)了OPC客戶端數(shù)據(jù)訪問服務(wù)器的過程,接口步驟及其讀寫數(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ī)軟件替代傳統(tǒng)的硬件實(shí)現(xiàn)的一些功能,將計(jì)算機(jī)硬件和軟件有機(jī)的融合為一體,這就是所謂的虛擬儀器。近年來,世界各國(guó)的虛擬儀器公司開發(fā)了不少基于LabVIEW,Matlab,VC++,VB等虛擬儀器開發(fā)平臺(tái)軟件,當(dāng)硬件操作的設(shè)備驅(qū)動(dòng)改變時(shí),軟件開發(fā)人員需要修改大量的驅(qū)動(dòng)程序來連接此設(shè)備,因此使得虛擬儀器開發(fā)平臺(tái)開發(fā)難度大、通用性差。為此,提出了基于OPC技術(shù)的虛擬儀器,它是由硬件供應(yīng)商和軟件開發(fā)商之間建立一套完整的“規(guī)則”,只要遵循這套規(guī)則,數(shù)據(jù)交互對(duì)兩者來說都是透明的,硬件供應(yīng)商無需考慮應(yīng)用程序的多種需求和傳輸協(xié)議,軟件開發(fā)商也無需了解硬件的實(shí)質(zhì)和操作過程。
l OPC技術(shù)
OPC(OLE Process Contro1)是OPC基金會(huì)組織倡導(dǎo)的工業(yè)控制和生產(chǎn)自動(dòng)化領(lǐng)域中使用的硬件和軟件的接口標(biāo)準(zhǔn),以便有效地在應(yīng)用和過程控制設(shè)備之間讀寫數(shù)據(jù),具體的功能實(shí)現(xiàn)要由開發(fā)商根據(jù)需要自主的進(jìn)行研究與開發(fā)。換句話說OPC規(guī)范是一套公共的軟件標(biāo)準(zhǔn),任何OPC開發(fā)人員所開發(fā)的OPC軟件都要符合這個(gè)標(biāo)準(zhǔn)。
OPC技術(shù)的特點(diǎn)可概括為如下3個(gè)方面:開放性(Openness)、產(chǎn)業(yè)性(Productivity)和“即插即用”的互聯(lián)性(Connectivity),因此可以說,“OPC=Openness+Productivity+Connectivity”,這也是對(duì)OPC優(yōu)點(diǎn)最概括的描述。因此OPC在短時(shí)間內(nèi)取得了飛速的發(fā)展。
1.1 OPC服務(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所示。
OPC服務(wù)器對(duì)象維護(hù)有關(guān)服務(wù)器信息,并作為OPC組對(duì)象的包容器,它提供了對(duì)數(shù)據(jù)源進(jìn)行讀/寫和通信的接口方法,可以動(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)的操作都是通過包容此項(xiàng)的OPc組對(duì)象完成的。
1.2 OPC的接口方式
OPC服務(wù)器通常支持兩種類型的訪問接口:自定義接口(The OPC Custom Interfaces)和自動(dòng)化接口(The OPC Automation Interfaces),它們分別為不同的編程語言環(huán)境提供訪問機(jī)制。
自定義接口是任何OPC服務(wù)器所必須實(shí)現(xiàn)的接口,它描述了OPC組件對(duì)象的接口和其實(shí)現(xiàn)的方法,適合C++語言設(shè)計(jì),并可實(shí)現(xiàn)最佳運(yùn)行性能的客戶應(yīng)用程序。
自動(dòng)化接口是可選接口(Optional Interface),它提供了自動(dòng)配置和存取過程控制數(shù)據(jù)的接口,方便了Visual Basic,Delphi,C#及其他可以使用自動(dòng)化服務(wù)器應(yīng)用程序接口的高級(jí)商業(yè)軟件使用。自動(dòng)化接口實(shí)際上是定制接口上的自動(dòng)化封裝,OPC規(guī)范通過提供一套標(biāo)準(zhǔn)的自動(dòng)化接口包裝器來實(shí)現(xiàn)這一功。
1.3 OPC通信方式
OPC規(guī)范規(guī)定了兩種通信方式:同步通信方式和異步通信方式。
同步通信時(shí),OPC客戶程序?qū)PC服務(wù)器進(jìn)行讀寫操作時(shí),OPC客戶程序必須等到OPC服務(wù)器對(duì)應(yīng)的操作全部完成以后才能返回,在此期間OPC客戶程序一直處于等待狀態(tài)。如果有大量數(shù)據(jù)進(jìn)行操作或者有大量OPC客戶程序?qū)PC服務(wù)器進(jìn)行讀寫操作,必然造成OPC客戶程序的阻塞現(xiàn)象。因此同步通信適用于OPC客戶較少,數(shù)據(jù)量較小時(shí)的場(chǎng)合。
異步通信時(shí),OPC客戶程序?qū)Ψ?wù)器進(jìn)行讀寫操作時(shí),OPC客戶程序操作后立刻返回,不用等待OPC服務(wù)器的操作,可以進(jìn)行其他操作。當(dāng)0PC服務(wù)器完成操作后再通知OPC客戶程序。因此,相對(duì)于同步通信和異步通信的效率更高,適用于多客戶訪問同一OPC服務(wù)器和大量數(shù)據(jù)的場(chǎng)合。
評(píng)論