3. CODESYS开发环境入门

CODESYS 是 IEC 61131-3 标准的代表性开发平台,也是后续 OPC UA 与 MQTT 集成的工程底座。本节围绕“装得上、建得起、配得通、调得动”四个目标,把安装授权、工程创建、设备树配置、PLC 编程基础与在线调试串成一条可复用的入门路径。掌握这条路径后,后续添加 OPC UA Server、MQTT Client 等对象时,才不会因设备树层级或通信参数错误而反复返工。

一、核心原理:CODESYS 工程的三层结构

CODESYS 工程不是“一个程序文件”,而是由设备树、应用代码和通信配置共同构成的工程模型。设备树描述“运行在什么硬件上”,应用代码描述“执行什么逻辑”,通信配置描述“与谁交换数据”。三者关系可以用下面的结构图表示:

CODESYS 工程三层结构 设备树 Device Tree Device / PLC 逻辑 Ethernet / 串口 / 网关 应用 Application PRG 主程序 / FB 功能块 GVL 全局变量 通信配置 OPC UA Server MQTT Client 编译 → 登录 → 下载 → 运行 → 在线监视/写入/强制 在线调试贯穿三层:设备树决定通道,应用决定变量,通信决定数据出口 授权决定可用功能 设备树决定通信路径 在线调试验证逻辑

理解这张图后,安装与授权就不再是“点下一步”,而是决定后续能否使用 OPC UA、MQTT 等通信功能的前提。

二、安装与授权:版本、组件与授权方式

CODESYS 安装包分为 Development System、Runtime、Gateway、Target 驱动等部分。开发机通常安装 Development System,并勾选 Gateway 与常用 Target 驱动;若使用树莓派、工控机或软 PLC,则需在目标设备上安装对应 Runtime。安装时建议关闭杀毒软件实时防护,避免驱动注册失败。

授权方面,CODESYS 提供免费模式与授权模式。免费模式可完成基础编程与在线调试,但部分通信功能(如 OPC UA Server、MQTT Client)在运行超过试用时间后需要授权。授权通常通过 CODESYS License Manager 完成,支持软授权和加密狗授权。常见授权状态如下表:

授权状态 表现 处理方式
未授权 编译通过,下载后通信功能报错 在 License Manager 中激活对应授权
试用授权 可运行一段时间,到期后停止 购买正式授权或调整功能范围
授权不匹配 提示缺少 OPC UA / MQTT 授权 核对设备类型与授权版本是否一致
授权正常 通信对象可正常启动 无需处理,继续配置
建议在安装完成后先新建一个空工程,执行一次“编译 + 仿真运行”,确认开发环境本身可用,再安装目标设备驱动和授权。

三、工程创建与设备树配置

新建工程时,CODESYS 会要求选择设备型号和编程语言。若仅做逻辑验证,可选择“CODESYS Control Win V3”或“CODESYS SoftPLC”进行仿真;若连接真实 PLC,则选择对应厂商的设备描述。工程创建后,设备树通常呈现为:Device → PLC Logic → Application → 程序组织单元。

设备树配置的关键是“通信路径”和“扫描设备”。以以太网为例,需要先配置 Ethernet 节点,再添加目标设备并设置 IP 地址。若使用网关,还需在 Gateway 中配置扫描网段。典型配置步骤如下:

  1. 右键 Device,选择“添加设备”,添加 Ethernet 适配器。
  2. 在 Ethernet 下添加目标 PLC,设置 IP 与子网掩码。
  3. 双击 Device,在“通信设置”中扫描网络,确认设备在线。
  4. 将 Application 与目标设备关联,确保下载路径正确。

若后续要集成 OPC UA 与 MQTT,建议在设备树中提前规划通信对象的位置。例如,将 OPC UA Server 放在 Application 下,将 MQTT Client 放在 Ethernet 节点下,便于统一管理。

四、PLC 编程基础与在线调试方法

CODESYS 支持 ST、LD、FBD、SFC 等语言。入门阶段建议先用 ST 编写主程序,结构清晰、便于调试。下面是一个简单的启保停程序:

PROGRAM PRG_StartStop
VAR
    StartBtn : BOOL;
    StopBtn  : BOOL;
    Motor    : BOOL;
END_VAR

IF StartBtn AND NOT StopBtn THEN
    Motor := TRUE;
ELSIF StopBtn THEN
    Motor := FALSE;
END_IF

在线调试的核心动作包括:编译、登录、下载、运行、在线监视、写入变量和强制变量。调试时先确认“登录”成功,再观察变量值是否随输入变化。若变量显示为灰色,通常表示未下载或未运行;若显示为红色,通常表示变量被强制或存在冲突。

在线写入与强制有区别:写入是临时修改,重新运行后可能恢复;强制会持续覆盖程序逻辑,调试结束后务必取消强制,否则会造成设备误动作。

五、案例场景:从空工程到可调试的启保停

假设使用 CODESYS Control Win V3 仿真,目标是让电机在启动按钮按下后运行,停止按钮按下后停止。操作流程如下:

  1. 新建工程,选择标准工程和 ST 语言。
  2. 在 Application 下新建 PRG_StartStop,声明 StartBtn、StopBtn、Motor。
  3. 编译工程,确认无错误。
  4. 点击“登录”,选择仿真模式,下载程序。
  5. 点击“运行”,在监视表中添加三个变量。
  6. 将 StartBtn 写为 TRUE,观察 Motor 变为 TRUE;再将 StopBtn 写为 TRUE,观察 Motor 变为 FALSE。

这个案例虽然简单,但完整覆盖了工程创建、设备树关联、编程、下载和在线调试。后续添加 OPC UA 或 MQTT 时,只需在设备树中增加通信对象,并把 Motor 等变量映射到通信接口即可。

六、常见误区与复盘

  • 只装开发环境,不装目标驱动:设备树中找不到目标设备,无法下载。
  • 忽略授权状态:程序能编译,但 OPC UA / MQTT 运行时报授权错误。
  • 设备树层级混乱:通信对象放错位置,导致扫描不到或数据无法映射。
  • 在线调试只监视不验证:变量值正确但未触发实际输出,需结合强制或仿真输入验证。
  • 调试后未取消强制:设备重新运行后仍保持强制值,造成逻辑异常。

复盘时建议按“安装 → 授权 → 工程 → 设备树 → 程序 → 在线调试”的顺序逐项检查。只要这条链路每一环都能复现,后续 OPC UA 与 MQTT 集成就有了稳定的起点。