3. CODESYS开发环境搭建与第一个采集工程
WAGO PFC200、PFC100 等控制器支持基于 CODESYS V3 的 IEC 61131-3 编程环境。要让控制器真正跑起第一个采集工程,需要依次完成四件事:安装 CODESYS V3 开发环境、安装并配置 WAGO 设备描述(Device Description)、创建工程并添加目标设备、通过扫描或手动指定 IP 建立在线连接并调试。本节按这条主线展开,重点讲清每一步的输入、关键操作和结果判断依据。
一、安装 CODESYS V3 与 WAGO 设备描述
CODESYS V3 是 3S-Smart Software Solutions 提供的开发平台,WAGO 在其基础上提供配套的设备描述包。安装顺序建议为:先装 CODESYS Development System V3(例如 3.5 SP17 及以上版本),再装 WAGO 的 CODESYS 设备描述与库文件包。原因是设备描述以插件形式注册到 CODESYS 的设备仓库中,若先装描述后装主程序,注册信息可能被覆盖。
安装 CODESYS 时,安装向导会询问组件选择。对于 WAGO 采集工程,至少需要勾选:CODESYS Development System 主程序、CODESYS Gateway(网关服务,用于在线连接)、CODESYS Control Win 可选(仅用于本机软 PLC 仿真)。安装完成后,首次启动会提示选择“标准工程”或“空工程”,此时先不建工程,直接进入 Tools → Device Repository 确认设备仓库状态。
WAGO 设备描述通常以 .devdesc.xml 或安装包形式提供,安装后可在设备仓库的“WAGO”分类下看到具体型号,例如 750-8212 PFC200 G2、750-8100 PFC100。判断安装是否成功,最直接的方法是新建工程时在“添加设备”对话框中能否检索到对应型号;若检索不到,说明设备描述未正确注册,需要重新执行安装或手动通过 Device Repository → Install 导入描述文件。
二、创建工程并添加目标设备
启动 CODESYS,选择 File → New Project,在模板中选择 Standard Project,编程语言可选 ST(结构化文本)或 LD(梯形图)。对于数据采集,ST 更适合处理数值运算和字符串拼接,建议选 ST。工程创建后,设备树中默认只有一个 Device 占位节点,需要右键 Add Device,在 WAGO 分类下选择实际控制器型号。
添加设备后,双击设备节点进入 PLC Settings 页,这里有两个关键参数:Bus cycle task(总线循环任务)和 Communication 中的 IP 设置。采集工程通常把采集任务放在一个固定周期任务中,例如 100 ms,因此需要先在 Task Configuration 中新建一个周期任务 Task_Acq,周期设为 T#100ms,再把采集程序 POU 挂到该任务下。这样做的目的是让采集节拍可控,而不是依赖默认的自由运行任务。
三、扫描设备并建立在线连接
设备添加完成后,需要让 CODESYS 与真实控制器建立通信。WAGO 控制器默认通过以太网口提供 CODESYS 网关服务,端口为 1217。操作路径为:双击设备节点 → Communication Settings → Scan Network。扫描会广播查找同一网段内所有可被 CODESYS 识别的设备,结果列表中会显示设备名称、IP 地址和网关状态。
若扫描不到设备,按以下顺序排查:确认 PC 与控制器在同一网段(例如 PC 为 192.168.1.10,控制器为 192.168.1.20,子网掩码 255.255.255.0);确认控制器已上电且网口指示灯正常;确认 PC 防火墙未拦截 CODESYS Gateway 的 UDP 广播;必要时改用 Add Gateway 手动输入控制器 IP。扫描成功后,选中目标设备并点击 Set Active Path,设备节点旁会出现绿色连接标记。
连接建立后,点击 Online → Login 下载程序。首次下载会提示是否创建应用,确认后 CODESYS 将编译工程并写入控制器。下载完成后进入 Online → Run 使控制器进入运行状态。此时可通过 Watch 窗口监视采集变量,例如 iRawValue、rScaledValue,观察数值是否随输入变化。
四、第一个采集工程示例与结果判断
下面给出一个最小可用的模拟量采集示例。假设控制器上挂有一块 750-455 模拟量输入模块,通道 1 接入 4–20 mA 信号,对应工程量 0–100 ℃。在 ST 中定义如下变量并编写采集程序:
VAR
iRawValue : INT; // 模块原始值 0..32767
rCurrent : REAL; // 电流 mA
rTemp : REAL; // 温度 ℃
END_VAR
// 原始值转电流:4mA 对应 0,20mA 对应 32767
rCurrent := 4.0 + (INT_TO_REAL(iRawValue) / 32767.0) * 16.0;
// 电流转温度:4mA 对应 0℃,20mA 对应 100℃
rTemp := (rCurrent - 4.0) / 16.0 * 100.0;
将上述代码放入 PLC_PRG 或新建的 Acq_PRG,并挂到 Task_Acq(100 ms)下。登录运行后,在 Watch 窗口添加 iRawValue、rCurrent、rTemp 三个变量。判断采集是否正常的依据是:iRawValue 应随输入信号在 0–32767 范围内变化;当输入为 4 mA 时 rTemp 应接近 0 ℃,输入为 20 mA 时应接近 100 ℃;若 iRawValue 恒为 0 或 32767,需检查模块通道配置(如 750-455 的通道模式是否设为 4–20 mA)以及接线极性。
rTemp 是否稳定在 50 ℃ 附近。若偏差较大,可检查模块的分辨率设置和量程标定参数,而不是直接修改程序中的换算系数。