前言
本人目前就读大二,普通本科,所学知识仍停留在纸面阶段。以下内容均为个人实践中的考量与总结,如有不妥之处,请自行辨别取舍。
一、编程范式演进
早期 TIA 编程仍以手工编码为主,可归为传统人工编程模式。此后西门子推出了官方 Agent 工具,能够直接驱动 TIA 完成程序编写乃至设备组态工作。受商业成本与技术迭代的双重驱动,衍生出本文所介绍的 VS Code + Agent + TIA Portal 新型编程方案。
该方案的整体架构由四部分组成:
| 组成部分 | 对应实体 | 在本方案中的作用 |
|---|---|---|
| IDE(集成开发环境) | VS Code | 程序浏览、编辑与插件扩展的主工作区 |
| 开发平台 | TIA Portal | 工程组态、编译与下载到设备 |
| API(应用程序接口) | TIA Openness | 打通 VS Code 与 TIA Portal 的导入 / 导出通道 |
| LLM(大语言模型) | Claude / Codex 等 Agent | 理解需求并直接改写程序 |
其核心价值,是在传统人工编程范式的基础上引入 AI 辅助开发。根据个人项目实测统计,采用该方案开发单个项目的成本仅十几元,相比西门子原生方案大幅降低;同时,该编程范式也进一步向 IT(信息技术)化方向演进。
二、方案优势
以下优势来自 2026 年 9 月 27 日与芮庆忠(芮老师)的交流总结。
2.1 AI 辅助编程
方案的自动化模式支持手动接管:AI 自动改写程序的同时,开发者可随时介入调整。可覆盖的对象包括变量表、DB 块、FB 块与 FC 块,极大程度地简化了编程时间与编程思路。
使用方式也很直接:在右侧面板中与 Codex 或 Claude 交流想法,即可让 AI 直接通过 IDE 修改程序。
与其他 Agent 方案不同的是:
- 其他 Agent:需要先与 TIA 建立 MCP 连接,才能读取数据与程序。这种连接方式的效率受限于 Agent 自身的能力,速度往往不够理想。
- 本方案:由 VS Code 直接与 TIA 程序对接,把程序打包到另一个文件夹中存储,可以像 Java、Python 那样进行文本化编辑。也就是说,能够完全脱离 TIA 进行编程,待程序编写完成后再统一打包回 TIA。
如此一来,AI 的编程能力得以更充分地发挥。
演示
LAD 语言


SCL 语言



DB 块

以上涵盖了本项目编程中涉及的大部分程序(示例程序仅供参考),其中绝大部分由 AI 完成。
2.2 程序可读性与分享
作为学生,笔者并不经常随身携带电脑;而在大学比赛中,团队修改程序需要反复对比队友的程序。以往每到吃饭时,队友都会发来一堆截图请求帮忙修改和指点,经常导致思路混乱——根本分不清对方发的是哪一段程序。
新方案直接解决了这个问题:可以把整个 LAD、SCL、DB 块打包成 HTML 文件,直接通过网页浏览所有程序。




这样可以极大程度地方便程序的传输与阅读。需要说明的是,其本质是本地传播,并不会泄露程序。
笔者正是用这种方式在上课时编写程序,回到宿舍再上传到 PLC,从而节省时间。
2.3 相较直接用 Codex / Claude 的优势
Codex 和 Claude 在修改与编写程序时,并不像 VS Code 那样灵活。举例来说:当需要修改程序时,把提示词交给 Agent,即便 Agent 再强大,目前也还无法把程序写到可以直接上传到设备的状态,仍然需要人为修改;而如果再次把提示词交给 Agent,不仅浪费 Token,还会额外增加时间。可见,始终需要一个 IDE 来修改程序。
既然如此,为什么不直接用 VS Code 搭配插件?而且这种左右对话的形式,也颇有一股「大厂程序员」的味道。

2.4 丰富的插件生态
VS Code 作为一种老牌 IDE,本质上是个文本编辑器,其强大之处就在于多元化、全生态的插件:代码补全插件、文本标准化插件、程序优化插件、上下文关联插件等一应俱全。
TIA 编程本身就是一种高级语言编程,利用这些插件,能够进一步提高效率与编程水准。

