2、开发环境搭建:安装Codesys开发环境、配置运行时、创建第一个PLC项目并连接仿真器

在工业自动化领域,Codesys 作为一款基于 IEC 61131-3 标准的、与硬件厂商无关的软 PLC 开发平台,其生态覆盖了从逻辑控制到运动控制、从可视化到现场总线的完整开发链路。本章的核心目标是帮助你在 30 分钟内完成从零到一的环境搭建,并成功运行第一个仿真程序。我们将按照“安装开发环境 → 配置运行时 → 创建项目 → 连接仿真器”的路径展开,同时深入剖析 Codesys 的工程架构与运行时机制,为后续的实战开发打下坚实基础。

Codesys 开发环境搭建与仿真链路 ① 开发环境 Codesys V3.5 SP19+ Device Manager 驱动 网关服务 (Gateway) 许可证 (3S/SoftPLC) ② 运行时 CODESYS Control Win 软 PLC 内核 任务调度器 I/O 映射层 ③ 项目 Application (应用) POU (程序组织单元) 任务配置 (Task) 可视化 (Visualization) ④ 仿真器 逻辑执行 变量监控 断点调试 在线修改 工程链路与数据流 编写 ST/梯形图 编译生成机器码 下载到运行时 任务周期扫描 I/O 刷新与监控 • 开发环境负责编辑与编译,运行时负责执行与调度,仿真器提供虚拟硬件环境。 • 在线修改 (Online Change) 允许在不停机情况下更新逻辑,是 Codesys 核心优势之一。 • 网关 (Gateway) 是开发环境与运行时之间的通信桥梁,支持 TCP/IP 与 USB 连接。

2.1 核心原理:理解 Codesys 的三层架构

在动手安装之前,必须先理解 Codesys 的软件架构。它并非一个单体应用,而是由三个独立且协同工作的层次构成:开发环境 (IDE)、运行时系统 (Runtime) 和 网关 (Gateway)。这种分层设计是 Codesys 能够实现“一次编写,多处运行”的关键。

  • 开发环境 (CODESYS IDE):基于 Visual Studio Shell 的集成开发环境,负责程序编写、编译、调试和可视化设计。它运行在 Windows 或 Linux 主机上,本身不执行任何 PLC 逻辑。
  • 运行时系统 (CODESYS Control):这是真正的“软 PLC”内核,运行在目标设备上(如工控机、树莓派、嵌入式控制器)。它负责解析编译后的机器码、调度任务、管理 I/O 映射和通信栈。对于纯软件仿真,我们使用 CODESYS Control Win 作为本机运行时。
  • 网关 (CODESYS Gateway):作为中间层,负责在 IDE 和 Runtime 之间建立通信会话。它支持 TCP/IP 协议,使得 IDE 可以远程连接位于不同网段的控制器。在安装 IDE 时,网关通常作为默认组件一并安装。

理解这三者的关系至关重要。当你在 IDE 中点击“登录”时,实际流程是:IDE 通过网关向目标 Runtime 发送连接请求,Runtime 验证许可证后建立会话,随后 IDE 将编译后的应用代码下载到 Runtime 中执行。仿真器本质上就是一个运行在本地 PC 上的 Runtime 实例,它模拟了真实 PLC 的指令执行环境,但不涉及真实 I/O 硬件。

经验提醒:在工业现场,IDE 与 Runtime 通常不在同一台机器上。例如,开发电脑通过以太网连接位于电柜中的工控机。此时,网关的 IP 配置和防火墙规则是排障的首要检查点。建议在项目初期就养成使用“网关扫描”功能来发现网络中可用设备的习惯。

2.2 操作流程:从下载到仿真运行的四步法

下面我们以 Windows 10/11 环境为例,详细拆解环境搭建的完整流程。请务必按照顺序操作,避免因组件缺失导致的诡异错误。

步骤一:获取并安装开发环境

  1. 下载安装包:访问 Codesys 官网(www.codesys.com),进入 Download 区域。选择 CODESYS V3.5 系列的最新 SP 版本(如 SP19 Patch 4)。注意区分 32 位与 64 位版本,现代 PC 建议选择 64 位。
  2. 安装过程:双击安装包,选择“完整安装 (Full Installation)”。这会自动安装 IDE、网关、以及常用的库文件。安装路径建议保持默认,避免中文目录或空格导致的编译异常。
  3. 设备描述文件:如果你使用的是第三方硬件(如 WAGO、Beckhoff 的 PLC),需要额外安装对应的设备描述文件(.device 文件)。这通常在硬件厂商官网下载,通过 IDE 的“工具 → 设备存储库”导入。

步骤二:安装并激活运行时

对于仿真开发,我们需要安装 CODESYS Control Win V3。这个组件在完整安装中可能不会自动包含,需要单独下载。

  1. 下载 Control Win:在官网下载中心搜索 “Control Win V3”,下载与 IDE 版本严格对应的安装包。
  2. 安装与授权:安装后,首次运行需要激活许可证。Codesys 提供 2 小时的免费试用授权,之后需要申请 90 天的开发授权(通过官网注册即可获取,通常即时发放)。
  3. 验证运行:打开 Windows 服务管理器,确认 CODESYS Control Win V3 服务已启动。如果未启动,右键手动启动,并设置为“自动启动”。

步骤三:创建第一个 PLC 项目

  1. 新建项目:打开 Codesys IDE,点击“新建项目”,选择“标准项目”。在弹出的对话框中,设备选择 CODESYS Control Win V3,PLC 语言选择 结构化文本 (ST)。
  2. 编写逻辑:在左侧设备树中双击 PLC_PRG,在编辑区输入以下代码:
    PROGRAM PLC_PRG
    VAR
        iCounter : INT := 0;
        bStart   : BOOL := FALSE;
    END_VAR
    
    IF bStart THEN
        iCounter := iCounter + 1;
        IF iCounter > 100 THEN
            iCounter := 0;
        END_IF
    END_IF
  3. 编译项目:点击菜单栏的“生成”按钮(或按 F11),观察下方“消息”窗口。确保输出 0 个错误,0 个警告。

