首页 » 网站建设 » phpmqtt订阅例程技巧_PLC运用函数块连接MQTT订阅消息

phpmqtt订阅例程技巧_PLC运用函数块连接MQTT订阅消息

访客 2024-12-14 0

扫一扫用手机浏览

文章目录 [+]

一、飞燕物联网平台配置

这里的配置和上一篇发布的配置基本相同,唯一的不同在于将数据的读写属性修正为支持读写,别的部分根据实际情形配置不同参数,这里我已掌握关照为例解释,如下图所示:

二、做事器下发数据格式剖析

先从阿里云官方资料中获取Alink JSON通讯协议的格式,选择“通讯”选项下的“设备属性、事宜、做事”;

phpmqtt订阅例程技巧_PLC运用函数块连接MQTT订阅消息

找到“设置设备属性”展开“Topic和数据格式”的先容;

phpmqtt订阅例程技巧_PLC运用函数块连接MQTT订阅消息
(图片来自网络侵删)

下发数据格式如下:{"id":"123","version":"1.0","params":{"temperature":30.5},"method":"thing.service.property.set"}

对付PLC来提及首须要找到关键词“"temperature":”是否存在,若存在再将其后的数据字符串提取出来,再将该字符串转换为数据用于修正PLC变量实现掌握功能;

这里查找关键词就会用到上传提到的“FIND” 在字符串中查找字符的功能块,先看官方供应的利用例程,这个功能块会将第一次找到的字符位置输出,否则输出为零。

这里我们紧张利用输出的位置信息结合“LEN”(打算判断字符串长度)和“SUB”(判断字符串长度-1个字符长度)功能块(用于打算相对偏移)来定位数据点位置,在利用“DELFTE”功能块删除多余的无效字符,方便后续提取有效数据;

把稳这里传入的须要删除的字符串数量并非“FIND”功能块输出的位置值,而是该位置值加上相对偏移,这样我们就得到了一个从有效数据开始的字符串,接下来可以利用“STRG_VAL”功能块碰着不可转换字符停滞转换的特性转换为数值(JSON中数据的结束一样平常有‘,’与‘}’来结束该数据,字符型数据除外),还是以官方的例程解释:

刚才在飞燕平台配置的数据类型都是整数,因此须要修正为下图实列,若为浮点数还须要单独配置,方法和整形同等仅转换类型须要调度。

经由上述步骤就可以将数值型变量的值提取出来,不过上述方法不支持提取字符数据,须要提取字符型数据的可以参照该方法实现,字符型数据就须要判断数据的长度在通过”MID”功能块提取,字符串的结束字符为‘"’,通过“FIND”功能块便能或者字符长度。

三、PLC程序剖析

每个变量的提取过程都是类似的,我们可以将其封装为函数块方便多次调用,先创建FC函数块,选择LAD措辞,如下图:

先定义输入变量:

如下:

main_str:待解析字符串,云平台下发的字符串;

Compare_str:解析字段,须要从云平台提取的有效数据标签;

outdata_type:数据类型,解析后输出的数据类型,0(Uint)、1(Real)、2(String);

输出变量如下:

DONE:输出解析状态,非零有效,为零代表输入的“main_str”不包含“Compare_str”解析失落败;

valid_value_int:解析的整形结果,非整形该输出无效;

valid_value_real:解析的浮点数结果,非浮点该输出无效;

valid_str:输出的字符串,非字符串输出无效;

还须要定义一些中间变量,紧张用来存储转换所须要的条件和转换的中间结果,就不再赘述。

上图为判断该输入的待解析字符串是否存在解析字段,若有输出位置信息,再将其转换为相对偏移地址用于后续有效数据提取。

上图为不同类型数据调用不同的解析方法,上一章已经先容过事理了,LAD编程措辞不太适宜这种功能的实现,利用STL措辞就要简洁的多,有机会再给大家先容。

在创建一个FB(函数块)将须要解析的字段放在一个函数块内方便后续掩护,

在飞燕平台定义如下参数:

同样的也须要定义一些输出变量方便主程序将提取结果配置给对应设备,我这里只通过在线调试演示没有正式设备,输出变量定义如下:

luminance:光照强度;

luminance_set_en,是否修正,非零代表存在修正;

类似方法定义剩余的两个变量,如下图所示:

先将Mqtt函数块收到的云平台下发数组转换为字符串,用于其他步骤利用;

调用刚才创建的有效数据提取函数(get_server_srt_validdata),输入须要解析的数据和字段(“luminance”:)以及变量类型”0“;

在通过变量“luminance_set_en“判断数据点是否存在修正,若存在则将提取到的有效数据输出,若不存在则不进行输出;

后面的“speed”与“DO1”采取相同的配置方法。

接下来便是在主程序中调用该函数块实现MQTT订阅的解析,第一步创建自动订阅功能,通过下图方法,将在要求连接后的10s自动进行订阅;

再调用解析函数块;

四、数据下发测试

进入设备详情的在线调试界面选择属性调试,方法采取设置发送下列字符串;

PLC成功解析数据;

下次为大家先容云智能APP的制作。

标签:

相关文章