西门子|西门子PLC利用函数块连接MQTT服务器

西门子|西门子PLC利用函数块连接MQTT服务器

文章图片

西门子|西门子PLC利用函数块连接MQTT服务器

文章图片

西门子|西门子PLC利用函数块连接MQTT服务器

文章图片

西门子|西门子PLC利用函数块连接MQTT服务器

文章图片

西门子|西门子PLC利用函数块连接MQTT服务器

文章图片

西门子|西门子PLC利用函数块连接MQTT服务器

文章图片

西门子|西门子PLC利用函数块连接MQTT服务器

文章图片

西门子|西门子PLC利用函数块连接MQTT服务器

文章图片

西门子|西门子PLC利用函数块连接MQTT服务器

文章图片


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

同样的腾讯有腾讯连连小程序可视化界面设计 , 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字节)+PASSWORD
PUBLISH报文:
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删除仿真下载程序时报错;