0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一種直接通過PLC連接MQTT服務(wù)器的方法

kae1_cdebyte ? 來源:億佰特物聯(lián)網(wǎng)應(yīng)用專家 ? 作者:億佰特物聯(lián)網(wǎng)應(yīng)用 ? 2022-09-09 10:26 ? 次閱讀

MQTT低協(xié)議消耗、數(shù)據(jù)安全性高等優(yōu)點,在物聯(lián)網(wǎng)領(lǐng)域已經(jīng)發(fā)展很多年,網(wǎng)絡(luò)上有很多資料可以學(xué)習(xí),并且有很多的服務(wù)器運營商在不斷降低云開發(fā)難度,之前需要前端工程師開發(fā)的網(wǎng)頁,現(xiàn)在只要你對界面美觀沒有要求只是想實現(xiàn)功能,服務(wù)器運營商都有對應(yīng)的可視化開發(fā)工具支持,比如下文使用的阿里云飛燕平臺的“人機交互”設(shè)計就可以快速設(shè)置手機控制界面。

fadb5388-2f6b-11ed-ba43-dac502259ad0.png

同樣的騰訊有騰訊連連小程序可視化界面設(shè)計,OneNET有可視化Web Server界面設(shè)計,幾乎所有的服務(wù)器運營商都在降低開發(fā)難度。

最近幾年PLC廠家也在提供MQTT函數(shù)功能塊,只要設(shè)備支持TCP客戶端并且可以發(fā)送16進制透明數(shù)據(jù),就可以通過數(shù)據(jù)組合的方式實現(xiàn)MQTT服務(wù)器連接,并根據(jù)協(xié)議要求發(fā)送對應(yīng)的數(shù)據(jù)包就可以實現(xiàn)MQTT通訊,之前我就利用組態(tài)屏搭配串口服務(wù)器通過腳本編程實現(xiàn)TCP客戶端連接MQTT服務(wù)器,下面介紹一種直接通過PLC連接MQTT服務(wù)器的方法。

下面是MQTT常用的報文列舉:CONNECT報文:10+字符總長度(遵循剩余字符算法)+00+04+4D 51 54 54+04+C2 +?;顣r間(120s:00 78)+客戶端長度(2字節(jié))+客戶端ID+用戶名長度(2字節(jié))+用戶名+密碼長度(2字節(jié))+PASSWORD

PUBLISH報文:30 +字符總長度(遵循剩余字符算法)+發(fā)布地址長度(2字節(jié))+發(fā)布地址+用戶數(shù)據(jù)

SUBSCRIBE報文:82 +字符總長度(遵循剩余字符算法)+00 00+訂閱地址長度(2字節(jié))+訂閱地址+服務(wù)等級(00、01、02)

一博圖開發(fā)環(huán)境搭建

從零開始編寫程序,需要熟悉西門子SLC編程語言,現(xiàn)學(xué)可能比較困難也不符合我寫這篇文章的初衷,利用這篇文章只需要原來熟悉博圖的梯型圖編程和功能塊調(diào)用,就可以利用下文使用函數(shù)塊連接MQTT服務(wù)器。

西門子全球技術(shù)支持中心可以下載到一篇關(guān)于MQTT連接的實例,這里小編采用“國際版”下載MQTT實例講解,在“中文”技術(shù)支持中心也有一篇關(guān)于“MQTT連接”的實例(中文實例地址:SIMATIC CPU 的 MQTT 發(fā)布服務(wù)器),但我們有沒有使用過,有可能是同一實例,用什么實例本質(zhì)都是相同的(MQTT協(xié)議不變,最終與服務(wù)器通訊的數(shù)據(jù)不變),中間過程可能不同但變量描述與協(xié)議相同也相同,建議在開發(fā)中變量名盡量與協(xié)議相同,方便程序閱讀。

小編使用的是“國際版”下載的實例(國際版實例下載地址:Use the SIMATIC controller as an MQTT client)。

后面會通過PLC仿真軟件仿真真實的S7-1500設(shè)備,例程提供了兩個PLC的連接的實例,其實都是一樣的,把S7-1200刪除仿真下載程序時報錯;

fb6a04a2-2f6b-11ed-ba43-dac502259ad0.png

