3. CODESYS开发环境入门
CODESYS 是 IEC 61131-3 标准的代表性开发平台,也是后续 OPC UA 与 MQTT 集成的工程底座。本节围绕“装得上、建得起、配得通、调得动”四个目标,把安装授权、工程创建、设备树配置、PLC 编程基础与在线调试串成一条可复用的入门路径。掌握这条路径后,后续添加 OPC UA Server、MQTT Client 等对象时,才不会因设备树层级或通信参数错误而反复返工。
一、核心原理:CODESYS 工程的三层结构
CODESYS 工程不是“一个程序文件”,而是由设备树、应用代码和通信配置共同构成的工程模型。设备树描述“运行在什么硬件上”,应用代码描述“执行什么逻辑”,通信配置描述“与谁交换数据”。三者关系可以用下面的结构图表示:
理解这张图后,安装与授权就不再是“点下一步”,而是决定后续能否使用 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 中配置扫描网段。典型配置步骤如下:
- 右键 Device,选择“添加设备”,添加 Ethernet 适配器。
- 在 Ethernet 下添加目标 PLC,设置 IP 与子网掩码。
- 双击 Device,在“通信设置”中扫描网络,确认设备在线。
- 将 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 仿真,目标是让电机在启动按钮按下后运行,停止按钮按下后停止。操作流程如下:
- 新建工程,选择标准工程和 ST 语言。
- 在 Application 下新建 PRG_StartStop,声明 StartBtn、StopBtn、Motor。
- 编译工程,确认无错误。
- 点击“登录”,选择仿真模式,下载程序。
- 点击“运行”,在监视表中添加三个变量。
- 将 StartBtn 写为 TRUE,观察 Motor 变为 TRUE;再将 StopBtn 写为 TRUE,观察 Motor 变为 FALSE。
这个案例虽然简单,但完整覆盖了工程创建、设备树关联、编程、下载和在线调试。后续添加 OPC UA 或 MQTT 时,只需在设备树中增加通信对象,并把 Motor 等变量映射到通信接口即可。
六、常见误区与复盘
- 只装开发环境,不装目标驱动:设备树中找不到目标设备,无法下载。
- 忽略授权状态:程序能编译,但 OPC UA / MQTT 运行时报授权错误。
- 设备树层级混乱:通信对象放错位置,导致扫描不到或数据无法映射。
- 在线调试只监视不验证:变量值正确但未触发实际输出,需结合强制或仿真输入验证。
- 调试后未取消强制:设备重新运行后仍保持强制值,造成逻辑异常。
复盘时建议按“安装 → 授权 → 工程 → 设备树 → 程序 → 在线调试”的顺序逐项检查。只要这条链路每一环都能复现,后续 OPC UA 与 MQTT 集成就有了稳定的起点。