毫无疑问,对于电气工程师来说,最想AI帮咱做的事情就是PLC编程,我们之前的投票:
具体的数据,大家可以投票后查看,按照目前的有效数据:

所以我尝试训练AI来做PLC编程的助手,界面主体和目前的大模型Deepseek、Kimi相似。
01

Plan
这里随便哪家AI对话都行,我以Kimi 2.5为例,创建一个详细的计划:

给出了整整8个章节的计划:

还是翻译成中文如下:

总体的思维导图:

当然,可以提供免费的方案,从零开始构建的指南:
# AI PLC代码生成器:从零开始构建完整指南
**版本**: 2.0
**更新日期**: 2026-02
**适用平台**: Ubuntu 22.04 LTS / Windows 11 WSL2
**硬件需求**: 8GB+ RAM (16GB推荐), NVIDIA GPU可选
---
## 目录
1. [项目概述](#1-项目概述)
2. [快速开始](#2-快速开始)
3. [环境搭建](#3-环境搭建)
4. [数据集准备](#4-数据集准备)
5. [模型微调](#5-模型微调)
6. [代码生成与验证](#6-代码生成与验证)
7. [Web界面开发](#7-web界面开发)
8. [高级功能](#8-高级功能)
9. [部署与运维](#9-部署与运维)
10. [故障排查](#10-故障排查)
11. [附录](#11-附录)
---
## 1. 项目概述
### 1.1 系统架构
```
┌─────────────────────────────────────────────────────────────┐
│ 用户交互层 (Web/CLI) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 自然语言输入 │ │ 代码展示 │ │ 下载/部署 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ AI生成层 (本地Ollama) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Qwen2.5-Coder-7B + LoRA微调适配器 (PLC专用) │ │
│ │ - 温度: 0.1 (确定性输出) │ │
│ │ - 上下文: 4096 tokens │ │
│ │ - 系统提示: IEC 61131-3专家约束 │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 验证与优化层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ MatIEC编译 │ │ 语法检查 │ │ 自动修复 │ │
│ │ (IEC标准) │ │ 错误定位 │ │ 重试机制 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 输出与集成层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Beremiz项目 │ │ OpenPLC运行 │ │ 物理PLC下载 │ │
│ │ (.plc文件) │ │ 时验证 │ │ (可选) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
### 1.2 技术栈
| 层级 | 技术选型 | 版本 | 用途 |
|------|---------|------|------|
| **LLM推理** | Ollama | 0.5.x+ | 本地模型服务 |
| **基础模型** | Qwen2.5-Coder | 7B/14B | 代码生成(推荐) |
| **微调框架** | Unsloth | 2024.12+ | 高效LoRA微调 |
| **编译验证** | MatIEC | 最新源码 | IEC 61131-3语法检查 |
| **IDE集成** | Beremiz | 1.0+ | 可视化编程环境 |
| **运行时** | OpenPLC | 3.0+ | 仿真测试 |
| **Web服务** | FastAPI | 0.115+ | 异步API服务 |
| **前端UI** | Streamlit | 1.40+ | 用户界面 |
| **向量库** | ChromaDB | 0.5.x+ | RAG知识检索 |
| **部署** | Docker Compose | 2.30+ | 容器编排 |
### 1.3 项目文件结构
```bash
~/ai-plc/
├── data/ # 数据集目录
│ ├── raw/ # 原始数据
│ ├── processed/ # 处理后数据
│ ├── plc_dataset.jsonl # 训练数据
│ ├── test_set.jsonl #测试数据
│ └── chroma_db/ # 向量数据库
├── models/ # 模型目录
│ ├── base/ # 基础模型
│ ├── adapters/ # LoRA适配器
│ ├── gguf/ # 量化导出模型
│ └── Modelfile # Ollama定义文件
├── tools/ # 第三方工具
│ ├── matiec/ # IEC编译器源码
│ └── beremiz/ # IDE源码
├── src/ # 源代码
│ ├── data_generation/ # 数据生成脚本
│ ├── training/ # 训练脚本
│ ├── inference/ # 推理管道
│ ├── validation/ # 验证工具
│ ├── web/ # Web应用
│ └── utils/ # 通用工具
├── output/ # 生成结果
│ ├── generated/ # 生成的PLC代码
│ ├── compiled/ # 编译后的C代码
│ └── reports/ # 测试报告
├── configs/ # 配置文件
├── scripts/ # 运维脚本
├── tests/ # 单元测试
├── docs/ # 文档
├── .env.example # 环境变量示例
├── requirements.txt # Python依赖
├── Dockerfile # 容器构建
├── docker-compose.yml # 容器编排
├── Makefile # 常用命令
└── README.md # 项目说明
```02

执行
我这里用Google的Gemini 3.1实施的效果,目前还在初步测试,效果图如下:

截止发稿,实现的功能(目前已经内测了近半个月时间):
1.可以设置自己的API key进行对话生成PLC code;

2.中英文切换:

3.st代码注释和高亮

03

待改进
总结一句话,就是做一个真正为电气工程师创造价值的AI PLC编程助手。
目前还需要自行测试,当然重要的是微调和我个人及开源的知识库整理融合,真正地实践产生价值。安全是我考虑得比较多的,所以开放出来还需要时间来推进。
最后,肯定还得拉出来溜溜!那么前期阶段,还请各位大佬朋友留言建议!到底哪一点对于您来说是最看重的?
▊ 阅读更多(戳下方图片)



请长按下方二维码关注Hello工控
