王侃侃 ,張華良
(1.中國科學院 網絡化控制系統重點實驗室,沈陽 110016;2.中國科學院 沈陽自動化研究所,沈陽 110016)
面向服務的體系架構SOA(service oriented architecture)已廣泛應用于工業自動化領域的各個層面,無論是在設備層面還是在系統層面都滲透著SOA技術[1-3]。在這種架構中,應用程序的不同功能被封裝為服務,服務的接口獨立于硬件平臺、操作系統、網絡和傳輸協議。服務之間的相互通信,可以是簡單的數據傳遞,也可以按照一定的順序進行服務組合[4]。SOA建立了靈活高效的框架模型,使得不同領域,不同供應商的應用之間能夠互相通信,而隨著工業自動化的不斷發展,嵌入式設備種類的不斷增多,實現設備部署和通信的難度也不斷提高,而嵌入式SOA技術則在很大程度上降低了這個難度,它使得工業領域的設備層是基于服務在通信,因而屏蔽了底層設備硬件細節的差異化。目前,在工業自動化系統中一般都有多個廠商的設備,如果要實現這些設備之間能夠互相發現并且進行通信交互,就要求設備之間具有互操作性,能夠對外提供統一的服務和標準化的接口,因此便出現了能夠支持嵌入式設備標準化通信的2項規范:DPWA(devices profile for web services)[5]和 OPC UA(OPC unified architecture)[6]。 在文獻[7]中就強調了DPWS和OPC UA的互操作性,給出了在監測應用中二者結合的互操作架構;文獻[8]給出OPC UA和DPWS結合下的數據模型,提出了新的中間件服務器;但是目前的國內外文獻中都沒有對二者進行全面的比較分析。因此,本文的主要目的是分析OPC UA和DPWS在框架體系上的差異,并分析它們在內部機制上的優缺點,比較它們在嵌入式設備中的內存占用情況,最后明確二者今后的協同工作方式。
傳統OPC是在微軟Windows的OLE技術基礎上發展起來的一種數據交換方法,其目的就是通過一個統一的接口實現不同廠商的軟件產品之間的數據交換[9-10]。但是由于傳統的OPC技術逐漸顯示出其不夠靈活、安全機制不足、平臺局限、實現和使用過于復雜等諸多弱點,于是OPC基金會在2006年推出了OPC UA來取代傳統的OPC技術。OPC UA不再局限于Windows系統,而是跨平臺的技術標準,是以SOA、Web Services為核心的理想數據交換技術。
OPC UA解決了傳統OPC存在的安全問題,這是因為安全機制會影響整個系統的性能。OPC UA傳輸數據時是可以加密的,并對通信連接和數據本身都可以實現安全控制。新的安全模型保證了數據從原始設備到MES(manufacturing execution system),ERP(enterprise resource planning)系統,從本地到遠程的各級自動化和信息化系統的可靠傳遞[9]。
如圖1所示,為了提高傳輸性能,OPC UA還使用了二進制TCP傳輸機制,根據應用的不同需求,傳輸協議和信息編碼可以以不同方式結合,UA XML和UA二進制消息都可以以SOAP方式傳輸,UA二進制消息還可以內嵌到XML中進行傳輸。

圖1 OPC UA協議棧Fig.1 OPC UA stacks
OPC UA的信息模型[11]統一了傳統OPC中不同的數據模型。它利用樹形結構進行分層呈現,而且這個結構中的不同部分可以互相引用,這樣就形成了由節點組成的相互聯系的網狀結構,也就是地址空間。節點可以是不同類型,例如:可以是在地址空間中進行結構化描述的對象,也可以是進行動態數據描述的變量。客戶端可以通過通用服務集對信息模型進行訪問、瀏覽和操作,服務集包括會話服務、讀、寫和訂閱數據的服務,瀏覽、查詢和更改地址空間內容的服務和調用方法的服務。
DPWS規范了如何將Web Services技術應用于嵌入式設備,它使設備能動態地加入網絡并獲得IP地址,自動宣布自己的名稱,發現網絡上的其他設備及其提供的服務,DPWS獨立于任何操作系統、編程語言和傳輸協議,能夠無縫地接入現有網絡[12]。
如圖2所示DPWS的底層,即網絡層,采用IP協議負責數據的接收與發送,第2層網絡層采用UDP或TCP/IP協議,第3層則保證了嵌入式設備之間的端到端的通信能力,其中SOAP協議用于訪問網絡服務,WS-尋址則為SOAP消息的傳輸提供了統一的尋址方法,第4層加強了SOAP消息傳輸的安全性,保證了端到端的安全,其中WS-安全將安全特性加入SOAP的消息頭,WS-安全會話則描述了如何認證消息和服務以及建立認證的上下文,第5層的XML和MTOM實現對設備和服務的統一描述,第6層包含的是DPWS一些內置的服務,WS-發現機制實現嵌入式設備能在網絡上廣播自己以及發現其他設備,它采用UDP協議和廣播地址來廣播和監聽發現消息,WS-元數據通信實現嵌入式設備能夠動態訪問其他設備的服務和元數據,WS-事件機制允許其他設備向主機訂閱異步消息。

