主题
4.2 工程管理与文件格式
工程是一个目录,不是单个文件
新版上位机的工程是一个普通文件夹,里面全是纯文本:
为什么这么设计:工程可以用 VSCode / AI 工具直接编辑
.lua 是纯文本,梯形图存成 .json(内容就是指令表),main.json 里还专门写了一段说明文字介绍目录结构和格式。
这带来几个实际好处:
- 可以用 VSCode / Cursor / Claude Code 直接打开工程目录批量修改、批量查找
- 可以直接纳入 Git 做版本管理,diff 可读,多人协作不易冲突
- 出现问题时可用文本编辑器修复,不会因私有二进制格式无法打开
文件菜单
| 菜单项 | 说明 |
|---|---|
| 新建工程 | 输入工程名(默认「新工程」)。有未保存修改会先提示 |
| 打开工程... | 选择一个目录。目录中需存在 main.json 才会被识别 |
| 保存工程 | 写入 main.json 和所有 lua / 梯形图文件 |
| 另存为... | 强制重新选目录。目标目录已有工程会二次确认覆盖 |
| 关闭工程 | 有未保存修改会先提示 |
| 打印梯形图... | 打印全部梯形图(可输出 PDF) |
| 打印 Lua 程序... | 需要先切到 Lua 标签页,否则会提示 |
| 导出梯形图 SVG | 矢量图,放大不模糊,适合放进文档 |
| 导出梯形图 PNG | 位图 |
| 导出 Lua 文件 | 同样需要活动标签是 Lua |
| 退出 | 有未保存修改会先提示 |
打开工程时会实扫目录
打开工程时不仅读取 main.json 中的清单,还会扫描 lua/ 和 lad/ 目录。因此在 VSCode 中手工添加的 .lua 文件,重新打开工程即可看到。
保存时会确认是否删除「孤儿文件」
如果目录中存在工程清单之外的多余文件,保存时会列出这些文件,由使用者一次性决定删除或保留。既不会自动删除文件,也便于保持目录整洁。
不支持导入的两类文件
不能导入老版上位机工程,也不能导入 GX Works2 的 .gxw
- 老版工程:格式完全不同,没有转换器
- GX Works2
.gxw:目前不支持导入
需将设备中已有的程序导入新版编辑器时,应使用从设备上载(设备工具栏的 ⬆ 按钮):把设备中运行的程序读回,再正常编辑保存。
梯形图文件长什么样
lad/*.json 里存的是指令表(IL),大致结构:
json
{
"$schema": "linpan-plc-ladder-v1",
"name": "MAIN",
"Block": [
{
"type": "main",
"name": "MAIN",
"networks": [
{ "id": 1, "name": "启动自锁", "steps": ["LD X0", "OR Y0", "ANI X1", "OUT Y0"] }
]
}
]
}常用指令前缀:LD / LDI / AND / ANI / OR / ORI / OUT / SET / RST / END,地址前缀 X / Y / M / S / T / C / D。
旧的 .lad 扩展名
早期版本梯形图使用 .lad 扩展名,现已统一改为 .json(便于 AI 工具和编辑器识别)。打开旧工程时 .lad 仍可正常读入,保存时会自动迁移为 .json 并删除同名旧文件。
参数三件套
工程树「参数」下面有三个编辑器,保存在 main.json 里:
- PLC 参数:软元件点数、保持区范围等
- 网络参数:通讯相关设置
- 系统参数:系统级选项
这些参数需通过设备工具栏单独写入设备才生效,仅保存工程只是存放在电脑上。