内置物联网常用协议MQTT是 IOT-PLC的重要特征,借助WIFI 网络和MQTT协议支持,使用者可以快速完成物联网应用项目,例如设备的远程监测和控制。本文实验将完成对IOT-PLC的输入检测,然后将输入的状态发送到MQTT服务器,通过订阅MQTT消息,将MQTT消息解析并通过输出端口输出。通过本文实验,使用者可以掌握:
1、MQTT 服务器的部署和使用
2、使用IOT-PLC连接MQTT服务器
3、使用IOT-PLC实现基本测控
一、MQTT服务器的部署和使用
1.1 MQTT服务器的部署
MQTT的服务器软件很多,可以使用热门的emqx,从Windows | EMQX 5.2 文档下载最新版本并安装。启动emqx服务器是通过命令行启动的,可以做批处理文件放在emqx的安装根目录,
在批处理文件输入启动指令:
.\bin\emqx start
和停止命令:
.\bin\emqx stop
然后就可以使用鼠标双击 start.bat 启动emqx服务器了。
首次启动 emqx服务器,windows的防火墙会提示访问网络的许可,要择选允许emqx访问网络。
emqx的管理配置通过web完成,在浏览器的地址栏输入:http://localhost:18083/
在登录页面输入用户名(默认是admin)和密码(默认是public)。
1.2 MQTT 服务器配置
登录到 emqx的管理页面以后,点击做侧边栏的图标,选择【客户端认证】,进入客户端认证的配置页面。
点击右上角的图标,添加一个客户端认证数据库,选择【内置数据库 Password-Based】,账号类型选用 username,密码加密方式采用 sha256 ,加盐方式采用 suffix,然后点击创建。
在客户端认证页面点击【用户管理】,然后点击【+】添加,输入用户名 ctrl ,输入密码 密码 key,确认添加。
这样就在 emqx 服务器中设置了一个允许接入的客户端了。
二、使用IOT-PLC 连接MQTT服务器
IOT-PLC的WIFI_MQTT功能块是WIFI网络名和密码,MQTT服务器地址、用户名和密码的设置模块。归类在“附加功能类型”
详请可参考设计文件。
三、使用IOT-PLC实现基本测控
物联网项目的一类常见应用是检测设备的状态(报警、运行指示、停止指示等),并将设备的状态信息发送到数据中心进行存储、处理。使用IOT-PLC的消息发送(MSG_TX)功能块,可以快速实现这类应用的基本要求。
MSG_TX功能块的输入包括:消息主题TOPIC(STRING),消息模板MSG(STRING),发送触发T(BOOL)。
消息主题是MQTT的概念,既可以作为发送消息的目标识别信息,也可以用于区分消息种类,具体作用由项目应用决定。
消息模板是将PLC内部的变量状态按照预定格式生成消息的字符串,由变量引用和分隔符组成,变量引用的格式为 [@变量名] , 例如实验设计中的 [@K0],两个变量引用之间一定要有分隔符,分隔符是由设计者决定的方便阅读或者处理消息的字符串,例如实验设计中的 LED: ,尤其需要注意的是不要使用包含 [@ 的字符串作为分隔符。
发送触发是发送MQTT消息的触发信号,上升沿(当触发信号从 FALSE 变成 TRUE 的时候)触发。
物联网项目的另一类常见应用是控制设备(运行、停止等),使用IOT-PLC的MSG_RX接收MQTT消息,用消息模板解析消息并控制输出,可以达成设备的远程控制。
MSG_RX的输入包括:消息主题TOPIC(STRING),消息模板MSG(STRING);输出包括消息接收指示R(BOOL)。
消息模板也是由变量引用和分隔符组成,要使用和发送端相同的分隔符,变量引用根据应用情况可以不同(类型需要和发送端一致)。
四、实验
参考《{PLC,IOT}>ESP32 项目实践——简单入门》的接线方式接好IOT-PLC的硬件,按照本实验的方法构建MQTT服务器,启动并配置好MQTT服务器,编译下载PLC设计文件,手动接通(或断开)X0和GND,可以观察到Y0 的输出变化。在MQTT服务器的管理界面,可以看到对应的连接情况和消息传递情况。