一、应用背景
工业互联网是{PLC,IOT}>ESP32 项目产品的重要应用领域,在这个领域中存在很多以MODBUS协议通信的机器设备,将这些设备连接到中心服务器,实现监控或者系统级的自动化生产,是工业互联网应用普遍会遇到的需求。
MODBUS的有线通信方式,以及不同设备的波特率不完全一致或者可设置,地址编码不一定可调等问题,导致了用MODBUS总线实现系统级(设备种类多、设备数量多)的联网基本不可行,这个问题催生了一类产品——“MODBUS网关”,将MODBUS的RS485接口协议转成以太网接口,实现通过IP/TCP网络协议对设备的读写操作。在具体的应用中,MODBUS网关解决了网络访问设备的问题,结合到项目应用还有很多的开发工作要做,因此,本文将基于 {PLC,IOT}>ESP32提供一套可以直接套用到应用项目的设计框架,帮助使用者快速实现项目要求。
二、MODBUS转MQTT网关设计框架
基于{PLC,IOT}>ESP32实现MODBUS转MQTT网关,实现的功能是:通过MQTT向应用网关发送操作指令,应用网关按照MODBUS协议操作目标设备,并通过MQTT反馈操作结果。这个设计框架的好处是:把modbus的操作设计成交互式命令,由服务端的程序灵活操作,方便适配不同的应用要求。
2.1 设计框架构成
MODBUS转MQTT网关设计框架包含:
1、远程升级支持组件(详细设计文件参考{PLC,IOT}>ESP32 项目实践——远程升级)
应用升级配置 + 平台固件升级配置 + WIFI_MQTT + MSG_RX
1、MODBUS主机配置
2、从机MODBUS寄存器地址和PLC变量的映射关系
3、MODBUS操作必需的参数
4、MODBUS操作的执行模块 MBUS_MSG
5、MQTT消息接收模块 MSG_RX 和发送模块MSG_TX
2.2 设计详解
用全局的配置变量,实现MODBUS的主机配置,从机MODBUS寄存器地址和PLC变量的映射关系。
{PLC,IOT}>ESP32的MODBUS将另安排文章详细讲解。
WIFI接入和MQTT连接服务器在 远程升级支持组件(详细设计文件参考{PLC,IOT}>ESP32 项目实践——远程升级)中完成。
如上图,WIFI_MQTT完成WIFI接入和MQTT连接服务器。
增加MOD2MQTT程序块完成mqtt指令接收、modbus操作以及寄存器值回传的功能。
在MOD2MQTT程序块的局部变量中,添加MODBUS操作必需的参数、modubs寄存器变量、MODBUS操作的执行模块 MBUS_MSG、MQTT消息接收模块 MSG_RX 和发送模块MSG_TX。
mqtt指令接收
modbus操作
mqtt回传寄存器值
文章评论