一、远程升级是大部分设备软件的基本要求
基于两种常见的现实原因,远程升级功能成为当下物联网设备软件(或者其他民用设备软件)的基本要求。
1、赶进度完成实施的项目,在系统运行的初期,会暴露出一些问题,需要修改设计解决。
2、成熟运行的系统,随着使用环境或者应用需求的变化,需要更改原来的设计以适应变化。
通过远程升级将已经部署到工作现场的设备软件更新为最新状态,可以节省大量的时间和费用。另外,有些项目的设备安装环境对人并不友好,例如污水处理相关项目等,利用网络实现远程升级,对于确保操作人员的安全至关重要。
二、{PLC,IOT}>ESP32 远程升级
{PLC,IOT}>ESP32内置了 远程升级功能,并且建议使用者把远程升级功能作为应用项目的默认支持选项。
2.1 使用项目配置变量设置远程升级参数
{PLC,IOT}>ESP32 远程升级功能包含应用程序升级和平台固件升级,在应用项目的配置变量中添加对应的字符串变量,字符串的初始值指定启动升级的配置参数。
其中 'UPGRADE_CONFIG@[UP_TR,SVR]' 配置了应用程序升级的参数,UP_TR是升级行为的触发信号(BOOL类型,上升沿触发升级)变量,SVR 是指定远程升级应用程序文件的URL字符串变量,这两个变量必须是应用程序中的局部变量。
'OTA_CONFIG@[OTA_TR,SVR]'配置了平台固件升级的参数,OTA_TR是升级行为的触发信号(BOOL类型,上升沿触发升级)变量,SVR 是指定远程升级平台固件文件的URL字符串变量,这两个变量必须是应用程序中的局部变量。
2.2 在应用程序中使用MQTT启动远程升级
在项目设计中,添加POU实现远程升级。
这个设计让PLC应用程序订阅'cn.mqtt.eweaving.tech' MQTT服务器的'upgrade'主题,如果接收到的消息和消息模板'UP:[@UP_TR],OTA:[@OTA_TR],SVR:[@SVR]'能够匹配,就会对UP_TR、OTA_TR 和 SVR 赋值,平台固件检测到触发信号的上升沿,就启动执行远程升级的过程。
2.3 远程升级服务端的部署
服务端需要部署一个HTTP服务器程序,开放一个HTTP端口,将要升级的程序文件存放在HTTP的工作目录下,可以用网页浏览器下载程序文件。例如,用一台电脑(IP地址是192.168.31.155),启动开发平台自带的 plc-remote-debug-server.exe 作为 HTTP服务器程序,开放的HTTP端口是21207,在plc-remote-debug-server.exe 的工作目录下 \html 存放升级程序文件为 A.BIN。
2.4 使用MQTT客户端发送消息触发远程升级
使用 MQTTX客户端程序,连接到mqtt服务器,向upgrade主题发送消息
UP:TRUE,OTA:FALSE,SVR:http://192.168.31.155:21207/html/A.bin, 就可以触发PLC从服务器(IP地址是192.168.31.155)获取升级程序文件A.bin,并且更新现有的应用程序。
向upgrade主题发送消息UP:FALSE,OTA:TRUE,SVR:https://192.168.31.155:21207/ESP32PLC/OTA,就可以触发PLC从服务器获取平台固件的升级文件。
三、快速使用
在开发平台软件打开扩展的调试界面,点击【参考设计】,可以看到对应的参考设计介绍,点击【拷贝】,即可在设计中复制示例中的程序。
四、代码下载