1 引言
OPC(OLE for Process Control)作為新一代工業(yè)自動化控制軟件部件,被稱為控制系統(tǒng)"中間件技術(shù)",是專為在現(xiàn)場設(shè)備、自控應(yīng)用、企業(yè)管理應(yīng)用軟件之間實現(xiàn)系統(tǒng)無縫集成而設(shè)計的接口規(guī)范,是最近幾年才發(fā)展起來的基于Microsoft公司COM/DCOM連接技術(shù)。它的出現(xiàn)為基于客戶機/服務(wù)器結(jié)構(gòu)體系的工業(yè)自動化過程控制設(shè)備和系統(tǒng)與工業(yè)控制人機界面軟件之間的數(shù)據(jù)信息交換提供了標(biāo)準(zhǔn)接口,目前已被確定為全球事實性的工業(yè)標(biāo)準(zhǔn),得到過程控制設(shè)備制造商和工業(yè)控制軟件開發(fā)商的支持,但在應(yīng)用中,OPC COM/DCOM表現(xiàn)了以下幾點不足:
● 集成性
OPC的DCOM是同Windows的安全注冊機制綁定的,通常采用動態(tài)分配TCP/IP端口方式,很難通過Internet/Intranet,尤其是企業(yè)防火墻。
● 跨平臺性
OPC COM/DCOM是基于微軟的對象遠程過程調(diào)用機制,可以在微軟環(huán)境中方便的進行組件、進程、通信機制的交互,很難運行在非微軟系統(tǒng)。
● 連通性
企業(yè)高層應(yīng)用(如MRP/ERP等)所需要的實時數(shù)據(jù)通常都是通過OPC-COM服務(wù)器獲得,但很多高層應(yīng)用沒有OPC-COM接口,遠程調(diào)用采用CORBA/IIOP形式,OPC DCOM 根本無法解決此類問題。
在此背景下,如何有效擴展OPC的應(yīng)用范圍;面對現(xiàn)有企業(yè)高層應(yīng)用軟件體系結(jié)構(gòu)的不同(Windows系統(tǒng)、UNIX、Lunix等),如何讓高層應(yīng)用軟件去適應(yīng)OPC技術(shù)規(guī)范(基于Microsoft 的DCOM技術(shù)發(fā)展而來),成為亟待解決的問題。
HTTP的出現(xiàn)順理成章,HTTP與DCOM很相似,它簡單、配置廣泛,并且對防火墻比其它協(xié)議更容易發(fā)揮作用,克服了DCOM不足。HTTP請求一般由Web服務(wù)器軟件(如IIS和Apache)來處理,且大部分的應(yīng)用服務(wù)器支持HTTP協(xié)議。但HTTP所缺少的是用單一的標(biāo)準(zhǔn)格式來表達一個RPC調(diào)用中的參數(shù)。XML的出現(xiàn)彌補了這點不足,XML是Web數(shù)據(jù)使用的通用語言,它具有結(jié)構(gòu)化、規(guī)范化、簡潔化和可擴展性等特點,它是一個與平臺無關(guān)的中性的數(shù)據(jù)表達協(xié)議。HTTP和XML的結(jié)合較好的解決了OPC DCOM的不足,正是HTTP協(xié)議和XML的應(yīng)用產(chǎn)生了SOAP(Simple Object Access Protocal)技術(shù),它實現(xiàn)了大量異構(gòu)程序和平臺之間的互操作性,從而使存在的應(yīng)用能夠被廣泛的用戶所訪問,如圖1所示。這些正是SOAP、XML、HTTP成為OPC XML技術(shù)規(guī)范的主要內(nèi)容的原因。
圖1 OPC XML提供了工廠底層到企業(yè)高層應(yīng)用的新途徑
2 OPC XML 技術(shù)基礎(chǔ)
OPC XML技術(shù)主要涉及WEB服務(wù)器技術(shù)及SOAP技術(shù)。
2.1 WEB服務(wù)器技術(shù)
簡單的說,Web Service就是一個應(yīng)用程序,它向外界暴露出一個能夠通過Web進行調(diào)用的API。它使用戶能夠用編程的方法通過Web調(diào)用來實現(xiàn)某個功能的應(yīng)用程序。從深層次上看,Web Service是一種新的Web應(yīng)用程序分支,它們是自包含、自描述、模塊化的應(yīng)用,可以在網(wǎng)絡(luò)(通常為Web)中被描述、發(fā)布、查找以及通過Web來調(diào)用。同時,Web Service是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得Web Service能與其他兼容的組件進行互操作,這些技術(shù)規(guī)范(協(xié)議)包括:
(1) XML(可擴展的標(biāo)記語言):Web Service平臺中表示數(shù)據(jù)的基本格式,除了易于建立和易于分析外,XML主要的優(yōu)點在于它既與平臺無關(guān),又與廠商無關(guān);
(2) XSD:Web Service平臺數(shù)據(jù)類型,系統(tǒng)的所有使用的數(shù)據(jù)類型必須被轉(zhuǎn)換為XSD類型;
(3) WSDL:Web Service描述語言,基于XML的語言,用于描述Web Service及其函數(shù)、參數(shù)和返回值;
(4) UDDI:一套基于Web的、分布式的、為Web Service提供的、信息注冊中心的實現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時也包含一組使企業(yè)能將自身提供的Web Service注冊,以使別的企業(yè)能夠發(fā)現(xiàn)的訪問協(xié)議的實現(xiàn)標(biāo)準(zhǔn);
(5) 遠程過程調(diào)用RPC與消息傳遞:用于應(yīng)用程序間的通信。
2.2 SOAP技術(shù)(簡單對象訪問協(xié)議)
SOAP是一個輕量級數(shù)據(jù)傳輸協(xié)議,通常應(yīng)用于分散、分布式計算與控制環(huán)境中作為數(shù)據(jù)信息交換協(xié)議。簡單的說SOAP就是XML+HTTP,主要包括3部分內(nèi)容:(1) 為一組數(shù)據(jù)信息中描述的是什么內(nèi)容及怎樣處理定義了一種框架結(jié)構(gòu)外殼;(2) 用于表達應(yīng)用程序所定義數(shù)據(jù)類型實例的一套編碼規(guī)則;(3) 用于表征遠程過程調(diào)用和響應(yīng)的一組約定。SOAP能夠潛在應(yīng)用于與其他多種傳輸協(xié)議的結(jié)合,尤其是HTTP和HTTP擴展框架結(jié)構(gòu),(見以下SOAP例子)。SOAP自身不能定義任何應(yīng)用程序語義,如程序模式或執(zhí)行細節(jié)等,相反,它為描述應(yīng)用程序語義確立了一種簡化機制,這需要通過為模件中的編碼數(shù)據(jù)提供一種模件化包裝模式和編碼機制來實現(xiàn)。
3 OPC XML-DA技術(shù)規(guī)范
OPC XML-DA 規(guī)范1.0 版是OPC基金會于2003 年7 月發(fā)布的,此規(guī)范是OPC 基金會的第1 個OPC XML 接口規(guī)范。其它OPC-COM 接口,如報警事件(AE) 接口和歷史數(shù)據(jù)訪問(HDA)接口,將來也會作為XML 接口被重新設(shè)計,并有相應(yīng)的規(guī)范發(fā)布。OPC XML-DA 規(guī)范的核心部分是OPC XML-DA Schema,它定義了構(gòu)成OPC XMLWeb服務(wù)的數(shù)據(jù)類型、結(jié)構(gòu)和方法等,此外規(guī)范還對通信協(xié)議、發(fā)現(xiàn)機制、錯誤處理、互操作性等底層細節(jié)進行了規(guī)定。
3.1 XML-DA對象調(diào)用方法及步驟
XML-DA同COM-DA相比,對對象的調(diào)用方法已完全不同:COM-DA表現(xiàn)為緊耦合方式,組建間可以建立通信通路,通過COM連接點技術(shù)實現(xiàn)服務(wù)器和客戶端的通訊,大部分工作通過客戶端提供回調(diào)函數(shù)實現(xiàn);XML-DA表現(xiàn)為松耦合,它不具備"通信通路"機制,因此為了實現(xiàn)數(shù)據(jù)的訂閱和更新,它采用了輪詢查詢方式,圖2為整個輪詢查詢的過程描述。
圖2 輪詢查詢的交互過程
整個輪詢查詢過程按照以下七個步驟進行:
第一步:客戶端向服務(wù)器端發(fā)初始化定義(Subscribe),指定所定義的數(shù)據(jù)(Item[ ]);
第二步:服務(wù)器端相應(yīng)客戶端初始化定義(SubscribeResponse),返回客戶端所定義的數(shù)據(jù)標(biāo)識及初始化值;
第三步:客戶端根據(jù)服務(wù)器端返回數(shù)據(jù)標(biāo)識,向服務(wù)器端發(fā)出SubscrptionPollRefresh請求;
注:客戶端使用SubscrptionPollRefresh請求時,可設(shè)置HoldTime和WaitTime參數(shù),如果在Holdtime 期間任何一個項目的值發(fā)生了變化,就在Holdtime 結(jié)束時刻返回響應(yīng),否則開始等待。如果在等待時間(Waittime) 內(nèi)任何一個項目的值發(fā)生了變化,就立即返回響應(yīng)。如果在Holdtime 和Waittime 兩段時間內(nèi)沒有一個項目的值發(fā)生變化,就在Waittime 結(jié)束時返回一個響應(yīng),但這個響應(yīng)不包含任何項目的值;該模式設(shè)計目的在于減少了服務(wù)器和客戶端數(shù)據(jù)交換負荷,提高OPC XML的性能。
第四步:服務(wù)器端向客戶端返回SubscrptionPollRefresh調(diào)用以來,項目列表中發(fā)生的變化的所有項目;
第五步:客戶端處理相應(yīng)的變化,如果需要繼續(xù)查詢,回到第三步;
第六步:否則,向服務(wù)器端發(fā)出SubscriptionCancel請求;
第七步:服務(wù)器響應(yīng)SubscriptionCancel請求,刪除當(dāng)前Subscribe 調(diào)用中指定的項目列表。
從中不難看出,XML-DA輪詢查詢過程非常接近與OPC-COM 的"異步回調(diào)機制",客戶端在處理完一次服務(wù)器返回后,不需要等待可以直接進入下一次請求刷新,時間周期的控制已經(jīng)轉(zhuǎn)移到服務(wù)器上,這種方式被稱為"假回調(diào)"。
3.2 XML-DA服務(wù)類型
OPC XML-DA 支持8 種服務(wù),每種服務(wù)都包括一個請求(Request) 和一個響應(yīng)(Re-sponse) 。通過對這些服務(wù)的定義,提供了訪問工業(yè)現(xiàn)場數(shù)據(jù)的標(biāo)準(zhǔn)接口。請求和響應(yīng)照SOAP協(xié)議標(biāo)準(zhǔn)被包裝成SOAP 信封,信封標(biāo)題(可選)說明消息如何被處理,信封正文則包含工業(yè)過程信息。
● Browse 在服務(wù)器的命名空間里搜索所有可獲取的項目(item) 的名字(標(biāo)記名) 。
● GetProperties 返回一個或多個項目的相關(guān)信息。
● GetStatus 返回關(guān)于服務(wù)器、版本、當(dāng)前模式、運行狀況等信息。
● Read 返回一個或多個項目的值、品質(zhì)和時間戳。
● Subscribe 指定一個客戶希望持續(xù)更新的項目列表。
● SubscriptionCancel 刪除在前一個Subscribe 調(diào)用中指定的項目列表。
● SubscriptionPolledRefresh返回自前一個SubscrioptionPolledRefresh 調(diào)用以來,在項目列表中數(shù)值發(fā)生變化的所有項目。
● Write 向一個或多個項目中寫入新值。
3.3 XML-DA數(shù)據(jù)類型
OPC XML-DA 數(shù)據(jù)類型從高到低依次分為Request 、List 、Item 3個等級,較低的數(shù)據(jù)類型屬性可以涵蓋較高數(shù)據(jù)類型屬性。基本的數(shù)據(jù)類型有:string、boolean、float 等20 種簡單類型以及枚舉類型和數(shù)組類型。其中的簡單類型是XML數(shù)據(jù)類型的一個子集,并與OPC-COM-DA 定制接口規(guī)范規(guī)定的數(shù)據(jù)類型相一致。此外,規(guī)范還規(guī)定了一些復(fù)合類型(ComplexType),主要包括:Re-questList、RequestItem、ItemValue 、RequestOptions、ServerState 、ReplyBase 、OPCError、ItemProperty 等。OPC XML-DA 規(guī)范的所有接口都基于這些數(shù)據(jù)類型定義。規(guī)范同時支持空參數(shù)。
3.4 OPC-COM-DA和OPC XML-DA的協(xié)調(diào)
OPC XML-DA 服務(wù)器和OPC-COM-DA服務(wù)器都可以單獨使用,當(dāng)需要將OPC XML-DA 服務(wù)器轉(zhuǎn)換成OPC-COM-DA 服務(wù)器時,可以通過DCOM Wrapper(DCOM中間件)完成,如圖3所示。同樣,可以用XML Wrapper(XML中間件)將OPC-COM-DA服務(wù)器包裝成OPC XML-DA服務(wù)器;對于現(xiàn)有的成百上千種OPC-COM-DA服務(wù)器,由于它們具有標(biāo)準(zhǔn)的接口,因此只需要一個Wrapper,就可以包裝所有的OPC-COM-DA服務(wù)器,從而省去了重新編寫OPC XML-DA 服務(wù)器的工作,目前,很多公司已經(jīng)發(fā)布了COM與XML接口之間進行轉(zhuǎn)換的網(wǎng)關(guān),這些網(wǎng)關(guān)使兩種接口的通訊更加方便。
3.5 開發(fā)工具
目前,針對OPC XML-DA較為基礎(chǔ)的開發(fā)工具包包括:Axis,SUN Java Web Services Developer Pack,Microsoft SOAP Toolkit,IBM Web Services Toolkit,Borland Delphi 7等,增強工具包有:Microsoft.NET WSDK,SunOne Plattform,IBM WebSphere SDK for Web Services (WSDK),由于這些工具包已經(jīng)在電子商務(wù)有廣泛應(yīng)用,技術(shù)相對成熟,為OPC XML-DA的應(yīng)用打下良好基礎(chǔ)。
3.6 未涉及問題
(1) 安全性問題
OPC XML-DA 技術(shù)規(guī)范并沒有單獨規(guī)定安全性機制,而是依賴于傳輸協(xié)議(例如HTTPS)。此類問題的進一步研究將涉及整個互連網(wǎng)絡(luò)安全問題,當(dāng)前由于操作平臺的互異性,相應(yīng)的安全機制存在較大差異,近期不可能出現(xiàn)統(tǒng)一的標(biāo)準(zhǔn),因此,OPC XML-DA技術(shù)規(guī)范也難以很快出現(xiàn)相應(yīng)標(biāo)準(zhǔn),用戶只能通過對網(wǎng)絡(luò)服務(wù)器的安全性進行適當(dāng)?shù)呐渲茫ɡ缭贛icrosoft IIS 服務(wù)器中配置SSL),來解決安全性問題。
(2) 發(fā)現(xiàn)現(xiàn)有的服務(wù)器機制問題
與安全性問題相似,OPC XML-DA技術(shù)規(guī)范沒有定義OPC XML-DA 服務(wù)器節(jié)點或在指定節(jié)點上發(fā)現(xiàn)OPC XML-DA服務(wù)器的機制。由于UDDI(通用描述、發(fā)現(xiàn)、集成)協(xié)議是廣泛使用的WEB服務(wù)發(fā)現(xiàn)標(biāo)準(zhǔn),人們有理由相信,未來制定OPC XML Web 服務(wù)器發(fā)現(xiàn)規(guī)范將會以UDDI協(xié)議為基礎(chǔ)。
4 發(fā)展及展望
OPC XML的出現(xiàn)在很大程度上彌補了OPC DCOM在集成性、跨平臺性、聯(lián)通性等方面的不足,基于XML和HTTP技術(shù)傳輸協(xié)議將使其在很長時間里適應(yīng)網(wǎng)絡(luò)技術(shù)發(fā)展,相信不久,OPC基金會將陸續(xù)推出基于WEB服務(wù)的報警和時間規(guī)范、歷史數(shù)據(jù)訪問規(guī)范等,OPC XML的應(yīng)用將更加廣泛;同時,OPC DCOM以其高效性和實時性,將繼續(xù)在監(jiān)控、管理層發(fā)揮其巨大作用,二者相輔相成,互為補充,必將為自動化工業(yè)的發(fā)展帶來強勁動力。