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),回到正常状态。

系统分工
完整的固件更新功能由三方配合完成,各自的职责是:
- 上位机:固件文件的管理与传输(经 SSH/scp 等网络方式送到控制器)、升级指令下发、进度显示与记录;
- 控制器:升级流程的执行者——保存固件、按状态机分块发送 FoE 数据、上报状态和进度,同时承担安全联锁;
- 驱动器:接收文件、校验、写入 Flash(可能有 AB 分区)、重启生效。
一次完整升级过程中三方的交互时序如下:

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

升级是否成功,以回读版本与目标版本一致为准。
多设备升级
如多台设备,常见做法是等所有设备的固件都传输完毕,再从链路末端向首端逐台重启,重启时需要等一会。
多设备升级的前提,要设置 EtherCAT_Master_SoftMotion.StartConfigWithLessDevice := TRUE; // 允许缺失启动,否则一台重启了,总线就断开了
安全联锁
烧写 Flash 时,驱动器的处理器被擦写操作占用,控制环暂停,功率级输出不再受控——此时若电机仍处于使能状态,会失去控制。因此升级前必须断使能,升级过程中禁止任何运动。
收到升级指令后,PLC 先执行联锁检查:
- 目标设备(必要时整条链路)全部断使能,并确认无残余使能状态;
- 设置“升级中”全局标志,拦截所有运动指令入口;
- 每个状态设置超时,超时即按失败退出并给出错误码,不留悬挂状态。
实施要点
保留回退手段:旧版本固件文件应保留,新版本在现场出现问题时可以刷回。

浙公网安备 33010602011771号