圖2 DPWS協議棧Fig.2 DPWS stacks
從本文第1,2部分的描述中可看出OPC UA和DPWS在嵌入式領域的應用中存在很多優勢,而目前嵌入式SOA技術也主要集中在OPC UA和DPWS上,因此,對它們的架構體系以及一些機制的比較分析的必要性是不言而喻的,因為這樣就能明確OPC UA和DPWS各自的優勢和適用場景,在某些應用場景下能否協同合作,以及未來的發展方向,最大程度地提高工業控制效率。
表1給出了OPC UA和DPWS在架構體系上的特性對比,由此可以看出,它們在標準傳輸協議、消息協議和編碼上是非常相似的,但是OPC UA本身又對其協議和編碼做了優化,提出了其專有的優化協議,這樣大大提高了其消息傳輸效率和傳輸安全性。

表1 OPC UA與DPWS特性對比Tab.1 Comparison for characteristic between OPC UA and DPWS
OPC UA雖然可以被嵌入到底層設備中,但它的框架協議主要針對系統級設備,依靠專有協議訪問底層設備,OPC UA主要采用鏈式C/S模式,其原理是服務器向上層客戶端展現設備信息,在鏈式C/S架構中,處于上層的UA服務器可以是下層UA服務器的客戶端。而DPWS的設計目標主要針對底層設備,采用端到端的模式,盡管DPWS的C/S模式可對系統更高級的管理層提供訪問接口,但其規范中并沒有提供關于DPWS能夠集成到上層的支持。
OPC UA和DPWS對外都提供一些服務,而正是這些服務在機理上的區別才更能說明這兩大框架體系各自的設計目的,下面就從兩方面來說明這個區別。
3.2.1 發現服務
OPC UA的發現服務是一種靜態機制,也就是說要實現發現服務需要發現服務器,并且客戶端要知道發現服務器的地址,其過程如下:其他服務器要先在發現服務器上注冊自己,當客戶端得到發現服務器的地址時,就可訪問到所有處于網絡連接中的UA服務器列表。DPWS則是一種動態發現機制,其過程如下:新加入的設備組播發送自己的描述和服務信息,任何感興趣的設備可以在標準的組播地址上監聽服務的可用通知,如果存在匹配的設備或服務,則自動發送響應消息[13]。
3.2.2 事件訂閱
OPC UA提供事件和數據的訂閱服務,如圖3所示,在一定取樣時間間隔內,數據變化,數據處理和其他事件被壓入監聽消息隊列,但是OPC UA服務器與客戶端之間關于數據變化和事件的通知消息不是異步傳輸的。

圖3 OPC UA訂閱服務Fig.3 Subscription for OPC UA
如圖4所示,當服務器監聽到數據變化或事件發生時,通知消息會通過訂閱服務被壓入消息隊列,而不會立刻被傳送給客戶端,客戶端必須去請求服務器上的棧推送服務,這樣相應的通知消息才會被發送給客戶端。而DPWS的事件推送則是異步傳輸的。當有事件發生或數據變化時,服務器會立刻把通知消息發送給客戶端,不需等待客戶端請求。綜上所述,DPWS在事件推送機制上的效率要遠遠高于OPC UA。