2.5 远程操作
几个月前的 Codex,以及一年前的 Openclaw,已经可以直接让手机远程操控 Agent,从而操控本地环境。既然如此,也可以让 Codex 和 Openclaw 远程操控电脑与 PLC,进行编程和组态设置,同样能够提高灵活性与效率。
此外,还可以玩出很多「花活」。
以上为阶段性总结的优点,后续还会继续补充。
三、环境准备
3.1 软硬件条件
| 项目 | 要求 | 说明 |
|---|---|---|
| 一台电脑 | 需能同时运行 TIA Portal 与 VS Code | |
| VS Code | 本方案的主工作区 | |
| AI Agent | Claude 或 Codex,亦可其他同类 | 提供 AI 编程能力 |
| TIA Portal | V16 及以上 | 需支持 TIA Openness |
3.2 VS Code 扩展
| 扩展 | 发布者 | 作用 | 是否必需 |
|---|---|---|---|
| Chinese (Simplified) Language Pack | Microsoft | 简体中文界面 | 可选 |
| Claude Code for VS Code | Anthropic | 在 IDE 内直接对话改程序 | 可选 |
| CodeSnap | adpyke | 代码截图 | 可选 |
| Material Icon Theme | Philipp Kief | 文件图标主题 | 可选 |
| Siemens SCL | Gunders89 | SCL 语法支持 | 必需 |
| TIA Portal Import | mariusz-czynnek | 通过 TIA Openness API 导入 / 导出 PLC 程序 | 必需 |
| TIA Viewer | mariusz-czynnek | LAD / FBD / SCL / GRAPH 图形化视图与 HTML 预览 | 必需 |

四、实施步骤
4.1 安装环境与扩展
按照第三章的清单,先在电脑上安装 TIA Portal、VS Code 与 AI Agent,再在 VS Code 中安装扩展。其中 TIA 相关的三个扩展(Siemens SCL、TIA Portal Import、TIA Viewer)为必需项。
4.2 将当前用户加入 TIA Openness 用户组
TIA Portal Import 通过 TIA Openness API 与 TIA 通信,因此需要先把当前登录用户加入 Siemens TIA Openness 用户组,否则连接会失败。
第一步:获取当前用户名
按 Win + R,输入 cmd 回车,打开命令提示符,执行:
echo %username%echo %username% 会直接输出纯用户名,这就是后面要加入 Siemens TIA Openness 组的名字。
第二步:以管理员身份打开终端
右键开始菜单 → Windows 终端(管理员)/ PowerShell(管理员)。
第三步:把当前登录用户加入 Openness 组
在管理员终端中执行:
net localgroup "Siemens TIA Openness" %USERNAME% /add第四步:验证是否添加成功
在管理员终端中执行:
net localgroup "Siemens TIA Openness"输出中能够看到自己的用户名,即表示添加成功。
4.3 连接 TIA Portal 并导出项目
- 先打开 TIA Portal,完成程序与组态。
- 新建一个文件夹,用于存放导出的 VS Code 程序。
- 用 VS Code 打开这个新建的文件夹。
- 在左侧
TIA Portal Import面板中点击 Connect to TIA Portal。 - 选择你对应的 TIA Portal 版本。
- 连接成功后,面板会读取并显示项目树。
- 点击右上角的小云朵图标,把项目树下载到工作区。


至此即可脱离 TIA Portal,在 VS Code 中直接浏览和编辑程序。
五、VS Code 配置参考
以下是笔者使用的 VS Code 配置,供参考:
{ "tiaImport.lmTools.allowPlcDownload": true, "editor.accessibilitySupport": "off", "files.readonlyInclude": { "": true, "glob": true }, "files.readonlyExclude": { " glob": true }, "workbench.editorAssociations": { "*.copilotmd": "vscode.markdown.preview.editor", "*.s7dcl": "default" }, "workbench.editor.enablePreview": false, "tiaImport.tagTableFormat": "xml", "explorer.confirmDelete": false, "claudeCode.preferredLocation": "panel", "chat.titleBar.openInAgentsWindow.enabled": false, "workbench.browser.showInTitleBar": false, "workbench.startupEditor": "none", "security.workspace.trust.untrustedFiles": "open", "files.autoSave": "afterDelay", "files.autoGuessEncoding": true, "workbench.list.smoothScrolling": true, "editor.cursorSmoothCaretAnimation": "on", "editor.smoothScrolling": true, "editor.cursorBlinking": "smooth", "editor.mouseWheelZoom": true, "editor.formatOnPaste": true, "editor.formatOnType": true, "editor.formatOnSave": true, "editor.wordWrap": "on", "editor.guides.bracketPairs": true, "editor.suggest.snippetsPreventQuickSuggestions": false, "editor.acceptSuggestionOnEnter": "smart", "editor.suggestSelection": "recentlyUsed", "window.dialogStyle": "custom", "debug.showBreakpointsInOverviewRuler": true, "workbench.iconTheme": "material-icon-theme"}