都说 Claude Code 是目前最强的编程 AI 软件,但是,一直也没绕过付费的这一关。

而在中文语境下,一款名为 OpenCode 的免费开源 AI 编程工具被很多技术自媒体推荐。本着能免费绝不放过的原则,我也亲自上手尝试了一番。我们这次主要聚焦于它在工业控制领域的应用,看看用它来编写 PLC 程序到底效果如何。

下面,我们就通过一个简单的例子来具体测试它的 PLC 编程能力!
OpenCode 简介
OpenCode 是一款开源的 AI 编程助手(AI Coding Agent),旨在将大语言模型的智能带到你的开发工作流中。它的核心特点是 “模型无关” 和 “本地优先”。
它的核心特点如下表所示:

目前,可以在其官网下载和安装:
https://opencode.ai/

ST 编程实战体验
我们还是以经典的 PID 控制器为例,一步步介绍如何使用 OpenCode 来生成完整的项目。整个过程全部由 AI 驱动完成。

首先,根据官网指引安装 OpenCode。安装完成后,在命令行(cmd)中直接输入 opencode 命令,或者在项目文件夹中打开命令行窗口执行:

输入命令后稍等片刻,即可进入 OpenCode 的交互式首页:

此时,在对话框里输入我们的需求:
“创建一个完整的 PID 控制器项目,请用 ST 语言编写,逻辑清晰,程序架构层次分明”

等待几分钟后,AI 就会完成整个项目的创建,并给出详细的项目报告:

已完成。让我总结一下我创建的完整 PID 控制器项目。
已创建完整的分层架构 PID 控制器 CODESYS 项目。
项目结构
D:/01 Work/Opencode/PIDController.project
├── Application/
│ ├── ST_PIDController (Function Block)
│ │ ├── SetParameters (Method)
│ │ ├── ResetIntegral (Method)
│ │ ├── SetTuning (Method)
│ │ └── SetFeatures (Method)
│ └── MAIN (Program)
架构层次
- 类型层
- ST_PIDParameters: PID 参数结构体
- Kp, Ki, Kd 增益
- 输出限制
- 积分饱和限制
- 微分滤波时间常数
- 抗饱和策略选择
- ST_PIDState: 内部状态结构体
- 积分累加项
- 历史误差和反馈值
- 微分滤波状态
- E_PIDError: 错误代码枚举
- 输入/输出接口层
- 输入:设定值、反馈值、使能、复位、手动模式、周期时间
- 输出:控制输出、误差、三项输出、错误代码、报警
- 状态管理层
- 算法核心层
- 比例项计算
- 积分项计算(带两种抗饱和策略)
- 微分项计算(带滤波避免设定值冲击)
- 输出限制和反馈计算
- 方法层
- SetParameters(): 设置完整参数
- SetTuning(): 仅调整 PID 增益
- SetFeatures(): 配置功能选项
- ResetIntegral(): 复置积分状态
- 应用层 (MAIN 程序)
- 完整使用示例
- 一阶系统仿真模型
- 参数初始化流程
- 监控和调试接口
项目已编译并保存到: D:/01 Work/Opencode/PIDController.project
在这个过程中,我们使用了 CODESYS 的 MCP 工具来实现与 AI 的深度集成(相关介绍可参考:是真的!现在不需要任何PLC编程基础,即可利用CODESYS MCP即可通过与AI对话的方式编写PLC程序了!)。
最后,我们打开 AI 生成的这个实际工程文件:

可以看到,项目打开后仍存在一些编译错误。这说明,即便有强大的 AI 代码生成能力作为辅助,开发者仍需要具备最基本的 ST 语言和 PLC 编程知识,才能有效调试和使用生成的代码。
功能拓展:多代理协作与代码评审
OpenCode 这类 AI 工具的另一个优势是支持多终端同时运行。我们可以开启多个会话,让不同的 AI 代理(Agent)使用不同的模型,发挥各自的特长来协作完成任务。

例如,我们可以让一个新的 AI 代理对上一位代理自动编写的 PLC 代码进行评审和打分。它的目标是评价上一个 Agent 生成的 PID 控制器项目。

最终,这个评审代理给出的综合得分是 78 分(满分 100)。这个分数不算特别高,因为它考虑的维度比我们通常想象的更加全面,涵盖了功能、安全、可维护性等多个方面。

同时,AI 也给出了具体的、分阶段的改进建议:

从这种方式来看,如果把一个大型的 PLC 项目拆分成许多细小的模块或任务,让几十个具备不同专长的 AI Agent 同时开工,各自负责一部分,最后再由一个“总管”Agent 来做统筹和集成,理论上能极大地提升开发效率。
总结与思考
OpenCode 作为一款免费开源的 AI 编程代理,在辅助 PLC 编程,特别是 ST 语言开发方面,展现出了不错的潜力。它能够根据自然语言描述生成结构清晰、注释完整的项目代码,并且支持多代理协作来完成更复杂的任务,如代码评审。
然而,目前的实践也表明,它生成的代码并非“开箱即用”,仍需要具备相关领域知识的工程师进行审查、调试和集成。AI 更像是一位强大的初级助手,可以大幅提升“从零到一”的搭建速度,但项目的最终可靠性、安全性和性能优化,依然离不开人类的专业判断。
你对这种 AI 辅助 PLC 编程的方式怎么看?欢迎在 云栈社区 交流你的看法和实践经验。