后面會連接阿里云,需要PLC接入外網(wǎng),需要連接可以上網(wǎng)的路由器并配置正確的IP地址;

fc121a3e-2f6b-11ed-ba43-dac502259ad0.png

之面會使用域名連接,默認的DNS可能無法解析,需要在“高級組態(tài)”的”DNS”下配置阿里云域名解析服務(wù)器(223.5.5.5),我這可以解析域名可以忽略配置DNS服務(wù)器;

fc85b0e8-2f6b-11ed-ba43-dac502259ad0.png

二西門子PLC仿真

手上沒有PLC也可以學(xué)習(xí)MQTT Client函數(shù)塊的使用,只需要使用“SIMATIC S7-PLCSIM Advanced V4.0”西門子PLC高級仿真器即可實現(xiàn)S7-1500PLC的仿真運行。

1、配置虛擬網(wǎng)卡,填寫PLC參數(shù),如下圖所示:

fd402202-2f6b-11ed-ba43-dac502259ad0.png

2、切回博圖界面點擊“編譯”,忽略警告,在點擊下載,按照下圖配置:

fdb9f8fc-2f6b-11ed-ba43-dac502259ad0.png

3、再點擊“下載”,第一次使用會彈出幾個配置窗口,全部選“同意”或者“是”,經(jīng)過以上步驟后點擊“裝載”選擇同意,選擇啟動設(shè)備:

fe0994de-2f6b-11ed-ba43-dac502259ad0.png

至此完成博圖仿真調(diào)試的全部說明。

三云平臺設(shè)備創(chuàng)建

準備云平臺賬號,這里小編使用阿里云飛燕平臺進行演示,你也可以O(shè)neNET、騰訊云、華為云、百度云等,方法基本類似,這個函數(shù)庫也是使用標準MQTT3.1.1的三要素Client ID、UserName、Password,因此阿里云的三要素與標準MQTT3.1.1三要素不同也需要轉(zhuǎn)換,轉(zhuǎn)換規(guī)則可以通過云平臺使用手冊查詢,不過阿里云在設(shè)備詳情下提供了標準MQTT3.1.1三要素的參數(shù)可以直接使用,使用其他平臺的應(yīng)當(dāng)根據(jù)對應(yīng)方法進行轉(zhuǎn)換。

