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

發(fā)布時(shí)間:2023-2-6 17:28    發(fā)布者:成都億佰特

在億佰特介紹了西門(mén)子PLC如何通過(guò)函數塊連接MQTT服務(wù)器和發(fā)布消息,本文為大家介紹如何通過(guò)函數與函數塊實(shí)現MQTT云消息的訂閱,直接切入重點(diǎn)。

一、飛燕物聯(lián)網(wǎng)平臺配置

這里的配置和上一篇發(fā)布的配置基本相同,唯一的不同在于將數據的讀寫(xiě)屬性修改為支持讀寫(xiě),其余部分根據實(shí)際情況配置不同參數,這里我已控制關(guān)照為例說(shuō)明,如下圖所示:


二、服務(wù)器下發(fā)數據格式分析

先從阿里云官方資料中獲取Alink JSON通訊協(xié)議的格式,選擇“消息通訊”選項下的“設備屬性、事件、服務(wù)”;


找到“設置設備屬性”展開(kāi)“Topic和數據格式”的介紹;


下發(fā)數據格式如下:{"id":"123","version":"1.0","params":{"temperature":30.5},"method":"thing.service.property.set"}

對于PLC來(lái)說(shuō)首先需要找到關(guān)鍵詞“"temperature":”是否存在,若存在再將其后的數據字符串提取出來(lái),再將該字符串轉換為數據用于修改PLC變量實(shí)現控制功能;

這里查找關(guān)鍵詞就會(huì )用到上傳提到的“FIND” 在字符串中查找字符的功能塊,先看官方提供的使用例程,這個(gè)功能塊會(huì )將第一次找到的字符位置輸出,否則輸出為零。


這里我們主要使用輸出的位置信息結合“LEN”(計算判斷字符串長(cháng)度)和“SUB”(判斷字符串長(cháng)度-1個(gè)字符長(cháng)度)功能塊(用于計算相對偏移)來(lái)定位數據點(diǎn)位置,在使用“DELFTE”功能塊刪除多余的無(wú)效字符,方便后續提取有效數據;


注意這里傳入的需要刪除的字符串數量并非“FIND”功能塊輸出的位置值,而是該位置值加上相對偏移,這樣我們就得到了一個(gè)從有效數據開(kāi)始的字符串,接下來(lái)可以利用“STRG_VAL”功能塊遇到不可轉換字符停止轉換的特性轉換為數值(JSON中數據的結束一般有‘,’與‘}’來(lái)結束該數據,字符型數據除外),還是以官方的例程說(shuō)明:


剛才在飛燕平臺配置的數據類(lèi)型都是整數,因此需要修改為下圖實(shí)列,若為浮點(diǎn)數還需要單獨配置,方法和整形一致僅轉換類(lèi)型需要調整。


經(jīng)過(guò)上述步驟就可以將數值型變量的值提取出來(lái),不過(guò)上述方法不支持提取字符數據,需要提取字符型數據的可以參照該方法實(shí)現,字符型數據就需要判斷數據的長(cháng)度在通過(guò)”MID”功能塊提取,字符串的結束字符為‘"’,通過(guò)“FIND”功能塊便能或者字符長(cháng)度。

轉載文章來(lái)源:https://www.ebyte.com/new-view-info.html?id=2205


本文地址:http://selenalain.com/thread-810088-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页