MQTT低協(xié)議消耗、數(shù)據(jù)安全性高等優(yōu)點,在物聯(lián)網(wǎng)領域已經發(fā)展很多年,網(wǎng)絡上有很多資料可以學習,并且有很多的服務器運營商在不斷降低云開發(fā)難度,之前需要前端工程師開發(fā)的網(wǎng)頁,現(xiàn)在只要你對界面美觀沒有要求只是想實現(xiàn)功能,服務器運營商都有對應的可視化開發(fā)工具支持,比如下文使用的阿里云飛燕平臺的“人機交互”設計就可以快速設置手機控制界面。
同樣的騰訊有騰訊連連小程序可視化界面設計,OneNET有可視化Web Server界面設計,幾乎所有的服務器運營商都在降低開發(fā)難度。最近幾年PLC廠家也在提供MQTT函數(shù)功能塊,只要設備支持TCP客戶端并且可以發(fā)送16進制透明數(shù)據(jù),就可以通過數(shù)據(jù)組合的方式實現(xiàn)MQTT服務器連接,并根據(jù)協(xié)議要求發(fā)送對應的數(shù)據(jù)包就可以實現(xiàn)MQTT通訊,之前我就利用組態(tài)屏搭配串口服務器通過腳本編程實現(xiàn)TCP客戶端連接MQTT服務器,下面介紹一種直接通過PLC連接MQTT服務器的方法。下面是MQTT常用的報文列舉:CONNECT報文:10+字符總長度(遵循剩余字符算法)+00+04+4D 51 54 54+04+C2 +保活時間(120s:00 78)+客戶端長度(2字節(jié))+客戶端ID+用戶名長度(2字節(jié))+用戶名+密碼長度(2字節(jié))+PASSWORDPUBLISH報文:30 +字符總長度(遵循剩余字符算法)+發(fā)布地址長度(2字節(jié))+發(fā)布地址+用戶數(shù)據(jù)SUBSCRIBE報文:82 +字符總長度(遵循剩余字符算法)+00 00+訂閱地址長度(2字節(jié))+訂閱地址+服務等級(00、01、02)
一
博圖開發(fā)環(huán)境搭建
從零開始編寫程序,需要熟悉西門子SLC編程語言,現(xiàn)學可能比較困難也不符合我寫這篇文章的初衷,利用這篇文章只需要原來熟悉博圖的梯型圖編程和功能塊調用,就可以利用下文使用函數(shù)塊連接MQTT服務器。西門子全球技術支持中心可以下載到一篇關于MQTT連接的實例,這里小編采用“國際版”下載MQTT實例講解,在“中文”技術支持中心也有一篇關于“MQTT連接”的實例(中文實例地址:SIMATIC CPU 的 MQTT 發(fā)布服務器),但我們有沒有使用過,有可能是同一實例,用什么實例本質都是相同的(MQTT協(xié)議不變,最終與服務器通訊的數(shù)據(jù)不變),中間過程可能不同但變量描述與協(xié)議相同也相同,建議在開發(fā)中變量名盡量與協(xié)議相同,方便程序閱讀。小編使用的是“國際版”下載的實例(國際版實例下載地址:Use the SIMATIC controller as an MQTT client)。后面會通過PLC仿真軟件仿真真實的S7-1500設備,例程提供了兩個PLC的連接的實例,其實都是一樣的,把S7-1200刪除仿真下載程序時報錯;后面會連接阿里云,需要PLC接入外網(wǎng),需要連接可以上網(wǎng)的路由器并配置正確的IP地址;
之面會使用域名連接,默認的DNS可能無法解析,需要在“高級組態(tài)”的”DNS”下配置阿里云域名解析服務器(223.5.5.5),我這可以解析域名可以忽略配置DNS服務器;
二
西門子PLC仿真
手上沒有PLC也可以學習MQTT Client函數(shù)塊的使用,只需要使用“SIMATIC S7-PLCSIM Advanced V4.0”西門子PLC高級仿真器即可實現(xiàn)S7-1500PLC的仿真運行。1、配置虛擬網(wǎng)卡,填寫PLC參數(shù),如下圖所示:
2、切回博圖界面點擊“編譯”,忽略警告,在點擊下載,按照下圖配置:3、再點擊“下載”,第一次使用會彈出幾個配置窗口,全部選“同意”或者“是”,經過以上步驟后點擊“裝載”選擇同意,選擇啟動設備:
至此完成博圖仿真調試的全部說明。
三
云平臺設備創(chuàng)建
準備云平臺賬號,這里小編使用阿里云飛燕平臺進行演示,你也可以OneNET、騰訊云、華為云、百度云等,方法基本類似,這個函數(shù)庫也是使用標準MQTT3.1.1的三要素Client ID、UserName、Password,因此阿里云的三要素與標準MQTT3.1.1三要素不同也需要轉換,轉換規(guī)則可以通過云平臺使用手冊查詢,不過阿里云在設備詳情下提供了標準MQTT3.1.1三要素的參數(shù)可以直接使用,使用其他平臺的應當根據(jù)對應方法進行轉換。1、進入飛燕物聯(lián)網(wǎng)平臺(https://living.aliyun.com),登錄自己的阿里云賬號,沒有開通該功能的點擊開通(需要實名認證),開通的點擊進入控制臺;2、沒有項目的點擊“創(chuàng)建新項目”,輸入名稱點擊“確定”即可,點擊“項目”進入“項目詳情”,點擊“創(chuàng)建新產品”,輸入產品名,配置“功能定義”可以隨便選一個后面根據(jù)需求在重新定義,聯(lián)網(wǎng)方式一定不要選擇“WIFI接入”,通訊格式使用“ICA標準數(shù)據(jù)格式(Alink JSON)”;
3、進入“產品詳情”,首先進入的是“功能定義”,這里先講如何連接,直接跳過“功能定義”與“人機交互”,在“設備調試”,選擇開發(fā)的模組,目前沒有與阿里云合作的模組,直接選擇未知模組即可;4、點擊”新增設備”,創(chuàng)建PLC連接的認證參數(shù),進入創(chuàng)建設備的詳情界面,查詢連接MQTT3.1.1所需要的地址、端口、Client ID、UserName、Password,這里我們不在飛燕平臺下查詢,需要在“物聯(lián)網(wǎng)平臺”的設備列表下設備詳情查詢,這樣就可不用自己去轉換三要素;
四
配置MqttDB塊
1、修改MqttDB塊中的參數(shù),用于連接阿里云MQTT服務器,打開變量組“connparams”在展開變量“mqttBrokerAddress”,配置參數(shù)“qdnAddress”為“a1pc9X6nd09.iot-as-mqtt.cn-shanghai.aliyuncs.com.”,配置“post”為1883。【注意】輸入域名需要“.“結束輸入。2、填入對應的三要素:
3、再次點擊編譯下載:
五
仿真連接MQTT服務器
1、點擊在線監(jiān)控數(shù)據(jù),需改“connect“為”true“,函數(shù)塊自動連接MQTT服務器;【注意】阿里云不支持20s的心跳請求,最少配置30s,這里使用120s。
2、登錄平臺查詢MQTT狀態(tài):
-
plc
+關注
關注
5020文章
13406瀏覽量
466347 -
服務器
+關注
關注
12文章
9371瀏覽量
86298
發(fā)布評論請先 登錄
相關推薦
采用華為云 Flexus 云服務器 X 實例部署 MQTT 服務器完成設備上云

RAKsmart國外大帶寬服務器怎么連接
使用windows版mosquitto軟件自建一個服務器
使用SDK中的MQTT連接服務器,導致mqtt永遠斷開,請問是什么原因?
PLC連接串口服務器RS485轉以太網(wǎng)步驟

tcp方式連接不了服務器了,服務器代碼還能開源嗎?
MQTT啟動太慢的原因?
接口測試怎么測多個服務器連接
華為云函數(shù)工作流:引領未來無服務器計算時代

服務器數(shù)據(jù)恢復—RAID5陣列兩塊盤出現(xiàn)物理故障離線的數(shù)據(jù)恢復案例

美國硅谷云服務器的網(wǎng)絡連接速度如何?
服務器數(shù)據(jù)恢復—服務器硬盤燈顯示紅色,服務器崩潰的數(shù)據(jù)恢復案例

評論