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

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

3天内不再提示

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

亿佰特物联网应用专家 2022-09-13 10:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

MQTT低协议消耗、数据安全性高等优点,在物联网领域已经发展很多年,网络上有很多资料可以学习,并且有很多的服务器运营商在不断降低云开发难度,之前需要前端工程师开发的网页,现在只要你对界面美观没有要求只是想实现功能,服务器运营商都有对应的可视化开发工具支持,比如下文使用的阿里云飞燕平台的“人机交互”设计就可以快速设置手机控制界面。bbc326a4-2fb0-11ed-9ade-dac502259ad0.png

同样的腾讯有腾讯连连小程序可视化界面设计,OneNET有可视化Web Server界面设计,几乎所有的服务器运营商都在降低开发难度。最近几年PLC厂家也在提供MQTT函数功能块,只要设备支持TCP客户端并且可以发送16进制透明数据,就可以通过数据组合的方式实现MQTT服务器连接,并根据协议要求发送对应的数据包就可以实现MQTT通讯,之前我就利用组态屏搭配串口服务器通过脚本编程实现TCP客户端连接MQTT服务器,下面介绍一种直接通过PLC连接MQTT服务器的方法。下面是MQTT常用的报文列举:CONNECT报文:10+字符总长度(遵循剩余字符算法)+00+04+4D 51 54 54+04+C2 +保活时间(120s:00 78)+客户端长度(2字节)+客户端ID+用户名长度(2字节)+用户名+密码长度(2字节)+PASSWORDPUBLISH报文:30 +字符总长度(遵循剩余字符算法)+发布地址长度(2字节)+发布地址+用户数据SUBSCRIBE报文:82 +字符总长度(遵循剩余字符算法)+00 00+订阅地址长度(2字节)+订阅地址+服务等级(00、01、02)

博图开发环境搭建

从零开始编写程序,需要熟悉西门子SLC编程语言,现学可能比较困难也不符合我写这篇文章的初衷,利用这篇文章只需要原来熟悉博图的梯型图编程和功能块调用,就可以利用下文使用函数块连接MQTT服务器。西门子全球技术支持中心可以下载到一篇关于MQTT连接的实例,这里小编采用“国际版”下载MQTT实例讲解,在“中文”技术支持中心也有一篇关于“MQTT连接”的实例(中文实例地址:SIMATIC CPU 的 MQTT 发布服务器),但我们有没有使用过,有可能是同一实例,用什么实例本质都是相同的(MQTT协议不变,最终与服务器通讯的数据不变),中间过程可能不同但变量描述与协议相同也相同,建议在开发中变量名尽量与协议相同,方便程序阅读。小编使用的是“国际版”下载的实例(国际版实例下载地址:Use the SIMATIC controller as an MQTT client)。后面会通过PLC仿真软件仿真真实的S7-1500设备,例程提供了两个PLC的连接的实例,其实都是一样的,把S7-1200删除仿真下载程序时报错;bbd967c0-2fb0-11ed-9ade-dac502259ad0.png后面会连接阿里云,需要PLC接入外网,需要连接可以上网的路由器并配置正确的IP地址;
bbf02582-2fb0-11ed-9ade-dac502259ad0.png之面会使用域名连接,默认的DNS可能无法解析,需要在“高级组态”的”DNS”下配置阿里云域名解析服务器(223.5.5.5),我这可以解析域名可以忽略配置DNS服务器;
bc0763f0-2fb0-11ed-9ade-dac502259ad0.png

西门子PLC仿真

手上没有PLC也可以学习MQTT Client函数块的使用,只需要使用“SIMATIC S7-PLCSIM Advanced V4.0”西门子PLC高级仿真器即可实现S7-1500PLC的仿真运行。1、配置虚拟网卡,填写PLC参数,如下图所示:bc19f380-2fb0-11ed-9ade-dac502259ad0.png

2、切回博图界面点击“编译”,忽略警告,在点击下载,按照下图配置:
bc38425e-2fb0-11ed-9ade-dac502259ad0.png3、再点击“下载”,第一次使用会弹出几个配置窗口,全部选“同意”或者“是”,经过以上步骤后点击“装载”选择同意,选择启动设备:bc58b34a-2fb0-11ed-9ade-dac502259ad0.png至此完成博图仿真调试的全部说明。

云平台设备创建

