李世學(xué) 王小進(jìn) 余光洪
(中國船舶重工集團(tuán)公司七一二研究所,武漢430064)
目前,工業(yè)控制中的各種儀器、儀表、PLC和單片機(jī)系統(tǒng)等都提供了與計(jì)算機(jī)的通訊協(xié)議,為計(jì)算機(jī)控制系統(tǒng)的設(shè)計(jì)提供了極大的方便。但是,由于不同的廠商提供的協(xié)議不同,甚至同一廠商的不同類型設(shè)備和計(jì)算機(jī)通信的協(xié)議也不相同,所以要與這些設(shè)備交換數(shù)據(jù),編寫接口程序就比較復(fù)雜。近年來,OPC技術(shù)的出現(xiàn)很好地解決了這一難題,OPC技術(shù)采用開放式數(shù)據(jù)交互,能使來自不同公司的軟硬件組成一個(gè)有機(jī)的整體。它傳輸可靠,速度快,而且適于大批量數(shù)據(jù)交換,目前已經(jīng)成為工控行業(yè)新的通訊標(biāo)準(zhǔn),廣泛應(yīng)用在工控行業(yè)的各個(gè)領(lǐng)域。OPC技術(shù)完全支持分布式應(yīng)用和異構(gòu)環(huán)境下應(yīng)用程序之間軟件的無縫集成和互操作性,給工業(yè)控制系統(tǒng)應(yīng)用程序間的通信建立一套符合工業(yè)控制要求的通信接口規(guī)范,使控制軟件可以高效、穩(wěn)定地對硬件設(shè)備進(jìn)行數(shù)據(jù)存取操作,系統(tǒng)應(yīng)用軟件之間也可以靈活地進(jìn)行信息交互,極大的提高了控制系統(tǒng)的互操作性和適應(yīng)性。
OPC是OLE for Process Control 的縮寫,是微軟公司的OLE技術(shù)在過程控制方面的應(yīng)用,它以COM和DCOM為基礎(chǔ), 通過COM對象進(jìn)行交互,每個(gè)對象規(guī)范了不同的函數(shù).COM 提供了一種二進(jìn)制的接口標(biāo)準(zhǔn),使得各軟件組件可以用統(tǒng)一的方式進(jìn)行交互。采用OPC后,現(xiàn)場設(shè)備與系統(tǒng)的連接更加簡單、靈活、方便,針對硬件的驅(qū)動程序不再由軟件廠家開發(fā),而是由硬件廠家提供統(tǒng)一的OPC接口,從而避免了軟件廠家的重復(fù)開發(fā),大大降低了開發(fā)費(fèi)用,圖1為基于OPC的軟件結(jié)構(gòu)。
圖1 OPC 的軟件結(jié)構(gòu)
圖2 基于OPC 的SCADA系統(tǒng)結(jié)構(gòu)
OPC規(guī)范可以應(yīng)用在許多應(yīng)用程序中,如它們可以應(yīng)用于從 SCADA 或者 DCS系統(tǒng)的物理設(shè)備中獲取原始數(shù)據(jù),也可以應(yīng)用于從 SCADA或者 DCS系統(tǒng)中獲取數(shù)據(jù)到應(yīng)用程序中。實(shí)際上,OPC設(shè)計(jì)的目的就是從網(wǎng)絡(luò)上某節(jié)點(diǎn)獲取數(shù)據(jù)。
OPC按照面向?qū)ο蟮脑瓌t,將一個(gè)應(yīng)用程序作為一個(gè)對象封裝起來,只將接口方法暴露在外面,客戶以統(tǒng)一的方式去調(diào)用這個(gè)方法,從而保證軟件對客戶的透明性,使得用戶完全從底層的開發(fā)中脫離出來。因此可以將OPC客戶機(jī)、服務(wù)器在物理上分開,分布于不同的網(wǎng)絡(luò)節(jié)點(diǎn)上,這為實(shí)現(xiàn)分布式SCADA系統(tǒng)提供了一種實(shí)現(xiàn)方式。圖2為基于OPC的SCADA系統(tǒng)結(jié)構(gòu)。
OPC規(guī)范描述了 OPC服務(wù)器需要實(shí)現(xiàn)的C0M對象及其接口,不管現(xiàn)場設(shè)備以何種形式存在,客戶都要以統(tǒng)一的形式去訪問,從而保證了軟件對客戶的透明性。按照這種需求,基于OPC技術(shù)的SCADA系統(tǒng)可由兩部分組成,一部分是OPC服務(wù)器,主要負(fù)責(zé)協(xié)議處理與提供標(biāo)準(zhǔn)OPC接口服務(wù);另一部分是SCADA應(yīng)用程序,通過OPC提供給客戶的標(biāo)準(zhǔn)接口訪問數(shù)據(jù),完成SCADA數(shù)據(jù)處理、圖形分析、報(bào)表輸出、事故追憶和報(bào)警處理等。其中,OPC服務(wù)器部分,是建立在COM/DCOM技術(shù)基礎(chǔ)上,它以COM組件的形式存在,可以分為進(jìn)程內(nèi)組件、進(jìn)程間組件和遠(yuǎn)程組件三類。
OPC服務(wù)器由3類對象組成,相當(dāng)于3種層次上的接口:服務(wù)器(Server)、組(Group)和數(shù)據(jù)項(xiàng)(Item)。服務(wù)器對象(Server)擁有服務(wù)器的所有信息,同時(shí)也是組對象(Group)的容器,一個(gè)服務(wù)器對應(yīng)于一個(gè)OPC Server,即一種設(shè)備的驅(qū)動程序。在一個(gè)Server中,可以有若干個(gè)組。組對象(Group)擁有本組的所有信息,同時(shí)包容并邏輯組織OPC數(shù)據(jù)項(xiàng)(Item)。項(xiàng)對象是讀寫數(shù)據(jù)的最小邏輯單位,一個(gè)項(xiàng)與具體的位號相連,通常指向設(shè)備的一個(gè)寄存器單元。OPC在SCADA中的體系結(jié)構(gòu)如圖3所示[5]。
圖3 OPC在SCADA中的體系結(jié)構(gòu)
在本系統(tǒng)中,OPC服務(wù)器程序?yàn)檫M(jìn)程間組件。主要實(shí)現(xiàn)了三個(gè)類對象 CServer,CGroup,和CItem。其中CServer和CGroup類對象是COM對象。CServer對象封裝了 IOPC Server接口,IOPC Browse Server Address Space接口,IOPCItemProperties 接口,IOPCCommon 接口,實(shí)現(xiàn)對OPC服務(wù)器信息的維護(hù),并作為OPC組對象CGroup的包容器,提供組織OPC組對象的方法,并管理OPC組對象。組對象CGroup封裝了 IOPCGroupStateMgt接口,IOPCASyncIO2接口,IOPCItemMgt接口,IOPCSyncIO接口。它維護(hù)有關(guān)自身信息,提供包容 OPC項(xiàng)對象的機(jī)制,管理 OPC項(xiàng)對象,提供了對項(xiàng)對象進(jìn)行讀/寫和通信的接口方法。CItem類實(shí)現(xiàn)OPC項(xiàng)對象,提供對數(shù)據(jù)源的訪問方法,數(shù)據(jù)源可以是現(xiàn)場I/O設(shè)備,也可以是其它軟件程序。下面是基于ATL模板的服務(wù)器接口、瀏覽服務(wù)器地址空間接口、項(xiàng)屬性接口的定義和實(shí)現(xiàn)[4]。
利用OPC技術(shù)實(shí)現(xiàn)通訊可靠性高、速度快,目前已成為自動化系統(tǒng)、現(xiàn)場設(shè)備與工廠辦公管理應(yīng)用程序之間的有效通訊方式,使不同系統(tǒng)相互之間的數(shù)據(jù)交換得以簡捷化和標(biāo)準(zhǔn)化,極大地方便了硬件開發(fā)商、軟件開發(fā)商和終端用戶。SCADA軟件中集成OPC技術(shù)可以實(shí)現(xiàn)從過程控制到以上級系統(tǒng)間的緊密連接和完全開放,形成了真正意義上的全開放、可互操作的工業(yè)控制系統(tǒng),實(shí)現(xiàn)管控一體化。
[1]徐國君, 李成利.OPC技術(shù)及其在工業(yè)擰制中的應(yīng)用[J].青島科技大學(xué)學(xué)報(bào)(自然科學(xué)版), 2003.
[2]Http: //www.opcfoundation.org OPC Data Access Custom Specification 2.0.
[3]潘愛民. COM 原理[M]. 北京: 清華大學(xué)出版社,2000.
[4]Don Box, 潘愛民譯.COM本質(zhì)論[M]. [s.l.]: 中國電力出版社, 2001.
[5]高翔.基于OPC接口訪問過程控制的實(shí)現(xiàn)[J].燃料與化工, 2006: 37.