在億佰特介紹了西門子PLC如何通過函數(shù)塊連接MQTT服務(wù)器和發(fā)布消息,本文為大家介紹如何通過函數(shù)與函數(shù)塊實(shí)現(xiàn)MQTT云消息的訂閱,直接切入重點(diǎn)。
一、飛燕物聯(lián)網(wǎng)平臺(tái)配置
這里的配置和上一篇發(fā)布的配置基本相同,唯一的不同在于將數(shù)據(jù)的讀寫屬性修改為支持讀寫,其余部分根據(jù)實(shí)際情況配置不同參數(shù),這里我已控制關(guān)照為例說明,如下圖所示:
二、服務(wù)器下發(fā)數(shù)據(jù)格式分析
先從阿里云官方資料中獲取Alink JSON通訊協(xié)議的格式,選擇“消息通訊”選項(xiàng)下的“設(shè)備屬性、事件、服務(wù)”;
找到“設(shè)置設(shè)備屬性”展開“Topic和數(shù)據(jù)格式”的介紹;
下發(fā)數(shù)據(jù)格式如下:{"id":"123","version":"1.0","params":{"temperature":30.5},"method":"thing.service.property.set"}
對(duì)于PLC來(lái)說首先需要找到關(guān)鍵詞“"temperature":”是否存在,若存在再將其后的數(shù)據(jù)字符串提取出來(lái),再將該字符串轉(zhuǎn)換為數(shù)據(jù)用于修改PLC變量實(shí)現(xiàn)控制功能;
這里查找關(guān)鍵詞就會(huì)用到上傳提到的“FIND” 在字符串中查找字符的功能塊,先看官方提供的使用例程,這個(gè)功能塊會(huì)將第一次找到的字符位置輸出,否則輸出為零。
這里我們主要使用輸出的位置信息結(jié)合“LEN”(計(jì)算判斷字符串長(zhǎng)度)和“SUB”(判斷字符串長(zhǎng)度-1個(gè)字符長(zhǎng)度)功能塊(用于計(jì)算相對(duì)偏移)來(lái)定位數(shù)據(jù)點(diǎn)位置,在使用“DELFTE”功能塊刪除多余的無(wú)效字符,方便后續(xù)提取有效數(shù)據(jù);
注意這里傳入的需要?jiǎng)h除的字符串?dāng)?shù)量并非“FIND”功能塊輸出的位置值,而是該位置值加上相對(duì)偏移,這樣我們就得到了一個(gè)從有效數(shù)據(jù)開始的字符串,接下來(lái)可以利用“STRG_VAL”功能塊遇到不可轉(zhuǎn)換字符停止轉(zhuǎn)換的特性轉(zhuǎn)換為數(shù)值(JSON中數(shù)據(jù)的結(jié)束一般有‘,’與‘}’來(lái)結(jié)束該數(shù)據(jù),字符型數(shù)據(jù)除外),還是以官方的例程說明:
剛才在飛燕平臺(tái)配置的數(shù)據(jù)類型都是整數(shù),因此需要修改為下圖實(shí)列,若為浮點(diǎn)數(shù)還需要單獨(dú)配置,方法和整形一致僅轉(zhuǎn)換類型需要調(diào)整。
經(jīng)過上述步驟就可以將數(shù)值型變量的值提取出來(lái),不過上述方法不支持提取字符數(shù)據(jù),需要提取字符型數(shù)據(jù)的可以參照該方法實(shí)現(xiàn),字符型數(shù)據(jù)就需要判斷數(shù)據(jù)的長(zhǎng)度在通過”MID”功能塊提取,字符串的結(jié)束字符為‘"’,通過“FIND”功能塊便能或者字符長(zhǎng)度。
審核編輯黃宇
-
plc
+關(guān)注
關(guān)注
5028文章
13621瀏覽量
471274 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4365瀏覽量
63958 -
MQTT
+關(guān)注
關(guān)注
5文章
663瀏覽量
23396
發(fā)布評(píng)論請(qǐng)先 登錄
MQTT網(wǎng)關(guān)快速連接三菱系列PLC實(shí)現(xiàn)遠(yuǎn)程監(jiān)控

如何查看及更改函數(shù)/函數(shù)塊的調(diào)用環(huán)境

IG902如何連接公有MQTT測(cè)試平臺(tái)?
KaihongOS操作系統(tǒng):MQTT物聯(lián)網(wǎng)通訊協(xié)議
MQTT協(xié)議介紹之二:連接
MQTT協(xié)議介紹之一:發(fā)布/訂閱
基于Eclipse paho-mqtt源碼包的MQTT客戶端設(shè)計(jì)(上)
基于Eclipse paho-mqtt源碼包的MQTT客戶端設(shè)計(jì)(下)
NodeMCU學(xué)習(xí)(十一)--MQTT的訂閱與發(fā)布

PLC程序分析和數(shù)據(jù)下發(fā)測(cè)試教程

基于MQTT協(xié)議JSON格式發(fā)布與訂閱的PLC智能網(wǎng)關(guān)

西門子SMART200PLC連接自建MQTT云平臺(tái)操作教程
【教程】PLC利用函數(shù)塊連接MQTT服務(wù)器

評(píng)論