圖4 OPC UA通知消息的傳輸機制Fig.4 Transmission for OPC UA
由于低成本嵌入式設備的內存空間非常有限,所以DPWS和OPC UA在嵌入式設備中所占用內存空間大小就成為衡量它們性能和可移植性的重要指標。一方面,因為DPWS必須實現全部TCP/IP,而OPC UA只需實現部分TCP/IP,另一方面,雖然只實現基本服務的OPC UA所占內存資源可縮小到10kB[2],但需要重新編寫協議棧,從而導致開發周期較長。所以,目前最優的方案是使二者能夠協同工作,如圖5所示。

圖5 OPC UA與DPWS協同工作Fig.5 Collaborative working
由于OPC UA的靜態發現機制以及在訂閱事件中的非異步性可知,DPWS更適合底層設備,所以如圖5所示將DPWS服務器嵌入到設備中,這樣既實現了嵌入式設備之間的自主發現功能,又使事件變化通知能及時地發送給服務器。在上位機中通過DPWS接口得到設備的數據信息,并在OPC UA地址空間中添加設備的數據對象,將DPWS設備的元數據信息存儲在UA地址空間中,這樣就可以在信息模型中標識現場設備的層次結構,為了能給OPC UA客戶端提供設備更多的信息,DPWS會為每個設備建立單獨的服務,它通過分析每個設備的WSDL來得到設備服務和數據結構信息。
綜上所述,精簡的OPC UA適合運行在低成本,內存空間小的嵌入式設備中,完備的OPC UA適合運行在系統級設備中,因它能對外提供非常豐富的服務,所以文章最后提出了OPC UA和DPWS今后的協同工作方式,這種方式不僅使底層設備之間能夠自主發現,避免了OPC UA消息傳遞中的延遲,并且通過OPC UA地址空間可以明確設備類型、屬性、變量以及現場設備之間的層次結構,這樣可最大程度地提高工業控制精度和效率。
[1] Candido G,Barata J,Colombo A W,Jammes F.Service-oriented architecture at device level to support evolvable production systems[C]//2010 IEEE International Conference on Industrial Electronics.Bari,2010:2669-2674.
[2] Imtiaz J,Jasperneite J.Scalability of OPC-UA down to the chip level enables “Internet of Things”[C]//2013 11th IEEE InternationalConference on IndustrialInformatics.Lisbon,2013:500-505.
[3] De Deugd S,Carroll R,Kelly K E,Millett B,et al.SODA:Service Oriented Device Architecture[J].IEEE Pervasive Computing,2006,5(3):94-96.
[4] 高巖,張少鑫,張斌,等.基于SOA架構的Web服務組合系統[J].小型微型計算機系統,2007,28(4):729-733.
[5] OASIS,Devices Profile for Web Services Version 1.1 Specification[EB/OL].[2014-06-24].http:www.oasis-open.org/committees/ws-d-d.
[6] OPC Foundation.OPC Unified Architecture(OPC-UA)Specifications[EB/OL].http://www.opcfoundation.org/U-A.2014-06.
[7] Lzaguirre MJAG,Lobov A,Lastra JLM.OPC UA and DPWS interoperability for factory floor monitoring using complex event processing.In Industrial Informatic[C]//2011 9th IEEE International Conference on Industrial Informatics.Lisbon,2011:205-211.
[8] Bony B,Harnischfeger M,Jammes F.Convergence of OPC UA and DPWS with a cross-domain data model[C]//2011 9th IEEE International Conference on Industrial Informatics.Lisbon,2011:187-192.
[9] 方輝.OPC UA服務器地址空間與數據存儲研究與開發[D].北京:華北電力大學:2011.
[10]陳柳松.OPC UA服務器事件管理及訂閱功能模塊研究與開發[D].北京:華北電力大學,2011.
[11]Candido G,Jammes F,et al.SOA at device level in the industrial domain:Assessment of OPC UA and DPWS specifications[C]//2010 8th IEEE International Conference on Industrial Informatics.Osaka,2010:598-603.
[12]OPC Foundation.OPC Unified Architecture Specification-Part5:Information Model[EB/OL].http://www.opcfoundation.org/UA.2014-06.
[13]李全.基于DPWS的工業控制網絡及設備描述技術的研究與實現[D].南昌:南昌航空大學,2009. ■