寫在前面:
為了應對標準化和跨平臺的趨勢,更好的推廣OPC,OPC基金會在OPCDA成功應用的基礎上推出了一個新的OPC標準——OPC UA,OPCUA不再基于分布式組件對象模型(DCOM),而是以面向服務架構(gòu)(SOA)為基礎,因此,在未來的若干年中,OPCUA將逐步取代OPCDA,成為新一代的OPC標準,助力工業(yè)4.0。
而提起MQTT,或許大家有些陌生。MQTT是一個基于客戶端-服務器的消息發(fā)布/訂閱傳輸協(xié)議。具有輕量、簡單、開放和易于實現(xiàn)的特點,尤其在物聯(lián)網(wǎng)IOT領域應用非常廣泛。
物聯(lián)網(wǎng)一直都是一個很熱門的話題,而數(shù)據(jù)上云,也是現(xiàn)在工業(yè)上很普遍的一個需求。至于如何實現(xiàn),各個廠家都提供了各種不同的解決方案,無分好壞,最適合的就是最好的。
剛看完一篇名為《OPCUA+MQTT=物聯(lián)網(wǎng)擴展的熱門組合》的公眾號文章之后,文思泉涌,想著如何將OPCUA與MQTT聯(lián)合起來,構(gòu)建一個物聯(lián)網(wǎng)通用框架,實現(xiàn)數(shù)據(jù)遠傳。
01
PART
整體網(wǎng)絡架構(gòu)
很多時候,我們的需求是這樣的:現(xiàn)場有N臺不同的設備或系統(tǒng),每臺設備或者系統(tǒng)的協(xié)議是各不相同的,希望可以用一種通用并且簡單的方法,將這些數(shù)據(jù)傳到云端,實現(xiàn)遠程訪問。
這樣的需求,在上位機中其實是物聯(lián)網(wǎng)最典型的應用之一,那么采用OPCUA+MQTT或許是個不錯的選擇,整體的框架設計如下:

圖表 1 整體網(wǎng)絡架構(gòu)
為了實現(xiàn)整體功能,這里的設備層,采用Modbus Slave,基于Modbus TCP協(xié)議來做仿真測試,增加5個變量,分為為壓力1-壓力5,對應地址從40001-40010,數(shù)據(jù)類型為浮點型,運行Modbus Slave仿真結(jié)果如下:

圖表 2 ModbusTCP服務器
02
PART
服務層
至于服務層,主要是OPCUA服務器的開發(fā)應用,這里我們有兩個選擇,一種是采用第三方的OPC軟件,比如Kepware、Knight、Matrikon這些公司的產(chǎn)品,這種比較容易,做下相關配置即可,另外一種方式就是自己開發(fā),相對來說難度要大一些。
這里我使用自己開發(fā)的一款軟件——上位機CMS配置一體化軟件,通過簡單配置,在10秒內(nèi),實現(xiàn)了ModbusTCP客戶端數(shù)據(jù)通信,結(jié)果如下:

圖表 3 ModbusTCPClient通信測試
然而,這部分,僅僅是實現(xiàn)了ModbusTCP客戶端的功能,如果要實現(xiàn)OPCUA服務器的功能,需要激活一下OPCUA服務器,在服務器節(jié)點下添加一臺OPCUA服務器即可,添加完成后,保存重新運行,結(jié)果如下:

圖表 4 開啟OPCUAServer
為了測試OPCUA服務器是否開啟成功,需要進行測試,可以使用官方軟件UAExpert軟件來測試一下:

圖表 5 OPCUAClient通信測試
03
PART
數(shù)據(jù)層
(1)在實現(xiàn)數(shù)據(jù)層功能之前,需要創(chuàng)建一個MQTT服務器,這里基于.NET CORE編寫了一個MQTT服務器的程序,并在阿里云服務器中部署運行(這里要注意開放端口1883),運行效果如下:

圖表 6 MQTT服務器
(2)MQTT服務器創(chuàng)建完成之后,重新打開一個CMS配置軟件來進行OPCUAClient的功能測試,上一節(jié)中的UAExpert是官方的OPCUA客戶端軟件,僅用于測試使用,這里的使用的CMS配置軟件的OPCUAClient是自己開發(fā)的客戶端程序,經(jīng)過配置之后,運行結(jié)果如下:

圖表 7 OPCUAClient
(3)在CMS配置人家的服務器節(jié)點中,右擊添加一個MQTTClient,根據(jù)MQTT服務器配置相關IP、用戶、密碼、主題及更新時間等信息,具體如下:

圖表 8 MQTT客戶端配置
(4)配置完成后點擊啟動按鈕,整體運行之后,可以看到MQTT連接成功,并按照設定的周期將最新的數(shù)據(jù)發(fā)布到指定的主題中,效果如下:

圖表 9 啟動MQTT客戶端
(5)打開MQTT服務器,也可以看到不斷地有數(shù)據(jù)發(fā)布過來,這里為了便于觀察結(jié)果,將壓力1的數(shù)據(jù)仿真成每秒加1,MQTT服務器數(shù)據(jù)接收如下:

圖表 10 MQTT服務器數(shù)據(jù)接收
04
PART
應用層
通過以上的相關部署,即可實現(xiàn)整個OPCUA+MQTT的實現(xiàn),實際應用時,只需要開啟一個MQTT客戶端,連接指定的MQTT服務器,并訂閱相應的主題,即可獲取到設備層的實時數(shù)據(jù),這里使用一個常用的MQTT客戶端軟件,即MQTT.fx:

圖表 11 MQTT.fx通信測試
寫在最后:
本文旨在結(jié)合當下主流的OPCUA統(tǒng)一架構(gòu)和MQTT通信協(xié)議,實現(xiàn)一種數(shù)據(jù)上云的途徑,對于自動化行業(yè)的上位機工程師來說,可以拓展大家的思路。未來更多是IT和OT相結(jié)合的一種趨勢,因此,作為每個工控技術(shù)人員,都要時刻保持危機感,不斷學習,不斷進步,這樣才能更好地面對未來工業(yè)的快速發(fā)展。