版本控制
针对 TIA Portal 项目
嵌入在 T-IA Connect 中的完整基于 Git 的版本控制系统。将您的项目导出为可读的文本文件,提交变更,查看 diff,管理分支,并与远程仓库同步 — 直接从 UI 或通过 MCP 工具操作。
TIA Portal 项目是版本控制的噩梦
二进制文件,无 diff,无 merge — 版本控制的最坏情况
不透明的二进制格式
TIA Portal 项目是专有的二进制文件。Git 将它们视为二进制大对象 (blobs) — 没有行对行的 diff,没有有意义的 merge,无法查看两个版本之间实际更改的内容。
复制粘贴式版本管理
工程师通过复制文件夹来管理版本:Project_v1、Project_v2、Project_v2_John_modified。磁盘空间激增,没人知道哪个版本是最新的,且合并是不可能的。
变更不可见
有人上周更改了一个功能块。他们具体改了什么?哪个网络?哪条指令?如果没有文本 diff,如果不并排在 TIA Portal 中打开两个版本,你就无法分辨。
缺乏协作工作流
两名工程师无法满怀信心地同时处理同一个项目。没有分支,没有 merge 能力,没有 pull requests。一个人会覆盖另一个人的工作。
T-IA Connect 中的 VCS 如何工作
导出 → Git → diff/branch/merge,带有自动 XML 标准化
自动项目导出
T-IA Connect 将所有项目元素导出为可读文本文件:块 (OB, FB, FC, DB) 导出为 SimaticML XML,变量表、UDT、监控表导出为 XML,硬件配置导出为 AML。
XML 标准化 (Normalization)
TIA Portal 在导出之间可能会重新排序 XML 属性,导致虚假的 diff。内置的 XmlNormalizer 会确定性地对属性进行排序,因此 diff 仅显示真正的更改。
内置 Git (LibGit2Sharp)
无需安装外部 Git。T-IA Connect 使用 LibGit2Sharp 实现完整的内置 Git。Init, commit, branch, diff, merge, push, pull — 全部内置。
完整分支管理
为变体或实验创建分支。在功能分支上工作,进行测试,然后 merge 回 main。软件团队使用的相同工作流,现在可用于 PLC 项目。
远程同步 (Push/Pull)
添加远程仓库 (GitHub, GitLab, Gitea, Azure DevOps) 并 push/pull 变更。通过标准的 Git 基础设施在团队间共享项目历史。
桌面 UI 侧边栏
桌面应用中的 VCS 侧边栏显示仓库状态、已修改文件,并允许您直接从 UI 进行 commit。日常操作无需命令行。
典型的版本控制工作流
从项目变更到可追溯、可对比的历史记录
1. 初始化仓库
运行 vcs_init 在 .tia-connect/source/ 中创建一个 Git 仓库。每个项目只需执行一次。所有后续导出都会进入此目录。
2. 提交 (Commit) 变更
在 TIA Portal 中做出更改后,运行 vcs_commit。T-IA Connect 会导出整个项目,暂存文件,并使用您的消息创建一个 Git commit。
3. 查看 Diffs 和历史记录
使用 vcs_diff 查看具体更改了什么 — 哪些 XML 元素被添加、修改或删除。使用 vcs_log 浏览带有消息和时间戳的 commit 历史。
4. 分支、合并 (Merge) 与还原 (Restore)
为实验创建分支 (vcs_branch_create),将它们合并回去 (vcs_merge),或从之前的 commit 还原特定文件 (vcs_restore)。
导出内容
每个项目元素都变成一个可读、可对比的文本文件
程序块
OB, FB, FC, DB — 导出为 SimaticML XML。每个块都是 blocks/ 目录下的一个独立文件。完整的网络结构、指令和注释均被保留。
变量表 (Tag Tables)
PLC 变量导出为 tags/ 目录下的结构化 XML。名称、数据类型、地址和注释 — 全部纳入版本控制。
UDTs 和监控表 (Watch Tables)
udts/ 中的用户自定义类型和 watch/ 中的监控表。完整的项目数据类型与程序逻辑一起被追踪。
硬件配置
网络拓扑、CPU 配置和 I/O 模块导出为 hardware/ 中的 AML (AutomationML)。将硬件更改与软件更改一起追踪。
可用的 VCS 工具
可通过 MCP、Copilot、REST API 和桌面 UI 访问
vcs_init / vcs_commit / vcs_status
初始化仓库,使用消息提交当前项目状态,并检查自上次提交以来哪些文件已被修改、添加或删除。
vcs_log / vcs_diff
浏览带有消息和时间戳的 commit 历史。查看 commit 之间或工作状态与上次提交之间的文本 diff。
vcs_branch_* / vcs_merge
创建、列出、检出和删除分支。合并分支。针对 PLC 项目的完整 Git 分支工作流。
vcs_remote_* / vcs_push / vcs_pull
添加、列出和删除远程仓库。将 commit 推送到远程并从团队拉取变更。标准的 Git 远程工作流。
vcs_restore / vcs_config
从之前的 commit 还原文件。配置 Git 用户名和电子邮件。内置 Git 仓库的项目级设置。
常见问题
这与 TIA Portal 内置的项目版本管理有何不同?
TIA Portal 的版本管理是在整个项目级别进行的 — 二进制快照。T-IA Connect 的 VCS 将单个元素导出为文本文件,为您提供行对行的 diff、分支、合并以及查看每个块中具体更改的能力。它们互为补充。
我可以 push 到 GitHub/GitLab 吗?
是的。通过 vcs_remote_add 添加远程仓库,并使用 vcs_push/vcs_pull 进行同步。导出的文本文件可完美适配任何 Git 托管平台。您的 PLC 项目历史记录可以与其他代码库并存。
restore 是否真的会导回 TIA Portal?
vcs_restore 从之前的 commit 中检索文件内容。完整重新导入 TIA Portal 的功能正在开发中(某些块类型的 UTF-16 编码存在问题)。目前,restore 为您提供准确的源内容以便手动重新导入。
我需要在机器上安装 Git 吗?
不需要。T-IA Connect 通过 LibGit2Sharp 嵌入了 Git — 这是一个原生的 .NET Git 实现。无需外部 Git 安装,无需 PATH 配置,无需命令行。一切通过 T-IA Connect 的 UI 和工具运行。