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/<工程名>/:

如图

image-20261006154706048

文件 是什么
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

再导出一次,这行注释已经躺在工程里了——闭环跑通。

导入流程:备份、比对、写回、保存

注意事项

  1. 导入前关掉 IDE 里的工程——这条最重要,忘了关就等于白改。
  2. 每次导入会自动备份 .bak,全部写回校验通过才保存;出问题拿备份恢复。
  3. 只能改已有对象,不能新建 / 删除 POU(找不到的对象会警告跳过)。
  4. 工程在 IDE 里改过之后,先重新 export 刷一次文本,别拿旧文本去导入。
  5. 文本导出只覆盖文本语言(ST 等);FBD / LD 图形程序在 _full_export.xml 里,它依赖本机设备描述,导出失败也不影响 pous/ 文本。

脚本下载

附件 codesys-io.zip

解压到你工程仓库的文件夹,两个 bat 双击即用;CODESYS 安装路径、目录约定在 ps1 开头和 README 里,可让AI按自己环境改一下。

后续

使用MCP,Codesys V4也是可以做到AI编辑的,后续再展开。

posted @ 2026-10-06 16:07  周永恒  阅读(19)  评论(0)    收藏  举报