1 引言
OPC是OLE for Process Control的縮寫,即把OLE應(yīng)用于工業(yè)控制領(lǐng)域。OLE的原意是對(duì)象鏈接和嵌入,隨著OLE2的發(fā)行,其范圍已遠(yuǎn)遠(yuǎn)超出了這個(gè)概念。現(xiàn)在的OLE包容了新的特征,如統(tǒng)一數(shù)據(jù)傳輸、結(jié)構(gòu)化存儲(chǔ)和自動(dòng)化,已經(jīng)獨(dú)立于計(jì)算機(jī)語(yǔ)言、操作系統(tǒng)甚至硬件平臺(tái)的一種規(guī)范,是面向?qū)ο蟪绦蛟O(shè)計(jì)概念的進(jìn)一步推廣。OPC建立在OLE規(guī)范之上,它為工業(yè)控制領(lǐng)域提供了一種標(biāo)準(zhǔn)的數(shù)據(jù)訪問機(jī)制。
工業(yè)控制領(lǐng)域用到大量的現(xiàn)場(chǎng)設(shè)備,在OPC出現(xiàn)之前,軟件開發(fā)商需要開發(fā)大量的驅(qū)動(dòng)程序來(lái)連接這些設(shè)備。即使硬件供應(yīng)商在硬件上做了一些小小的改動(dòng),應(yīng)用程序就可能需要重寫;同時(shí),由于不同設(shè)備甚至同一設(shè)備不同單元的驅(qū)動(dòng)程序也可能不同,軟件開發(fā)商很難同時(shí)對(duì)這些設(shè)備進(jìn)行訪問以優(yōu)化操作。硬件供應(yīng)商也在嘗試解決這個(gè)問題,然而由于不同客戶有著不同的需要,同時(shí)也存在著不同的數(shù)據(jù)傳輸協(xié)議,因此也一直沒有完整的解決方案。
自O(shè)PC出現(xiàn)之后,這個(gè)問題終于得到解決。OPC規(guī)范包括OPC服務(wù)器和OPC客戶兩個(gè)部分,其實(shí)質(zhì)是在硬件供應(yīng)商和軟件開發(fā)商之間建立了一套完整的“規(guī)范”,只要遵循這套規(guī)則,數(shù)據(jù)交互對(duì)兩者來(lái)說(shuō)都是透明的,硬件供應(yīng)商無(wú)須考慮應(yīng)用程序的多種需求和傳輸協(xié)議,軟件開發(fā)商也無(wú)須了解硬件的實(shí)質(zhì)和操作過程。
2 OPC適用范圍和基本概念
2.1 OPC適用范圍
OPC的設(shè)計(jì)者們最終的目標(biāo)是在工業(yè)領(lǐng)域建立了一套數(shù)據(jù)傳輸規(guī)范,并為之制定了一系列的發(fā)展計(jì)劃。現(xiàn)有的OPC規(guī)范涉及如下領(lǐng)域:
(1) 在線數(shù)據(jù)監(jiān)測(cè)。實(shí)現(xiàn)了應(yīng)用程序和工業(yè)控制設(shè)備之間高效、靈活的數(shù)據(jù)讀寫。
(2) 報(bào)警和事件處理。提供了OPC服務(wù)器發(fā)生異常及OPC服務(wù)器設(shè)定事件到來(lái)時(shí),向OPC客戶發(fā)送通知的一種機(jī)制。
(3) 歷史數(shù)據(jù)訪問。實(shí)現(xiàn)了讀取、操作、編輯歷史數(shù)據(jù)庫(kù)的方法。
(4) 遠(yuǎn)程數(shù)據(jù)訪問。借助Microsoft的DCOM技術(shù),OPC實(shí)現(xiàn)了高性能的遠(yuǎn)程數(shù)據(jù)訪問能力。
(5) 安全性、批處理、歷史報(bào)警事件數(shù)據(jù)訪問等。
2.2 OPC基本概念
本系統(tǒng)使用的OPC服務(wù)器為臺(tái)灣泓格科技有限公司的NAP7000 OPC Server。對(duì)數(shù)據(jù)項(xiàng)設(shè)定好代表的具體的通道,可以把數(shù)據(jù)項(xiàng)看作數(shù)據(jù)源的地址。
OPC服務(wù)器由三類對(duì)象組成:服務(wù)器(Server)、組(Group)、數(shù)據(jù)項(xiàng)(Item)。服務(wù)器對(duì)象擁有服務(wù)器的所有信息,同時(shí)也是組對(duì)象的容器。組對(duì)象擁有本組的所有信息,同時(shí)包容并邏輯組織OPC數(shù)據(jù)項(xiàng)。在這里數(shù)據(jù)項(xiàng)就是指12個(gè)位輸入和2個(gè)位輸出。
OPC組對(duì)象提供了客戶組織數(shù)據(jù)的一種方法。客戶可對(duì)之進(jìn)行讀寫,還可以設(shè)置客戶端的數(shù)據(jù)更新速率。當(dāng)服務(wù)器緩沖區(qū)內(nèi)的數(shù)據(jù)發(fā)生改變時(shí),OPC將向客戶發(fā)出通知,客戶得到通知后再進(jìn)行必要的處理。而無(wú)須浪費(fèi)大量的時(shí)間進(jìn)行查詢。OPC規(guī)范定義了兩種組對(duì)象:公共組和局部組(私有組)。公共組由多個(gè)客戶共有,局部組只隸屬于一個(gè)OPC客戶。一般來(lái)說(shuō),客戶和服務(wù)器的一對(duì)連接只需要定義一個(gè)組對(duì)象。
在每個(gè)組對(duì)象中,客戶可以加入多個(gè)OPC數(shù)據(jù)項(xiàng)。OPC數(shù)據(jù)項(xiàng)是服務(wù)器端定義的對(duì)象,通常指向設(shè)備的一個(gè)寄存器單元。OPC客戶對(duì)設(shè)備寄存器的操作都是通過其數(shù)據(jù)項(xiàng)來(lái)完成的,通過OPC數(shù)據(jù)項(xiàng),OPC規(guī)范盡可能地隱藏了設(shè)備的特殊信息,也使OPC服務(wù)器的通用性大大增強(qiáng)。OPC數(shù)據(jù)項(xiàng)并不提供對(duì)外接口,客戶不能直接對(duì)之進(jìn)行操作,所有的操作都是通過組對(duì)象進(jìn)行的。每個(gè)OPC數(shù)據(jù)項(xiàng)的數(shù)據(jù)結(jié)構(gòu)包括三個(gè)成員變量:即數(shù)據(jù)值、數(shù)據(jù)質(zhì)量和時(shí)間戳。數(shù)據(jù)值是以Variant形式表示的。
3 客戶端監(jiān)控程序開發(fā)一般步驟
OPC規(guī)范提供了兩套接口方案,即COM接口和自動(dòng)化。COM接口效率高,通過該接口,客戶能夠發(fā)揮OPC服務(wù)器的最佳性能,采用C++語(yǔ)言的客戶一般用COM接口方案;自動(dòng)化接口使用解釋性和宏語(yǔ)言訪問OPC服務(wù)器,采用Visaul Basic語(yǔ)言的客戶一般采用自動(dòng)化接口。自動(dòng)化接口使解釋性和宏語(yǔ)言編寫客戶應(yīng)用程序變得簡(jiǎn)單。本文給出的客戶端應(yīng)用程序的應(yīng)用實(shí)例就是用Visual Basic編寫的。
3.1 OPC的連接
先在“引用”將OPC Automation 2.0加入,然后開始定義全局變量。在本程序中,筆者使用了兩個(gè)OPC組進(jìn)行OPC訪問。首先定義了OPC組與OPC數(shù)據(jù)項(xiàng)。注意數(shù)據(jù)項(xiàng)的值一定要以Variant形式表示。在定義所有變量后,就要進(jìn)行OPC連接了。
主要程序如下:
Set Server = New OPCServer ’生成OPC對(duì)象,
sServers = Server.GetOPCServers("")
Server.Connect sServerName, "" ’連接OPC服務(wù)器
Set Group = Server.OPCGroups.Add("I7000")
Set ItemObj = GroupObj.OPCItems.AddItem("XXXITEM", 1)
' XXXITEM為添加的ITEM名稱
3.2 OPC的數(shù)據(jù)項(xiàng)讀寫
對(duì)OPC的寫可以有同步與異步之分,對(duì)于大量的數(shù)據(jù)傳輸,異步是更佳的選擇;但對(duì)少量的數(shù)據(jù)傳輸,同步表現(xiàn)得更好。要進(jìn)行數(shù)據(jù)傳輸,先要將值數(shù)據(jù)進(jìn)行賦值。
讀數(shù)據(jù)項(xiàng)主要程序如下:
Dim anItem As OPCItem
Set anItem = Group.OPCItems.Item(1)
anItem.Read OPCCache
寫數(shù)據(jù)項(xiàng)主要程序如下:
Dim anItem As OPCItem
Group.OPCItems.AddItem lTagSelected.Caption, 1
Set anItem = Group.OPCItems.Item(1)
3.3 OPC連接斷開
OPC客戶端連接后要占用服務(wù)器資源,所以如果不需要使用OPC時(shí),必須進(jìn)行OPC連接斷開。斷開的程序相當(dāng)簡(jiǎn)單,釋放資源即可。
斷開連接的主要程序如下:
Server.OPCGroups.RemoveAll
Server.Disconnect
Set Server = Nothing
4 結(jié)論
通過OPC技術(shù),經(jīng)過直接訪問硬件供應(yīng)商提供的OPC服務(wù)器,從而達(dá)到訪問硬件的數(shù)據(jù)。OPC的優(yōu)越性是顯而易見的:
(1) 硬件供應(yīng)商只須提供一套符合OPC Server規(guī)范的程序組,無(wú)須考慮工程人員需求。
(2) 軟件開發(fā)商無(wú)須重寫大量的設(shè)備驅(qū)動(dòng)程序。
(3) 工程人員在設(shè)備選型上有了更多的選擇。
(4) OPC擴(kuò)展了設(shè)備的概念。只要符合OPC Server規(guī)范,OPC客戶都可與之進(jìn)行數(shù)據(jù)交互,而無(wú)須了解究竟是PLC還是儀表,甚至在數(shù)據(jù)庫(kù)系統(tǒng)上建立了OPC規(guī)范,OPC客戶也可與之方便地實(shí)現(xiàn)數(shù)據(jù)交互。