【教程】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字节)+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删除仿真下载程序时报错;后面会连接阿里云,需要plc接入外网,需要连接可以上网的路由器并配置正确的ip地址;
之面会使用域名连接,默认的dns可能无法解析,需要在“高级组态”的”dns”下配置阿里云域名解析服务器(223.5.5.5),我这可以解析域名可以忽略配置dns服务器;

西门子plc仿真
手上没有plc也可以学习mqtt client函数块的使用,只需要使用“simatic s7-plcsim advanced v4.0”西门子plc高级仿真器即可实现s7-1500plc的仿真运行。1、配置虚拟网卡,填写plc参数,如下图所示:
2、切回博图界面点击“编译”,忽略警告,在点击下载,按照下图配置:
3、再点击“下载”,第一次使用会弹出几个配置窗口,全部选“同意”或者“是”,经过以上步骤后点击“装载”选择同意,选择启动设备:至此完成博图仿真调试的全部说明。

云平台设备创建
准备云平台账号,这里小编使用阿里云飞燕平台进行演示,你也可以onenet、腾讯云、华为云、百度云等,方法基本类似,这个函数库也是使用标准mqtt3.1.1的三要素client id、username、password,因此阿里云的三要素与标准mqtt3.1.1三要素不同也需要转换,转换规则可以通过云平台使用手册查询,不过阿里云在设备详情下提供了标准mqtt3.1.1三要素的参数可以直接使用,使用其他平台的应当根据对应方法进行转换。1、进入飞燕物联网平台(https://living.aliyun.com),登录自己的阿里云账号,没有开通该功能的点击开通(需要实名认证),开通的点击进入控制台;2、没有项目的点击“创建新项目”,输入名称点击“确定”即可,点击“项目”进入“项目详情”,点击“创建新产品”,输入产品名,配置“功能定义”可以随便选一个后面根据需求在重新定义,联网方式一定不要选择“wifi接入”,通讯格式使用“ica标准数据格式(alink json)”;
3、进入“产品详情”,首先进入的是“功能定义”,这里先讲如何连接,直接跳过“功能定义”与“人机交互”,在“设备调试”,选择开发的模组,目前没有与阿里云合作的模组,直接选择未知模组即可;4、点击”新增设备”,创建plc连接的认证参数,进入创建设备的详情界面,查询连接mqtt3.1.1所需要的地址、端口、client id、username、password,这里我们不在飞燕平台下查询,需要在“物联网平台”的设备列表下设备详情查询,这样就可不用自己去转换三要素;

配置mqttdb块
1、修改mqttdb块中的参数,用于连接阿里云mqtt服务器,打开变量组“connparams”在展开变量“mqttbrokeraddress”,配置参数“qdnaddress”为“a1pc9x6nd09.iot-as-mqtt.cn-shanghai.aliyuncs.com.”,配置“post”为1883。【注意】输入域名需要“.“结束输入。2、填入对应的三要素:
3、再次点击编译下载:

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

美国提新法案 拟投10亿美元替代华为在5G方面的主导地位
中国面板企业面临新技术挑战,面板企业与终端企业合作的重要性
光谱共焦位移传感器能应用那些领域?原理是什么?
华为在电动汽车领域的业务又进一步
国产神车五菱宏光 Mini EV大拆解,电控,驱动,PDU等高清靓图
【教程】PLC利用函数块连接MQTT服务器
出售!HP8648A HP8648A HP8648B 信号源
微硬创新RS485 MODBUS转PROFINET网关PNMD485-K20流水线检重称重自动化项目连接西门子PLC和工业电子秤配置案例
储能和电动汽车的发展将带来电池市场的庞大需求
MAX1725,MAX1726低压差线性稳压器
滴水湖RISC-V力量再聚首,芯来赋能客户创“芯”应用
基于的DSP的逆变电源模糊PID控制
XQ6657Z35-EVM 的DSP + ZYNQ核心板,SRIO通讯
模糊PID控制系统设计的特点、优势详解
VR或将走出寒冬 迎来春天
广明源紫外线六面均匀物表消毒机助力复旦校园防疫工作
领邦仪器启动2013年校园招聘 为创新研发注入新血液
李铭豪:艾迈斯半导体(ams)光传感解决方案的全球领导者
北京移动2020年下半年将推出社区通信管家线上社区服务
基于双以太网处理器Jupiter实现嵌入式设备网络的设计