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

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

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

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

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

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

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

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

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

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

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

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