4. CODESYS开发环境与WAGO边缘控制编程
WAGO边缘控制器(如PFC200、Edge Controller系列)在出厂时已经预装了CODESYS运行时(Runtime),但真正用于编写、编译、下载和调试程序的,是安装在工程师PC上的CODESYS Development System。理解“PC端开发环境”与“控制器端运行时”的分工,是后续所有编程工作的前提:PC负责工程创建、代码编写、编译与在线调试;控制器负责执行已下载的应用、访问本地I/O与现场总线、并通过以太网与PC通信。
一、CODESYS安装与设备描述
CODESYS Development System可从CODESYS官网下载,安装时建议选择完整安装,确保包含标准库、可视化组件以及常用现场总线支持。安装完成后,第一次连接WAGO控制器前,通常还需要安装WAGO提供的设备描述文件(Device Description),常见形式为.devdesc.xml或打包的库文件。设备描述文件的作用,是让CODESYS在“添加设备”时能够识别WAGO控制器的具体型号、固件版本、可用插槽、I/O模块以及支持的现场总线,从而在设备树中正确生成硬件结构。
安装设备描述的一般做法是:打开CODESYS,进入Tools → Device Repository,点击Install…,选择WAGO提供的设备描述文件并确认安装。安装成功后,在Device对话框的厂商列表中应能看到WAGO,并可在其下找到对应控制器型号。若未安装设备描述,添加设备时可能只能看到通用CODESYS Control Win,无法匹配真实硬件,后续I/O映射和总线配置都会受限。
二、工程创建与设备树结构
在CODESYS中新建工程时,选择Standard Project,并在设备选择界面中指定WAGO控制器型号与编程语言。CODESYS支持IEC 61131-3定义的五种主要语言:梯形图(LD)、功能块图(FBD)、顺序功能图(SFC)、结构化文本(ST)和指令表(IL)。对于边缘控制中的数据处理、协议转换和逻辑判断,结构化文本(ST)通常更高效;对于电气逻辑清晰的联锁控制,梯形图(LD)更直观。
工程创建后,设备树(Device Tree)是组织整个项目的核心。典型结构如下:最上层是Device(WAGO控制器),其下包含PLC_PRG等程序组织单元(POU)、Task Configuration(任务配置)、EtherCAT Master或Modbus TCP Master等现场总线主站,以及I/O Mapping(I/O映射)。每个POU可以包含变量声明区和代码区,变量分为局部变量(VAR)、输入输出变量(VAR_INPUT/VAR_OUTPUT)、全局变量(VAR_GLOBAL)等。
三、IEC 61131-3编程语言与程序组织
IEC 61131-3不仅规定了语言,还规定了程序组织单元(POU)的类型:程序(PROGRAM)、功能块(FUNCTION_BLOCK)和函数(FUNCTION)。程序是周期执行的顶层单元;功能块带有内部状态,适合封装电机控制、PID调节、协议解析等可复用逻辑;函数无内部状态,适合数学计算和类型转换。在边缘控制中,常把Modbus读写封装为功能块,把数据缩放封装为函数,把主逻辑放在PLC_PRG中调用。
以结构化文本为例,一个简单的模拟量缩放功能块可以这样定义:输入RawValue(INT,0~27648)、RawMin、RawMax、EngMin、EngMax,输出EngValue(REAL)。计算式为EngValue := (RawValue - RawMin) * (EngMax - EngMin) / (RawMax - RawMin) + EngMin;。若RawValue=13824,RawMin=0,RawMax=27648,EngMin=0.0,EngMax=100.0,则EngValue=50.0。这类计算在边缘侧常用于把PLC原始值转换为温度、压力或流量工程值。
四、任务配置与在线调试
任务配置决定程序的执行时机和优先级。在Task Configuration下可添加MainTask,设置周期类型(Cyclic)和间隔(如T#20ms),再把PLC_PRG分配给该任务。对于需要快速响应的逻辑,可设置更短周期(如T#5ms)并提高优先级;对于数据上传、日志记录等非实时任务,可设置较长周期(如T#1s)并降低优先级。需要注意,任务周期过短会增加CPU负载,应结合实际控制要求与控制器性能设定。
在线调试是验证程序是否按预期运行的关键。常用手段包括:Login后进入在线模式,使用Watch窗口监视变量实时值;在代码行设置断点,观察程序暂停时的变量状态;使用Trace记录变量随时间的变化曲线,适合分析周期任务中的波动和时序问题。若下载后控制器报错,应检查设备描述是否匹配、任务周期是否合理、I/O映射地址是否与实际模块一致。
五、一个可复现的工程创建检查清单
| 检查项 | 操作要点 | 判断依据 |
|---|---|---|
| 设备描述 | Tools → Device Repository → Install,选择WAGO设备描述文件 | 厂商列表出现WAGO,型号可选中 |
| 工程创建 | Standard Project,选择对应控制器和ST语言 | 设备树生成Device与PLC_PRG |
| 任务配置 | MainTask周期T#20ms,PLC_PRG分配至该任务 | 任务树中可见MainTask及调用关系 |
| I/O映射 | 在I/O Mapping中为变量绑定通道地址 | 变量与%I/%Q地址对应正确 |
| 编译下载 | Build → Login → Download | 无编译错误,控制器进入RUN |
| 在线验证 | Watch窗口监视关键变量,必要时设断点 | 变量值随输入变化,逻辑符合预期 |
完成上述步骤后,工程师就具备了一个可运行、可观察、可修改的最小工程框架。后续的Modbus TCP通信、OPC UA服务、MQTT上传和边缘数据处理,都是在这个框架上逐步扩展POU、任务和通信配置来实现的。