CODESYS AI实践 - 导入导出文件
概述
CODESYS v3 里代码是存在 project 里的——二进制文件,AI打不开也改不了。
到了AI时代,要有种办法能让AI操作里面的文件。
思路很简单:工程导出成平铺的文本 → AI 直接编辑 → 再导回工程,工程本身照常用 IDE 打开。
整体思路

Project 文件 → 导出 st 文本 → 编辑 → 导入回 project 文件,一个来回。
实现方式
CODESYS 自带脚本引擎,写个 Python 脚本遍历工程里每个 POU / GVL / DUT,把声明和实现读出来写成文本,导入时按路径找回对象再写回去;用 CODESYS.exe --noUI --runscript 无界面执行,全程不用开 IDE。
导出:工程 → 文本
tools\codesys\export.bat # 双击:列出工程,输序号就开始
实测输出(节选):
可导出的工程:
1. abc.project -> src\plc\abc
请输入序号: 1
正在导出 abc.project ...(CODESYS 无界面启动较慢,约 1~2 分钟)
---- export_log.txt ----
opened: ...\work\abc.project
objects total: 28
textual objects exported: 10
done
导出完成:...\src\plc\abc
产物在 src/plc/<工程名>/:
如图

| 文件 | 是什么 |
|---|---|
pous/NNN_xxx.txt |
每个 POU / GVL / DUT 一个文本文件 |
pous/_index.txt |
清单:文件名 → 对象路径 |
_full_export.xml |
全量 XML(含图形化语言,可导回恢复工程) |
export_log.txt |
导出日志 |
导入:文本 → 工程
⚠️ 导入写的是 projects/ 里的真实工程,运行前先在 CODESYS IDE 里关掉对应工程——否则 IDE 下次保存会把脚本的修改整个覆盖掉。
tools\codesys\import.bat # 双击:只列出导出过的工程
给某个 POU 补一行注释,跑导入:
GVL.g_pAxis[0] := ADR(VAxis1);
+// AI 修改示例:补一行注释,验证「文本 -> 工程」链路
---- import_log.txt ----
backup: ...\abc.project.20261006_152343.bak
opened: ...\abc.project
objects total: 28
updated: Device/Plc Logic/Application/PRG_Main/AxisInit
files scanned: 11, objects updated: 1, warnings: 0
saved
done
导入完成,详见 ...\import_log.txt
再导出一次,这行注释已经躺在工程里了——闭环跑通。

注意事项
- 导入前关掉 IDE 里的工程——这条最重要,忘了关就等于白改。
- 每次导入会自动备份
.bak,全部写回校验通过才保存;出问题拿备份恢复。 - 只能改已有对象,不能新建 / 删除 POU(找不到的对象会警告跳过)。
- 工程在 IDE 里改过之后,先重新 export 刷一次文本,别拿旧文本去导入。
- 文本导出只覆盖文本语言(ST 等);FBD / LD 图形程序在
_full_export.xml里,它依赖本机设备描述,导出失败也不影响pous/文本。
脚本下载
解压到你工程仓库的文件夹,两个 bat 双击即用;CODESYS 安装路径、目录约定在 ps1 开头和 README 里,可让AI按自己环境改一下。
后续
使用MCP,Codesys V4也是可以做到AI编辑的,后续再展开。

浙公网安备 33010602011771号