2. 开发环境搭建
Codesys 作为 IEC 61131-3 标准下的主流工业控制开发平台,其开发环境的搭建质量直接决定了后续项目开发的效率与稳定性。本章将围绕 Codesys 的版本选型、安装流程、许可证配置、仿真器使用以及真实 PLC 连接准备五个核心环节展开,帮助学习者建立一套完整、可复用的环境搭建方法论。需要特别强调的是,环境搭建并非简单的“下一步”点击操作,而是涉及运行时版本匹配、授权机制理解、通信协议选型等关键技术决策的系统工程。
2.1 Codesys 版本选择与安装准备
核心原理:版本矩阵与兼容性
Codesys 目前主流分为 V2.3 和 V3.5 两大系列,其中 V3.5 是当前工业界应用最广泛的版本,支持 IEC 61131-3 全部五种编程语言(LD、FBD、ST、IL、SFC)以及连续功能图(CFC)。V3.5 内部又分为多个 SP(Service Pack)版本,例如 SP17、SP18、SP19 等。版本选择的核心原则是:IDE(集成开发环境)版本必须不低于目标设备(PLC 或软 PLC)的运行时(Runtime)版本。如果 IDE 版本低于运行时版本,则无法完成工程下载和在线调试;反之,高版本 IDE 可以兼容低版本运行时,但部分新功能将不可用。
另一个关键维度是操作系统位数。Codesys V3.5 从 SP17 开始提供 64 位安装包,但 32 位版本仍然被广泛支持。选择依据是:如果开发机内存大于 4GB 且需要处理大型工程(如包含大量可视化界面或复杂运动控制),建议使用 64 位版本;如果开发机配置较低或需要兼容旧版第三方库,则 32 位版本更稳妥。此外,Codesys 还提供独立的网关(Gateway)安装包,用于开发环境与 PLC 之间的通信桥接,安装时建议一并勾选。
操作流程:从下载到安装完成
- 获取安装包:访问 Codesys 官网(www.codesys.com)下载中心,选择对应版本的安装包。注意区分“Full Installation”(完整安装)和“Update”(增量更新)。完整安装包含 IDE、网关、仿真器及常用库文件。
- 关闭杀毒软件:安装过程中,部分杀毒软件会误报 Codesys 的驱动文件或授权组件,建议在安装期间暂时关闭实时防护。
- 执行安装:以管理员身份运行安装程序,选择安装路径(建议默认路径,避免中文目录导致库文件路径解析异常)。在组件选择界面,务必勾选“Codesys Gateway”和“Codesys Control Win V3”(仿真器)。
- 导入设备描述文件:安装完成后,打开 Codesys,通过菜单“工具 → 设备仓库 → 安装”导入 PLC 厂商提供的设备描述文件(.devdesc.xml 或 .package)。这一步是连接真实 PLC 的前提。
- 验证安装:新建一个空白工程,在设备树中添加“Codesys Control Win V3”,若能正常启动仿真,则安装成功。
案例拆解:版本不匹配导致的下载失败
某设备制造商使用第三方厂商的 Codesys 控制器(运行时版本为 V3.5 SP18),但开发人员在自己的电脑上安装了最新的 SP19 版本 IDE。在工程开发阶段,一切正常;但当尝试将程序下载到控制器时,系统提示“设备版本高于工程版本,请升级工程或降低设备版本”。实际上,该提示的含义是 IDE 版本高于运行时版本,但 Codesys 的版本检查机制较为严格,部分 SP 版本之间存在协议差异。解决方法是:在工程属性中将目标运行时版本手动调整为 SP18,或者安装与控制器匹配的 SP18 IDE。此案例说明,版本选择不能盲目追求最新,而应以目标设备的运行时版本为基准。
常见误区与总结
- 误区一:认为 Codesys 版本越高越好。实际上,高版本 IDE 可能引入新的库依赖,导致旧工程无法编译。
- 误区二:忽略网关的安装。网关是 IDE 与 PLC 之间的通信桥梁,缺少网关将无法扫描到任何设备。
- 误区三:在安装路径中使用中文或空格。这可能导致某些第三方库的路径解析失败。
2.2 许可证配置:软授权与硬授权
核心原理:授权机制与绑定方式
Codesys 的许可证分为两类:开发许可证(IDE License)和运行时许可证(Runtime License)。开发许可证用于激活 IDE 的完整功能(如编译优化、可视化编辑器等),而运行时许可证用于在 PLC 或软 PLC 上运行控制程序。对于使用 Codesys 开发自有产品的设备制造商,通常需要购买运行时许可证并嵌入到最终产品中。
运行时许可证的激活方式主要有两种:软授权(Soft Container)和硬授权(USB Dongle)。软授权将许可证文件绑定到设备的硬件指纹(如 CPU 序列号、MAC 地址),适合批量部署;硬授权则通过 USB 加密狗实现,适合单台设备或需要频繁更换主机的场景。此外,Codesys 还提供 30 天试用许可证,用于功能评估和前期开发。
操作流程:激活与备份
- 申请试用许可证:在 Codesys 菜单“帮助 → 许可证管理器”中,选择“获取试用许可证”,输入设备 ID(Device ID)后,系统会生成一个 .lic 文件。
- 导入许可证:在许可证管理器中点击“安装许可证”,选择 .lic 文件完成导入。导入后,许可证状态应显示为“有效”。
- 备份许可证:对于软授权,建议在激活后立即备份许可证文件,并记录设备 ID。当设备硬件更换时,需要重新申请许可证。
- 硬授权配置:插入 USB 加密狗后,在许可证管理器中点击“扫描”,系统会自动识别加密狗中的许可证信息。
实战场景:批量部署中的许可证管理
某自动化设备公司每年出货 500 台基于 Codesys 的控制器。他们采用软授权方式,在产线上建立了一个“许可证烧录工位”。具体流程是:每台控制器在出厂前,先通过专用工具读取设备 ID,然后从许可证管理服务器上生成对应的 .lic 文件,最后通过 U 盘或网络将许可证文件导入控制器。这一流程的关键在于:许可证管理服务器必须与产线网络隔离,防止许可证文件泄露。同时,他们建立了设备 ID 与产品序列号的映射表,当客户返修时,可以快速定位许可证状态。
常见误区与总结
- 误区一:将试用许可证用于生产环境。试用许可证通常有 30 天有效期,到期后控制器将停止运行。
- 误区二:忽略许可证的“剩余次数”限制。部分许可证允许绑定多台设备,但次数有限,超限后将无法继续激活。
- 误区三:在虚拟机中激活软授权。虚拟机的硬件指纹不稳定,可能导致许可证失效。
2.3 仿真器配置与逻辑验证
核心原理:仿真器的工作机制
Codesys Control Win V3 是运行在 Windows 上的软 PLC 运行时,它模拟了真实 PLC 的指令执行环境,支持循环扫描、任务调度、通信服务等功能。仿真器与 IDE 通过 TCP/IP 协议进行通信,默认端口为 1217。仿真器的最大价值在于:在没有硬件的情况下,完成控制逻辑的初步验证和调试,从而缩短开发周期、降低硬件损耗。
仿真器与真实 PLC 在行为上存在细微差异:仿真器的扫描周期通常比真实 PLC 更短(因为 CPU 性能更强),且不涉及 I/O 映射的物理延迟。因此,仿真通过并不代表程序在真实设备上一定运行正常,特别是涉及高速计数、脉冲输出或总线通信时,仍需在真实 PLC 上进行最终验证。
操作流程:启动仿真与在线调试
- 添加仿真设备:在设备树中右键点击“Application”,选择“添加设备”,在设备列表中选择“Codesys Control Win V3”。
- 启动仿真:点击工具栏中的“登录”按钮(或按 F8),Codesys 会自动启动仿真运行时并建立连接。首次启动时,系统会提示选择仿真器的运行模式(正常模式或调试模式)。
- 下载程序:登录成功后,点击“下载”按钮(或按 F11),将编译后的程序下载到仿真器中。
- 运行与监控:点击“运行”按钮(或按 F5),程序开始执行。此时可以在编程视图中实时监控变量值,也可以通过“监视”窗口添加需要观察的变量。
案例拆解:使用仿真器验证 PID 控制逻辑
某工程师需要编写一个温度 PID 控制程序,但现场 PLC 尚未到货。他利用仿真器搭建了完整的测试环境:在仿真器中创建了一个模拟温度对象(通过一个定时递增的变量模拟温度上升),并编写了 PID 控制算法。通过在线监控,他发现 PID 输出存在明显的振荡现象。进一步分析后,他调整了 PID 参数(增大微分时间、减小比例增益),并在仿真器中反复测试,最终获得了满意的控制曲线。这一过程完全在仿真器中完成,没有占用任何硬件资源。该案例表明,仿真器不仅是学习工具,更是算法验证和参数整定的有效平台。
常见误区与总结
- 误区一:认为仿真器可以完全替代真实 PLC 测试。仿真器无法模拟 I/O 接线错误、信号干扰、总线超时等硬件相关问题。
- 误区二:忽略仿真器的扫描周期设置。如果程序依赖定时器或延时逻辑,仿真器的快速扫描可能导致时序与真实设备不一致。
- 误区三:在仿真器中测试通信协议(如 Modbus TCP)。仿真器虽然支持通信,但无法模拟真实从站的响应延迟和异常帧。
2.4 真实 PLC 连接准备与网关配置
核心原理:通信链路与网关角色
Codesys 采用“IDE → 网关 → PLC”的三层通信架构。网关(Gateway)是一个独立的 Windows 服务,负责管理 IDE 与 PLC 之间的通信路由。网关支持多种通信协议,包括 TCP/IP、USB、串口(RS-232/485)等。对于以太网连接的 PLC,网关通过 IP 地址和端口号(默认 1217)与 PLC 建立连接。理解这一架构对于排查通信故障至关重要:如果 IDE 无法连接 PLC,问题可能出在 IDE 与网关之间,也可能出在网关与 PLC 之间。
在连接真实 PLC 之前,需要确认以下信息:PLC 的 IP 地址、子网掩码、网关地址(PLC 的默认网关,不是 Codesys 网关)、PLC 的运行时版本、通信协议(如 Ethernet/IP、Modbus TCP 或 Codesys 原生协议)。此外,还需要确保开发机的 IP 地址与 PLC 在同一子网内,或者通过路由器进行路由。
操作流程:从扫描到在线连接
- 配置网络参数:将开发机的 IP 地址设置为与 PLC 同一网段。例如,PLC 的 IP 为 192.168.1.10,则开发机可设置为 192.168.1.100,子网掩码均为 255.255.255.0。
- 启动网关:在 Windows 服务中确认“Codesys Gateway”服务已启动。如果未启动,可在“服务”管理器中手动启动,并设置为“自动启动”。
- 扫描设备:在 Codesys 中点击“扫描设备”按钮,系统会通过网关广播扫描同一网段内的所有 Codesys 设备。扫描结果会显示设备名称、IP 地址和运行时版本。
- 添加设备:在扫描结果中选择目标 PLC,点击“确定”后,Codesys 会自动创建对应的设备节点。
- 登录与下载:点击“登录”按钮,输入 PLC 的访问凭据(如果有设置),即可建立在线连接。首次连接时,Codesys 可能会提示“设备与工程版本不匹配”,此时需要根据提示调整工程版本或更新设备描述文件。
实战场景:跨网段连接与防火墙配置
某工厂的 PLC 位于 192.168.10.x 网段,而开发机位于 192.168.20.x 网段,中间通过三层交换机路由。工程师在 Codesys 中扫描设备时,无法发现 PLC。排查过程如下:首先,在开发机上使用 ping 命令测试与 PLC 的连通性,发现可以 ping 通,说明网络路由正常。其次,检查 Codesys 网关的日志,发现网关在广播扫描时,广播包被三层交换机隔离(广播包不会跨网段转发)。解决方法是:在 Codesys 中手动添加设备,直接输入 PLC 的 IP 地址,而不是依赖扫描功能。此外,还需要在 Windows 防火墙中放行 Codesys 网关的通信端口(TCP 1217 和 UDP 1217)。这一案例说明,跨网段连接时,手动指定 IP 地址比扫描更可靠。
常见误区与总结
- 误区一:忽略 Windows 防火墙的拦截。Codesys 网关安装后,防火墙可能默认阻止其通信,需要在防火墙设置中手动放行。
- 误区二:使用无线网络连接 PLC。无线网络的延迟和丢包可能导致在线监控时变量刷新缓慢,甚至引发通信超时。
- 误区三:不检查 PLC 的运行时版本。如果 PLC 的运行时版本过低,可能不支持 IDE 中的某些新功能(如可视化、运动控制),导致编译错误。
2.5 环境验证与工程备份策略
核心原理:环境验证的完整性
环境搭建完成后,需要进行一次全面的验证,确保所有组件协同工作。验证内容包括:IDE 能否正常编译、仿真器能否启动、网关能否扫描到设备、PLC 能否建立在线连接、许可证是否有效。建议建立一个“最小验证工程”,包含一个简单的启停逻辑(如一个按钮控制一个输出),并分别在仿真器和真实 PLC 上运行,以确认环境无异常。
操作流程:验证清单
| 验证项 | 操作步骤 | 预期结果 | 异常处理 |
|---|---|---|---|
| IDE 编译 | 新建工程,编写简单 ST 代码,点击“生成” | 编译通过,无错误提示 | 检查库文件引用,确认库版本兼容 |
| 仿真器启动 | 添加 Codesys Control Win V3,点击“登录” | 仿真器启动,登录成功 | 检查网关服务是否运行,重启仿真器 |
| 许可证状态 | 打开许可证管理器,查看状态 | 显示“有效”,剩余天数充足 | 重新导入许可证,或联系厂商 |
| 真实 PLC 连接 | 扫描设备,手动添加 PLC,点击“登录” | 在线连接成功,可监控变量 | 检查 IP 配置、防火墙、运行时版本 |
工程备份策略
环境搭建完成后,建议对以下内容进行备份:工程文件(.project)、库文件(.library)、设备描述文件、许可证文件以及网关配置文件。备份频率建议为:每次完成阶段性开发后,将工程文件打包并附带版本说明。对于团队协作,可以使用 Git 进行版本管理,但需要注意 Codesys 工程文件是二进制格式,Git 的合并功能有限,建议采用“一人一分支”的策略。