步骤四:连接仿真器并运行

  1. 登录:点击“登录”按钮(或按 Alt+F8)。IDE 会通过网关自动发现本机的 Control Win 运行时。
  2. 启动:点击“启动”按钮(或按 F5)。此时程序开始运行,你可以通过右键点击变量 iCounter,选择“强制”或“写入”来改变 bStart 的值,观察计数器是否递增。
  3. 监控:在菜单栏选择“调试 → 监视”,可以打开“监视列表”窗口,实时查看所有变量的当前值。
风险提示:如果登录时提示“设备未找到”,请检查以下三项:1. 网关服务是否正在运行(任务管理器 → 服务);2. 项目设备类型是否选择了 Control Win;3. Windows 防火墙是否拦截了 1217 端口(Codesys 默认通信端口)。切勿盲目重装软件。

2.3 案例拆解:仿真环境下的电机启停控制

为了验证环境搭建的正确性,我们设计一个典型的电机启停控制逻辑。该案例将涵盖数字量输入、输出映射以及定时器功能块的使用,这是后续所有实战项目的基础模板。

场景与目标:模拟一个电机控制柜。按下启动按钮(SB1)后,电机接触器(KM1)吸合,运行指示灯亮;按下停止按钮(SB2)后,接触器断开。同时,电机运行超过 10 秒后,自动进入冷却延时状态,5 秒后允许再次启动。

关键输入/输出定义:

变量名 类型 地址映射 说明
Start_Button BOOL %IX0.0 启动按钮(常开)
Stop_Button BOOL %IX0.1 停止按钮(常闭)
Motor_Contactor BOOL %QX0.0 接触器输出
Run_Light BOOL %QX0.1 运行指示灯

实现逻辑(ST 语言):

PROGRAM MotorControl
VAR
    Start_Button   : BOOL;
    Stop_Button    : BOOL;
    Motor_Contactor: BOOL;
    Run_Light      : BOOL;
    tonRunTime     : TON;      // 运行计时
    tonCoolDown    : TON;      // 冷却计时
    bCooling       : BOOL := FALSE;
END_VAR

// 启动优先:按下启动且不在冷却状态
IF Start_Button AND NOT bCooling THEN
    Motor_Contactor := TRUE;
END_IF

// 停止优先:按下停止或运行超时
IF Stop_Button OR tonRunTime.Q THEN
    Motor_Contactor := FALSE;
END_IF

// 运行计时器
tonRunTime(IN := Motor_Contactor, PT := T#10S);
Run_Light := Motor_Contactor;

// 冷却状态检测
IF tonRunTime.Q THEN
    bCooling := TRUE;
    tonCoolDown(IN := TRUE, PT := T#5S);
    IF tonCoolDown.Q THEN
        bCooling := FALSE;
        tonCoolDown(IN := FALSE);
    END_IF
END_IF

调试过程与结果:将上述代码下载到仿真器。在监视列表中强制 Start_Button 为 TRUE,观察 Motor_Contactor 立即变为 TRUE。保持 10 秒后,接触器自动断开,且 bCooling 变为 TRUE。此时即使再次强制启动按钮,接触器也不会吸合。5 秒后,bCooling 复位,系统恢复可启动状态。

复盘与经验:此案例验证了定时器功能块(TON)的时序行为。在实际工程中,停止按钮应使用常闭触点(NC),并在程序中使用 NOT Stop_Button 逻辑,以确保断线时能安全停机。仿真器无法模拟真实的触点抖动,因此在实际调试中需增加 10-20ms 的输入滤波。

2.4 常见误区与总结复盘

在初学者搭建环境的过程中,以下三个误区最为常见,需要特别留意。

  • 误区一:混淆“仿真”与“模拟”。Codesys 的仿真器(Control Win)是真实执行编译后的机器码,其行为与真实 PLC 完全一致,只是没有物理 I/O。而“模拟”通常指在 IDE 中通过强制变量来模拟输入信号。理解这一点有助于正确分析故障:仿真器运行异常,问题出在逻辑代码;真实设备运行异常,问题可能出在硬件接线或 I/O 映射。
  • 误区二:忽略任务配置。在设备树中,“任务配置”决定了程序的执行周期。默认情况下,Codesys 会创建一个优先级为 0 的循环任务,周期为 10ms。如果程序中有多个 POU,但未在任务中调用,这些 POU 将不会执行。很多初学者发现程序不运行,原因就是 POU 没有被添加到任务中。
  • 误区三:在线修改的误操作。Codesys 支持在线修改(Online Change),即在运行状态下修改代码并下载。但频繁的在线修改可能导致内存碎片化,在长时间运行的设备上引发偶发故障。建议在开发阶段频繁使用,但在现场调试阶段,尽量在停机状态下进行完整下载。
总结复盘:环境搭建的核心是理解“开发环境-网关-运行时”的三角关系。安装时务必保证版本匹配(IDE 与 Control Win 必须同版本)。创建项目时,设备选择错误是导致连接失败的首要原因。仿真器是学习 IEC 61131-3 语言和调试逻辑的最佳工具,它零成本、无风险,且能模拟 90% 的运行时行为。建议在开始下一章之前,反复练习创建项目、编写简单逻辑、下载、监控、强制变量、断点调试这六个基础操作,直到不需要思考就能流畅完成为止。