0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PLC利用函数块连接MQTT订阅消息(一)

jf_10471008 来源:jf_10471008 作者:jf_10471008 2023-02-06 17:29 次阅读

在亿佰特介绍了西门子PLC如何通过函数块连接MQTT服务器和发布消息,本文为大家介绍如何通过函数与函数块实现MQTT云消息的订阅,直接切入重点。

pYYBAGPgyHaAMSEpAAMptcxAfzY826.png

一、飞燕物联网平台配置

这里的配置和上一篇发布的配置基本相同,唯一的不同在于将数据的读写属性修改为支持读写,其余部分根据实际情况配置不同参数,这里我已控制关照为例说明,如下图所示:

poYBAGPgyHeAKKM1AAA1H-rn9VI396.png


二、服务器下发数据格式分析

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

poYBAGPgyHiAWtHGAAEU4KOWP2k634.png


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

pYYBAGPgyHqAMw8RAAC0Ofe71HU253.png


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

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

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

poYBAGPgyHuAZwTuAACq_1TPgm0106.png


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

pYYBAGPgyH2AEVdgAAC5-JUKpzU882.png


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

poYBAGPgyH-APF3BAADwuIHRIVU122.png


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

pYYBAGPgyICAest6AAAYAAcRsK4364.png


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

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    5011

    文章

    13286

    浏览量

    463240
  • 函数
    +关注

    关注

    3

    文章

    4329

    浏览量

    62590
  • MQTT
    +关注

    关注

    5

    文章

    650

    浏览量

    22501
收藏 人收藏

    评论

    相关推荐

    MQTT网关快速连接三菱系列PLC实现远程监控

    __MQTT协议网关串口连接三菱FX3UPLC操作说明 __ __MQTT协议网关串口连接三菱FX3UPLC操作说明v1.2 __ 前言:MQTT
    的头像 发表于 10-17 15:28 1380次阅读
    <b class='flag-5'>MQTT</b>网关快速<b class='flag-5'>连接</b>三菱系列<b class='flag-5'>PLC</b>实现远程监控

    如何查看及更改函数/函数的调用环境

    模块化设计的思想是把些相似的功能(比如电机控制、阀控制)设计成函数函数,这样就可以反复调用。其优点是:使程序架构更加清晰,避免重复编写相似功能的代码。不过可能会产生
    的头像 发表于 11-17 09:08 955次阅读
    如何查看及更改<b class='flag-5'>函数</b>/<b class='flag-5'>函数</b><b class='flag-5'>块</b>的调用环境

    IG902如何连接公有MQTT测试平台?

    ;amp;gt;&gt;云服务”,配置MQTT连接。 7.配置脚本将数据上传至云端。 1)选择“云服务”,点击发布中的“+”。 2)配置相关的发布设置。 3)配置订阅
    发表于 07-25 08:06

    MQTT协议介绍之二:连接

    介绍MQTT的基本知识。这章,我们讨论的主题是MQTT客户端和代理服务器的定义以及MQTT连接的基础知识,如何
    发表于 08-25 19:57

    MQTT协议介绍之:发布/订阅

    因为代理上的操作可以高度并行化并处理事件驱动,消息缓存和消息的智能路由通常也是提高可扩展性的决定性因素,但是,扩展发布/订阅数百万的连接绝对是个挑战,这可以使用集群代理节点实现,以便通过负载平衡器将负载
    发表于 08-25 19:58

    基于Eclipse paho-mqtt源码包的MQTT客户端设计(上)

    连接,提供两者之间的个有序的、无损的、基于字节流的双向传输。当应用数据通过 MQTT 网络发送时, MQTT 会把与之相关的服务质量(QoS)和主题名(Topic)相关连,其特点包
    发表于 08-04 16:28

    基于Eclipse paho-mqtt源码包的MQTT客户端设计(下)

    */paho_mqtt_start(&client);启动 MQTT 客户端之后,客户端会自动连接代理服务器,自动订阅已经设置的 Topic,根据事件执行回调
    发表于 08-04 16:33

    文教你快速读懂MQTT网关

    MQTT种发布(publish)/订阅(subscribe)协议,MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP
    发表于 03-24 16:09 1782次阅读

    NodeMCU学习(十一)--MQTT订阅与发布

    NodeMCU实现订阅和发布主题。1、要点扫盲1.1 MQTTMQTT协议--MQTT协议简介及原理》《MQTT协议--
    发表于 10-26 13:05 29次下载
    NodeMCU学习(十一)--<b class='flag-5'>MQTT</b>的<b class='flag-5'>订阅</b>与发布

    PLC程序分析和数据下发测试教程

    在亿佰特介绍了西门子PLC如何通过函数连接MQTT服务器和发布消息,前文为大家介绍如何通过函数
    的头像 发表于 02-06 17:56 1485次阅读
    <b class='flag-5'>PLC</b>程序分析和数据下发测试教程

    基于MQTT协议JSON格式发布与订阅PLC智能网关

    通过物通博联PLC智能网关的串口网口连接PLC(西门子、三菱、欧姆龙、施耐德、台达、汇川等),实时采集数据并上传到云平台或本地上位机,实现MQTT协议JSON格式发布与
    的头像 发表于 03-21 14:06 1054次阅读
    基于<b class='flag-5'>MQTT</b>协议JSON格式发布与<b class='flag-5'>订阅</b>的<b class='flag-5'>PLC</b>智能网关

    西门子SMART200PLC连接自建MQTT云平台操作教程

    前言:MQTT个基于客户端-服务器的消息发布/订阅传输协议。MQTT 协议的特点是轻量、简单、 开放和易于实现的,同时,西门子 PLC
    发表于 05-17 14:40 14次下载

    【教程】PLC利用函数连接MQTT服务器

    MQTT低协议消耗、数据安全性高等优点,在物联网领域已经发展很多年,网络上有很多资料可以学习,并且有很多的服务器运营商在不断降低云开发难度,之前需要前端工程师开发的网页,现在只要你对界面美观没有要求
    的头像 发表于 09-13 10:04 1360次阅读
    【教程】<b class='flag-5'>PLC</b><b class='flag-5'>利用</b><b class='flag-5'>函数</b><b class='flag-5'>块</b><b class='flag-5'>连接</b><b class='flag-5'>MQTT</b>服务器

    MQTT协议网关串口连接三菱FX3UPLC操作说明

    前言:MQTT个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议的特点是轻量、简单、开放和易于实现的,同时,三菱PLC广泛应用于
    发表于 08-14 15:19 0次下载

    西门子PLC如何轻松实现将数据上传到MQTT云平台

    前言:MQTT个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议的特点是轻量、简单、开放和易于实现的,同时,西门子PLC广泛应用
    发表于 08-14 15:17 1次下载