OPC UA是一種工業(yè)通訊協(xié)議,從2008年發(fā)展到今天,現(xiàn)在在業(yè)界已經(jīng)非常的流行了。本文旨在介紹一些OPC UA的概念,分享一些相關(guān)經(jīng)驗,希望對從事OPC UA相關(guān)工作的朋友有幫助。
1、OPC UA的信息模型與統(tǒng)一架構(gòu)
有一些朋友常常會說OPCUA之所以能夠如此普及是因為它能跨平臺。遠程I/O模塊覺得這不是一個充分條件。我個人認為OPCUA之所以能夠很廣泛的普及是因為它的統(tǒng)一架構(gòu)與信息模型做的太完善了。OPCUA的信息模型來源于面向?qū)ο缶幊?OOP)的思想,這也是最契合實際需求的。
假設(shè)在工業(yè)現(xiàn)場有若干臺空調(diào)需要監(jiān)控,首先我們需要監(jiān)視它的溫度,濕度,運行狀態(tài);其次我們需要對它進行啟停操作;然后我們需要接受它的非停事故報警信息;最后我們常常需要分析某一時段的運行參數(shù)來判斷空調(diào)的狀態(tài)。運用面向?qū)ο缶幊痰乃枷?,我們?chuàng)建一個類—空調(diào),在這個類中分別定義相應(yīng)的屬性,方法和事件,其中屬性即可以是簡單的數(shù)據(jù),也可以是復(fù)雜的結(jié)構(gòu)體。這個類即可理解成OPC UA的信息模型。OPC UA將現(xiàn)場的這些實時數(shù)據(jù)(DA),歷史數(shù)據(jù)(HDA)還有事故報警數(shù)據(jù)(A&E),在同一平臺進行管理,即為統(tǒng)一架構(gòu)。
用這種模式來通訊,效果怎么樣呢?下面我們做一個簡單的演示。在unified automation公司出品的demo server中,已經(jīng)定義了若干個空調(diào),我們通過該公司出品的客戶端UA Expert進行監(jiān)視。在菜單欄的左側(cè),列出了該空調(diào)的屬性,方法和事件;在右側(cè)中,這里只是監(jiān)視空調(diào)的溫度,濕度和運行狀態(tài)。這時,空調(diào)是停止(OFF)狀態(tài)。如果需要將空調(diào)啟動,并將運行目標(biāo)溫度設(shè)定為比較舒服的25℃,只需要調(diào)用StartWithSetpoint方法,并在對話框中輸入目標(biāo)值即可。
監(jiān)控事件與報警信息時,創(chuàng)建事件試圖并訂閱該空調(diào)的事件??照{(diào)的啟停狀態(tài)發(fā)生會觸發(fā)一個事件,空調(diào)處于停止?fàn)顟B(tài)則會觸發(fā)一個報警,同時在客戶端也可以確認報警。
最后,如果在服務(wù)器端,將空調(diào)某個屬性歷史存儲功能打開,經(jīng)過一段時間的存儲后,在客戶端就可以讀取歷史數(shù)據(jù)了。
這就是信息模型與統(tǒng)一架構(gòu)的魅力,讓一個通訊軟件有了HMI的感覺。
當(dāng)然,OPC UA的這個信息模型其實也不是在工控界獨領(lǐng)風(fēng)騷的,在PTC的物聯(lián)網(wǎng)平臺Thingworx中的物模型(thing model),羅克韋爾的CIP協(xié)議也都是類似的面向?qū)ο蟮哪P?。所以說好的設(shè)計都是相似的,不好的設(shè)計各有各的磕磣。
2、OPC UA的安全性
工業(yè)通訊協(xié)議初期是以速率和穩(wěn)定性優(yōu)先的,那時候為了控制系統(tǒng)安全,很多網(wǎng)絡(luò)都是與外網(wǎng)隔離的,因為已經(jīng)被物理隔離,所以協(xié)議就沒有做任何的安全設(shè)計。而且以前處理的芯片處理能力有限,如果要做加密解密運算的話,會消耗很多的資源,所以只能為了時效性而犧牲安全性。想想Modbus協(xié)議,如果你能連接到網(wǎng)絡(luò)里,用ModScan是不是可以隨意的修改Modbus從站的數(shù)據(jù),無需用戶認證,權(quán)限控制;你也可以用一些類似Wireshark之類的抓包軟件很輕松的解析這些明文傳遞的數(shù)據(jù)包??梢哉f系統(tǒng)完全是在裸奔的情況下運行的。
不過因為系統(tǒng)與外界是隔離的,如果想攻擊它,你需要騙過廠門口的保安,躲過大狼狗,然后跑到車間,撬開控制柜,接入網(wǎng)絡(luò),然后才能用黑客技術(shù)攻擊它。不過如果你已經(jīng)這么厲害了,是不是直接給控制器上潑一盆水,用這種物理攻擊更高效一些。
但是現(xiàn)在這種情況發(fā)生了變化,因為工業(yè)網(wǎng)絡(luò)希望能夠插上互聯(lián)網(wǎng)的翅膀,去做OT與IT的融合,去做工業(yè)物聯(lián)網(wǎng)(IIOT)。所以,在這種需求下安全成為了最大的需求。就像王堅院士講:安全是互聯(lián)網(wǎng)公司的生命。在通訊的過程中面臨著眾多的外部安全威脅,例如:信息泄露,篡改指令,越權(quán)操作,偽造重發(fā),泛濫攻擊等。面對這些威脅,OPC UA則使用加密,簽名,用戶認證,權(quán)限訪問控制,會話管理等方式一層一層完成深度防御。
OPC UA的安全也是得到業(yè)內(nèi)認可的,不過世界上也沒有絕對安全的協(xié)議。Synopsys公司在對一些工業(yè)通訊協(xié)議進行測試的時候還是發(fā)現(xiàn)了一些問題的。所以,OPCUA的安全還是有些工作要去做的。欲戴王冠,必承其重。
3、OPC UA與物聯(lián)網(wǎng)(IoT)
物聯(lián)網(wǎng)是一個很熱的話題,也實實在在的影響和改變著我們的生活。從上面OPC UA對一個空調(diào)的監(jiān)控的例子中,不難發(fā)現(xiàn)OPC UA協(xié)議對物的監(jiān)視與控制是很簡潔流暢的。同時又有了強大的安全性為它保駕護航,因此,在面對物聯(lián)網(wǎng)這個風(fēng)口,OPC UA也希望將自己打造成一款I(lǐng)oT主流協(xié)議。OPC UA能夠很好的支持HTTPS,在與HTTPS配合時,可以發(fā)送XML或者JSON格式的數(shù)據(jù)。
現(xiàn)在很多的物聯(lián)網(wǎng)平臺也已經(jīng)支持OPC UA了,比如國外的Azure,國內(nèi)的阿里云等物聯(lián)網(wǎng)平臺。
不過OPC UA最初的client與server之間的查詢與響應(yīng)的一對一模式最適合通訊節(jié)點較少,通訊信息量大且穩(wěn)定持續(xù)的場景。在物聯(lián)網(wǎng)的應(yīng)用場景中,往往通訊節(jié)點比較多,但是節(jié)點間的通訊量不大,有時還需要一對多、多對一通訊。如果還用一對一的模式去擁抱物聯(lián)網(wǎng),容易撲個空。這時OPC UA引入了pub/sub機制,融合了一些MQTT協(xié)議,就能比較好的支持物聯(lián)網(wǎng)的場景了。相關(guān)的白皮書已于2018年發(fā)布,感興趣的朋友可以去官網(wǎng)下載,看看細節(jié)。
4、OPC UA常用調(diào)試工具
無論是開發(fā)OPCUA的產(chǎn)品,還是在現(xiàn)場調(diào)試,常常需要一些調(diào)試工具。這些工具包括客戶端和一些模擬服務(wù)器,Matrikon, IntegrationObjects, unified-automation這些廠家都有出品,可以去官網(wǎng)免費下載的,使用也很簡單。這里推薦unified-automation出品的調(diào)試神器UA Expert和UA server。
在調(diào)試通訊產(chǎn)品時,通過抓包,分析報文是很有效的手段。對于OPC UA協(xié)議,非常推薦使用抓包神器Wireshark來完成這項工作。Wireshark對OPCUA的支持也是很完善的,已經(jīng)將OPCUA加入所支持的協(xié)議列表里,缺省的端口為4840。
打開Wireshark,然后在OPC UA做些操作,比如browse節(jié)點。這時候在Wireshark中就能看到這個browse請求的細節(jié),對照白皮書第四篇,瞬間秒懂各個細節(jié)。所以,只要左手Wireshark,右手OPC UA白皮書,兩天即可輕松實現(xiàn)從入門到精通。(其實學(xué)習(xí)任何網(wǎng)絡(luò)協(xié)議都可以這樣,左手協(xié)議解析器,右手白皮書。)
5、OPC UA開源庫
除了上面提到的調(diào)試工具之外,現(xiàn)在網(wǎng)上也涌現(xiàn)出很多的OPC UA開源庫,開發(fā)的語言也是琳瑯滿目。這也可以看出OPC UA的生態(tài)圈是非常好的。巧妙的使用這些庫可以很好的提高我們開發(fā)和測試產(chǎn)品的效率,比如完成一些功能測試,回歸測試,性能測試,模糊測試等等。
這里介紹兩款開源庫:
◆python-opcua:源代碼網(wǎng)址為:
優(yōu)點:它最大的特點就是簡單,用pip install opcua安裝即可,經(jīng)過幾年更新以后,對OPCUA協(xié)議的支持也越來越充分,既支持服務(wù)器,又支持客戶端。下面是官網(wǎng)給出的實例,用不到30行代碼就能創(chuàng)建一個包含一個動態(tài)點的服務(wù)器。
缺點:這個庫的性能差一些;有部分OPC UA協(xié)議標(biāo)準(zhǔn)中定義的服務(wù)還沒有支持。最后,在使用的過程中發(fā)現(xiàn)存在一些bug。
◆UA-.NETStandard:源代網(wǎng)址為:
優(yōu)點:這個庫是OPC基金會官方出品的庫,包含服務(wù)器,客戶端,可以在windows,linux運行,也可以在iOS和Android運行。它的性能很好,拿到了OPCUA實驗室的官方認證,對OPC UA協(xié)議標(biāo)準(zhǔn)支持的全面程度自然沒得說了。
缺點:從工控人的角度看,需要一些C#的編程技能,上手稍微慢一點,沒有Python那個庫容易學(xué)習(xí)。Git上同樣有一些實例工程,可以在它們的基礎(chǔ)上根據(jù)自己的開發(fā)和測試需求做修改。
6、小結(jié)
可以說OPC UA的統(tǒng)一架構(gòu)真的是包羅萬象,既能做實時數(shù)據(jù),又能做歷史數(shù)據(jù),既能上云,又能嵌入到控制器,甚至可能被封裝到PLC中的功能碼,將觸角深入到工控通訊行業(yè)的各個角落。真所謂:可上九天攬月,可下五洋捉鱉。這從它超過14卷的白皮書就能看出它的野心。而且還是一款成長中的協(xié)議,還有很多的功能在拓展,比如:OPC UA還在與TSN技術(shù)融合,要在數(shù)據(jù)鏈路層搞點事情。
作為吃瓜群眾,我有時候覺得OPC UA不只是想要統(tǒng)一架構(gòu),更是想一統(tǒng)江湖??墒鞘澜缟蠜]有完美的東西,這樣一個大而全的架構(gòu),它的缺點是什么?OPC UA又會用什么樣的方式完善呢?歡迎你也來聊聊你的想法!
相關(guān)閱讀
PCS 7通過OpenPCS 7站組件實現(xiàn)OPC UA通訊
通過OPC UA標(biāo)準(zhǔn)實現(xiàn)Kepware與SCADA軟件的數(shù)據(jù)交換
共有訪客發(fā)表了評論
網(wǎng)友評論