准备云平台账号,这里小编使用阿里云飞燕平台进行演示,你也可以OneNET、腾讯云、华为云、百度云等,方法基本类似,这个函数库也是使用标准MQTT3.1.1的三要素Client ID、UserName、Password,因此阿里云的三要素与标准MQTT3.1.1三要素不同也需要转换,转换规则可以通过云平台使用手册查询,不过阿里云在设备详情下提供了标准MQTT3.1.1三要素的参数可以直接使用,使用其他平台的应当根据对应方法进行转换。1、进入飞燕物联网平台(https://living.aliyun.com),登录自己的阿里云账号,没有开通该功能的点击开通(需要实名认证),开通的点击进入控制台;bc7398e0-2fb0-11ed-9ade-dac502259ad0.png2、没有项目的点击“创建新项目”,输入名称点击“确定”即可,点击“项目”进入“项目详情”,点击“创建新产品”,输入产品名,配置“功能定义”可以随便选一个后面根据需求在重新定义,联网方式一定不要选择“WIFI接入”,通讯格式使用“ICA标准数据格式(Alink JSON)”;
bc97b87e-2fb0-11ed-9ade-dac502259ad0.png

3、进入“产品详情”,首先进入的是“功能定义”,这里先讲如何连接,直接跳过“功能定义”与“人机交互”,在“设备调试”,选择开发的模组,目前没有与阿里云合作的模组,直接选择未知模组即可;bcc9ca6c-2fb0-11ed-9ade-dac502259ad0.png4、点击”新增设备”,创建PLC连接的认证参数,进入创建设备的详情界面,查询连接MQTT3.1.1所需要的地址、端口、Client ID、UserName、Password,这里我们不在飞燕平台下查询,需要在“物联网平台”的设备列表下设备详情查询,这样就可不用自己去转换三要素;
bcfb27d8-2fb0-11ed-9ade-dac502259ad0.png

配置MqttDB块

1、修改MqttDB块中的参数,用于连接阿里云MQTT服务器,打开变量组“connparams”在展开变量“mqttBrokerAddress”,配置参数“qdnAddress”为“a1pc9X6nd09.iot-as-mqtt.cn-shanghai.aliyuncs.com.”,配置“post”为1883。【注意】输入域名需要“.“结束输入。bd15f52c-2fb0-11ed-9ade-dac502259ad0.png2、填入对应的三要素:
bd4002ea-2fb0-11ed-9ade-dac502259ad0.png3、再次点击编译下载:
bd59f060-2fb0-11ed-9ade-dac502259ad0.png

仿真连接MQTT服务器

1、点击在线监控数据,需改“connect“为”true“,函数块自动连接MQTT服务器;bd723ef4-2fb0-11ed-9ade-dac502259ad0.png【注意】阿里云不支持20s的心跳请求,最少配置30s,这里使用120s。
2、登录平台查询MQTT状态:bd8efba2-2fb0-11ed-9ade-dac502259ad0.png

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

    关注

    5045

    文章

    14442

    浏览量

    483578
  • 服务器
    +关注

    关注

    13

    文章

    10094

    浏览量

    90883
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    服务器远程连接超时以及拒绝连接的真实缘由和解决办法

    一、为啥服务器远程连接老是出现“超时”或者“拒绝连接”? 不少企业在用云服务器或海外服务器时,常会碰到挺闹心的事儿,像远程
    的头像 发表于 11-19 15:34 447次阅读

    服务器数据恢复—RAIDZ多硬盘离线导致服务器崩溃的数据恢复案例

    服务器数据恢复环境&故障: 一台服务器有32硬盘,采用Windows操作系统。 服务器在正常运行的时候突然变得不可用。没有异常断电、进水、异常操作、机房不稳定等外部因素。
    的头像 发表于 09-18 12:29 512次阅读
    <b class='flag-5'>服务器</b>数据恢复—RAIDZ多<b class='flag-5'>块</b>硬盘离线导致<b class='flag-5'>服务器</b>崩溃的数据恢复案例

    使用paho-mqtt里例程连接服务器失败怎么解决?

    【rt-thread】【paho-mqtt】最近由于学习需要,了解了关于rt-thread软件包paho-mqtt的使用,但是使用官方例程时,出现连接不上服务器的情况。具体报错如下:
    发表于 09-18 06:38

    SSH 远程连接内网 Linux 服务器

    利用 ZeroNews,您可对用内网的 Linux 服务器进行统一的 SSH 远程连接管理,当用户外出时,可通过 ZeroNews 分配的公网域名地址,快速访问企业内部、家庭的 Linux
    的头像 发表于 09-17 19:52 281次阅读
    SSH 远程<b class='flag-5'>连接</b>内网 Linux <b class='flag-5'>服务器</b>

    mqtt服务器关机,rt-thread5.1系统会死机怎么解决?

    无意间发现只要MQTT服务器掉线或者关机,RT-THREAD5.1系统就会死机,无论是WIFI链接或者网口链接,终端提示 Warning: There is no enough buffer
    发表于 09-09 08:00

    服务器数据恢复—服务器断电导致raid模块损坏的数据恢复案例

    某品牌服务器中有12硬盘,组建了一组raid5磁盘阵列,服务器内存储的是普通文件。 机房供电不稳定导致服务器断电,管理员重启服务器后发现
    的头像 发表于 09-04 12:57 456次阅读

    【RA4M2-SENSOR】—— 15. 使用AT指令连接MQTT服务器上传数据

    上一节我已经实现了使用AT指令访问ESP8266连接心知天气网站获取天气预报,是通过HTTP协议来实现的。 ESP8266除了连接HTTP协议外,还可以通过TCP IP协议连接MQTT
    发表于 09-01 13:56

    只要MQTT服务器掉线或者关机,RT-THREAD5.1系统就会死机,怎么解决?

    无意间发现只要MQTT服务器掉线或者关机,RT-THREAD5.1系统就会死机,无论是WIFI链接或者网口链接,终端提示 Warning: There is no enough buffer
    发表于 08-22 06:35

    服务器数据恢复—Linux系统服务器崩溃的数据恢复案例

    服务器数据恢复环境: linux操作系统服务器中有一组由4SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程中突
    的头像 发表于 05-20 15:46 550次阅读

    《DNESP32S3使用指南-IDF版_V1.6》第五十五章 基于MQTT协议连接阿里云服务器

    MQTT并发送连接请求到服务器。一旦成功连接MQTT服务器,它就可以开始循环发布数据。现在,让
    发表于 03-18 09:22

    服务器数据恢复—服务器raid5阵列硬盘出现坏道掉线如何恢复服务器数据?

    一台服务器中有一组由16SAS接口的硬盘组建的raid5阵列。 服务器磁盘阵列中有2硬盘离线,服务器上跑的应用崩溃。 经过后续的分析
    的头像 发表于 02-28 13:20 659次阅读
    <b class='flag-5'>服务器</b>数据恢复—<b class='flag-5'>服务器</b>raid5阵列硬盘出现坏道掉线如何恢复<b class='flag-5'>服务器</b>数据?

    【教程】使用NE2系列串口服务器MQTT模式接入云平台实例

    在物联网技术持续发展的当下,设备之间的高效通信成为关键。亿佰特NE2系列串口服务器MQTT模式,为众多设备的互联互通提供了便捷且可靠的解决方案。一设备与MQTT模式简介NE2系列串口服务器
    的头像 发表于 02-27 19:35 987次阅读
    【教程】使用NE2系列串口<b class='flag-5'>服务器</b><b class='flag-5'>MQTT</b>模式接入云平台实例

    采用华为云 Flexus 云服务器 X 实例部署 MQTT 服务器完成设备上云

    一、前言 1.1 开发需求 这篇文章讲解: 采用华为云最新推出的 Flexus 云服务器 X 实例 EMQX 服务器,搭建 MQTT 服务器,完成设备上云,实现物联网产品开发 随着物联
    的头像 发表于 12-26 18:12 1002次阅读
    采用华为云 Flexus 云<b class='flag-5'>服务器</b> X 实例部署 <b class='flag-5'>MQTT</b> <b class='flag-5'>服务器</b>完成设备上云

    termius如何使用,termius如何使用的过程,linux服务器远程连接的实用教程

            随着技术的不断进步,服务器远程连接技术也在不断提升其性能和安全性,以满足企业日益增长的需求。本文将和大家一起讨论termius如何使用的过程以及Linux远程桌面
    的头像 发表于 12-19 11:31 1101次阅读
    termius如何使用,termius如何使用的过程,linux<b class='flag-5'>服务器</b>远程<b class='flag-5'>连接</b>的实用教程

    负载均衡服务器服务器如何连接

    负载均衡服务器服务器如何连接?负载均衡服务器服务器可通过多种方式连接,包括直接
    的头像 发表于 12-09 13:41 766次阅读