1、進入飛燕物聯(lián)網(wǎng)平臺(https://living.aliyun.com),登錄自己的阿里云賬號,沒有開通該功能的點擊開通(需要實名認證),開通的點擊進入控制臺;

fe416760-2f6b-11ed-ba43-dac502259ad0.png

2、沒有項目的點擊“創(chuàng)建新項目”,輸入名稱點擊“確定”即可,點擊“項目”進入“項目詳情”,點擊“創(chuàng)建新產(chǎn)品”,輸入產(chǎn)品名,配置“功能定義”可以隨便選一個后面根據(jù)需求在重新定義,聯(lián)網(wǎng)方式一定不要選擇“WIFI接入”,通訊格式使用“ICA標準數(shù)據(jù)格式(Alink JSON)”;

febbdd06-2f6b-11ed-ba43-dac502259ad0.png

3、進入“產(chǎn)品詳情”,首先進入的是“功能定義”,這里先講如何連接,直接跳過“功能定義”與“人機交互”,在“設(shè)備調(diào)試”,選擇開發(fā)的模組,目前沒有與阿里云合作的模組,直接選擇未知模組即可;

ff06efb2-2f6b-11ed-ba43-dac502259ad0.png

4、點擊”新增設(shè)備”,創(chuàng)建PLC連接的認證參數(shù),進入創(chuàng)建設(shè)備的詳情界面,查詢連接MQTT3.1.1所需要的地址、端口、Client ID、UserName、Password,這里我們不在飛燕平臺下查詢,需要在“物聯(lián)網(wǎng)平臺”的設(shè)備列表下設(shè)備詳情查詢,這樣就可不用自己去轉(zhuǎn)換三要素;

ff508636-2f6b-11ed-ba43-dac502259ad0.png

四配置MqttDB塊

1、修改MqttDB塊中的參數(shù),用于連接阿里云MQTT服務(wù)器,打開變量組“connparams”在展開變量“mqttBrokerAddress”,配置參數(shù)“qdnAddress”為“a1pc9X6nd09.iot-as-mqtt.cn-shanghai.aliyuncs.com.”,配置“post”為1883?!咀⒁狻枯斎胗蛎枰?“結(jié)束輸入。

ffe77118-2f6b-11ed-ba43-dac502259ad0.png

2、填入對應(yīng)的三要素:

005d444c-2f6c-11ed-ba43-dac502259ad0.png

3、再次點擊編譯下載:

01c4bb8a-2f6c-11ed-ba43-dac502259ad0.png

五仿真連接MQTT服務(wù)器

1、點擊在線監(jiān)控數(shù)據(jù),需改“connect“為”true“,函數(shù)塊自動連接MQTT服務(wù)器;

021007d4-2f6c-11ed-ba43-dac502259ad0.png

【注意】阿里云不支持20s的心跳請求,最少配置30s,這里使用120s。

2、登錄平臺查詢MQTT狀態(tài):

031b9864-2f6c-11ed-ba43-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • plc
    plc
    +關(guān)注

    關(guān)注

    5001

    文章

    12946

    瀏覽量

    459238
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8701

    瀏覽量

    84553
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    629

    瀏覽量

    22286

原文標題:【教程】PLC利用函數(shù)塊連接MQTT服務(wù)器

文章出處:【微信號:cdebyte,微信公眾號:億佰特物聯(lián)網(wǎng)應(yīng)用專家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    BPI-Pico-RP2040 開發(fā)板 mqtt連接服務(wù)器

    RP2040用mqtt連接遠程服務(wù)器,并實現(xiàn)數(shù)據(jù)收發(fā)
    的頭像 發(fā)表于 05-25 08:58 ?22.8w次閱讀
    BPI-Pico-RP2040 開發(fā)板 <b class='flag-5'>mqtt</b><b class='flag-5'>連接</b><b class='flag-5'>服務(wù)器</b>

    基于EMQX平臺自建MQTT服務(wù)器并實現(xiàn)通訊

    近年來,隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,MQTT(MessageQueuingTelemetryTransport)作為一種輕量級的通訊協(xié)議,被廣泛應(yīng)用于物聯(lián)網(wǎng)設(shè)備之間的通訊。EMQX平臺作為款開源
    的頭像 發(fā)表于 10-27 08:21 ?1026次閱讀
    基于EMQX平臺自建<b class='flag-5'>MQTT</b><b class='flag-5'>服務(wù)器</b>并實現(xiàn)通訊

    NB81如何通過MQTT對接EMQX服務(wù)器

    NB81如何通過MQTT對接EMQX服務(wù)器,有對接流程的參考文檔么
    發(fā)表于 06-04 06:02

    c語言連接華為MQTT服務(wù)器

    `1、用的鴻蒙系統(tǒng),3861芯片,連接華為MQTT服務(wù)器2、已經(jīng)確保了wifi網(wǎng)絡(luò)已經(jīng)連接,而且確保了用工具可連接
    發(fā)表于 03-31 11:55

    c語言連接華為MQTT服務(wù)器,始終沒連接上,已貼出代碼圖

    1、用的鴻蒙系統(tǒng),3861芯片,連接華為MQTT服務(wù)器2、已經(jīng)確保了wifi網(wǎng)絡(luò)已經(jīng)連接,而且確保了用工具可連接
    發(fā)表于 03-31 12:00

    怎樣將NodeMCU接入本地MQTT服務(wù)器

    MQTT服務(wù)器,并通過外接的OLED顯示屏來顯示其他設(shè)備發(fā)送來的消息。?在年前接觸NodeMCU后陸續(xù)寫了幾篇學(xué)習(xí)的博文,中間由于各種原因間隔比較久,本篇將會是這個系列的最后
    發(fā)表于 11-24 07:12

    Android程序是怎樣通過SSL單向認證方式連接MQTT服務(wù)器

    如何對Android程序進行測試呢?Android程序是怎樣通過SSL單向認證方式連接MQTT服務(wù)器的?
    發(fā)表于 01-20 06:06

    通過MQTT連接服務(wù)器的步驟分享

    概述這幾天查閱了很多的MQTT相關(guān)的資料,結(jié)果發(fā)現(xiàn)查到了太多底層的東西。根本沒有太大的作用,浪費了很多時間。在掌握基本的MQTT的概念后,我發(fā)現(xiàn)只用掌握連接服務(wù)器,訂閱話題,發(fā)布話題這
    發(fā)表于 02-15 07:35

    Web服務(wù)器啟動時MQTT (SSL) 斷開連接如何解決?

    周問題。任何一種協(xié)議都在運行 MQTT /web 服務(wù)器。如果網(wǎng)絡(luò)服務(wù)器已啟動,則 mqtt
    發(fā)表于 06-02 07:51

    如何使用MQTT客戶端連接阿里云MQTT服務(wù)器詳細教程說明

    ,是技小新針對阿里云MQTT服務(wù)器連接過程中的痛點,自己編寫的個電腦程序,用來生成連接阿里云MQTT
    發(fā)表于 05-29 17:57 ?29次下載
    如何使用<b class='flag-5'>MQTT</b>客戶端<b class='flag-5'>連接</b>阿里云<b class='flag-5'>MQTT</b><b class='flag-5'>服務(wù)器</b>詳細教程說明

    如何搭建MQTT服務(wù)器?

    協(xié)議構(gòu)建于TCP/IP協(xié)議上,由IBM在1999年發(fā)布。MQTT最大優(yōu)點在于,可以以極少的代碼和有限的帶寬,為連接遠程設(shè)備提供實時可靠的消息服務(wù)。作為一種低開銷、低帶寬占用的即時通訊協(xié)
    的頭像 發(fā)表于 05-10 14:31 ?7920次閱讀
    如何搭建<b class='flag-5'>一</b>個<b class='flag-5'>MQTT</b><b class='flag-5'>服務(wù)器</b>?

    通過PLC網(wǎng)關(guān)同時采集多臺PLC數(shù)據(jù)到MQTT自建服務(wù)器

    通過PLC網(wǎng)關(guān)同時采集多臺PLC數(shù)據(jù)到MQTT自建服務(wù)器
    發(fā)表于 11-21 09:56 ?1077次閱讀
    <b class='flag-5'>通過</b><b class='flag-5'>一</b>臺<b class='flag-5'>PLC</b>網(wǎng)關(guān)同時采集多臺<b class='flag-5'>PLC</b>數(shù)據(jù)到<b class='flag-5'>MQTT</b>自建<b class='flag-5'>服務(wù)器</b>

    串口服務(wù)器連接MQTT服務(wù)器方法說明

    串口服務(wù)器連接MQTT服務(wù)器方法參考“串口服務(wù)器用戶手冊”,不再重復(fù)說明。
    發(fā)表于 03-30 09:58 ?4448次閱讀
    串口<b class='flag-5'>服務(wù)器</b><b class='flag-5'>連接</b><b class='flag-5'>MQTT</b><b class='flag-5'>服務(wù)器</b><b class='flag-5'>方法</b>說明

    PLC利用函數(shù)塊連接MQTT訂閱消息(

    在億佰特介紹了西門子PLC如何通過函數(shù)塊連接MQTT服務(wù)器和發(fā)布消息,本文為大家介紹如何通過函數(shù)
    的頭像 發(fā)表于 02-06 17:29 ?596次閱讀
    <b class='flag-5'>PLC</b>利用函數(shù)塊<b class='flag-5'>連接</b><b class='flag-5'>MQTT</b>訂閱消息(<b class='flag-5'>一</b>)

    智嵌物聯(lián)串口服務(wù)器連接西門子PLC(S7-200)下載程序演示

    實現(xiàn)功能:想實現(xiàn)通過網(wǎng)絡(luò),局域網(wǎng)或者外網(wǎng)給PLC下載程序。PLC連接串口服務(wù)器,串口服務(wù)器
    的頭像 發(fā)表于 03-02 15:13 ?1771次閱讀
    智嵌物聯(lián)串口<b class='flag-5'>服務(wù)器</b><b class='flag-5'>連接</b>西門子<b class='flag-5'>PLC</b>(S7-200)下載程序演示