CODESYS功能 - EtherCAT固件更新

本文介绍在 CODESYS 体系中更新 EtherCAT 从站固件的方法。

固件

EtherCAT 上的站点分两种:主站(控制器等)和从站(驱动器等)。两者的更新方法不同:

种类 更新方法 执行者
主站应用(.app) CODESYS IDE 下载,或手动替换启动应用 CODESYS runtime
从站(驱动器固件等) 经 EtherCAT 总线传输文件 PLC 程序与上位机配合

主站的更新方法,前一篇《CODESYS功能原理 - 下载与启动》有所介绍,不再赘述。

从站的固件更新,其核心为:把固件文件通过 EtherCAT 邮箱协议分块写入从站,由从站自行完成校验、烧写和重启。

从站固件升级的几种实现

从站固件升级有三种实现方式,按使用场景选择:

路径 做法
配置工具手动升级 在 CODESYS IDE 主站配置工具的从站在线页面中,选择固件文件下发
厂商专用工具 使用驱动器厂商提供的升级工具,按其手册操作
程序化集成 将升级功能做入上位机和 PLC 程序,由操作人员一键执行

前两种不需要开发。其中用 CODESYS IDE 主站配置升级时,需先在从站的设备配置页勾选 专家设置:

从站勾选专家设置

登录连接后,点击从站,就会出现「在线」选项卡,在其中选择固件文件下发。

如需自行控制升级流程,可将上位机与 PLC 程序配合,经总线把固件分块传给从站——常见的传输协议是FoE。

FoE 协议背景

EtherCAT 从站有两条通信通道:周期性过程数据(PDO,实时 IO,每周期固定交换)和非周期性邮箱消息(SDO,按需收发,传参数和文件)。固件文件走邮箱通道,邮箱协议族包含以下几个常用成员:

协议 用途
CoE CANopen over EtherCAT,读写对象字典(SDO)
FoE File over EtherCAT,传输文件
EoE Ethernet over EtherCAT,传输网络帧

固件文件通过 FoE 传输,需要先切换状态:主站发起请求,从站从正常运行(OP)状态切换到 Bootstrap状态,随后主站分块发送固件,从站接收、校验、烧写,完成后重启(Reboot),回到正常状态。

FoE 升级的状态切换过程

系统分工

完整的固件更新功能由三方配合完成,各自的职责是:

  • 上位机:固件文件的管理与传输(经 SSH/scp 等网络方式送到控制器)、升级指令下发、进度显示与记录;
  • 控制器:升级流程的执行者——保存固件、按状态机分块发送 FoE 数据、上报状态和进度,同时承担安全联锁;
  • 驱动器:接收文件、校验、写入 Flash(可能有 AB 分区)、重启生效。

一次完整升级过程中三方的交互时序如下:

一次完整升级的三方时序

控制器侧流程

控制器侧的流程就是一个状态机:一步一态、每个状态有超时、每步有错误码,划分如下:

控制器侧固件升级状态机

升级是否成功,以回读版本与目标版本一致为准。

多设备升级

如多台设备,常见做法是等所有设备的固件都传输完毕,再从链路末端向首端逐台重启,重启时需要等一会。

多设备升级的前提,要设置 EtherCAT_Master_SoftMotion.StartConfigWithLessDevice := TRUE; // 允许缺失启动,否则一台重启了,总线就断开了

安全联锁

烧写 Flash 时,驱动器的处理器被擦写操作占用,控制环暂停,功率级输出不再受控——此时若电机仍处于使能状态,会失去控制。因此升级前必须断使能,升级过程中禁止任何运动。

收到升级指令后,PLC 先执行联锁检查:

  1. 目标设备(必要时整条链路)全部断使能,并确认无残余使能状态;
  2. 设置“升级中”全局标志,拦截所有运动指令入口;
  3. 每个状态设置超时,超时即按失败退出并给出错误码,不留悬挂状态。

实施要点

保留回退手段:旧版本固件文件应保留,新版本在现场出现问题时可以刷回。

posted @ 2026-10-11 20:47  周永恒  阅读(11)  评论(0)    收藏  举报