Skip to content

Releases: bulaofen0036-coder/TIA_Portal_Openness_MCP

v2.2.3 — 笨 AI 健壮性:自愈连接 + 可恢复错误指引 + 操作规则

15 Jun 03:28

Choose a tag to compare

针对"较弱的 AI 驱动本 MCP 时仍会出 bug"的反馈,从源头降低出错与卡死。工具数不变(189),无破坏性改动。

改进

  • 自愈连接/绑定:调用工具前忘了 Connect/Attach 时——若本机已有 TIA 在运行,自动附加并绑定其已打开的工程;已连接但未绑定则自动重绑;本机无 TIA 在运行则不擅自启动、直接给可执行提示。修复了"不按顺序调用→原始空引用崩溃"。
  • 可恢复的错误指引:新增异常翻译器(McpHints),按异常链识别 7 类常见失败(未连接 / 无工程 / 工程已被打开 / 名称路径错→提示查 GetProjectTree·GetSoftwareTree / TIA 版本不匹配 / Openness 用户组 / know-how 保护),统一注入 185 处通用 catch。错误从"只报原始异常"变为"告诉 AI 下一步该做什么"。
  • 首调操作规则Bootstrap 新增 OperatingRules(调用顺序 / 写后必 Compile+Save / 名称要精确 / 读错误照做 / 大任务用 ScaffoldProject)。宿主即便不加载 SKILL.md,AI 第一次调用就拿到正确用法。
  • 更清晰的前置错误:误导性的 "No project is open" 改为可执行指引。

验证

  • V20 / V21 编译 0 错;翻译器离线单测 7/7 通过;对构建产物 stdio smoke test 通过(189 工具、5 条 OperatingRules)。

注:v2.2.2 已被既有的「S7DCL skill 文档」Release 占用,故本代码版本顺延为 2.2.3(已包含该 skill 文档内容)。

交付包 TIA_MCP_Delivery_v2.2.3_20260615.zip 含 V20+V21 双 exe + 完整源码 + skill + 模板,解压即用。

v2.2.2 — S7DCL LAD/SCL 混编授权法(规范 + 已验证样板)

11 Jun 09:06

Choose a tag to compare

v2.2.2 — S7DCL LAD/SCL 混编授权法(规范/文档 + 已验证样板)

纯文档/技能更新,无代码或工具改动(LAD/S7DCL 相关工具早已具备:ImportFromDocuments/ImportBlocksFromDocuments/ExportAsDocuments/ComposePlcLadFcBlockXml 等)。本版把"如何正确用 .s7dcl 授权 LAD 及 LAD/SCL 混编"的实战知识固化进 skill。

更新内容(tools/tiaportal-mcp/skill/SKILL.md §9a

  • 关键纠错:LAD 导入语法 ≠ 导出语法。 导入须用 GT/LT/EQ/NE_Contact{ SrcType }( in1:=, in2:= )P_Trig( #bit )Move( in:=, out1=> );从导出文件抄来的 Gt/Lt/Ne/EqPBoxMove{ Card; DisableENO } 会导入失败。新增"导入 vs 导出"指令对照表。
  • 逐网络 LAD/SCL 判断准则(不强行 LAD):互锁/限位/抱闸/工步/指示→LAD;算术/调用/状态机/通信/复杂条件→SCL。
  • LAD+SCL 混编已验证S7_PreferredLanguage:="LAD" 的块可逐网络插入 { S7_Language:="SCL" } 网络。
  • 纠正导入工作流为 ImportFromDocuments/ImportBlocksFromDocuments + CompileAndDiagnosePlc(含 .s7res/UTF-8 BOM/Override 保号要点)。
  • 标题须 MLC_* 引用或省略(内联中文标题会导入失败)。

新增样板

  • tools/tiaportal-mcp/skill/lad-cookbook/MCPVerify_Mixed_LADSCL.s7dcl(+.s7res) —— 自包含的 LAD+SCL 混编 FB 模板(方向互锁 / 比较+定时 / SCL 算术 / 边沿),全用 import-verified 形式,导入编译 0 错

实证

江夏 5T车 V21:7 个块(02/03/04/09 手动 + A3_2/3/5 机构)按"逐网络判断"重做为 LAD/SCL 混编,全工程编译 0 错;A0_1/A4_1/通信类按判断保留 SCL。

v2.2.1 — v2.2.0 在线工具真机验证 + 因果溯源在线模式消息修复

09 Jun 11:03

Choose a tag to compare

v2.2.1 — v2.2.0 在线工具真机验证 + 因果溯源在线模式消息修复

v2.2.0 新增的 3 个在线只读监控工具已在**真实 PLC(CPU 1211C @ 192.168.0.32)**端到端验证通过,并修复了真机验证中发现的一个消息误导问题。工具数不变(189,全部 [L2] 只读)。

真机验证结果

  • GetPlcRunStateS7 — 正确读到 RUN;该 1211C 的 SZL 诊断缓冲不可用时按设计干净降级(仍给出 RUN/STOP)。
  • SamplePlcLiveValuesS7 — 采样 DB34 心跳/标志位,时间序列与 min/max/avg 正确(心跳随时间递增)。
  • TraceTagCauseLive — 离线追溯 EMG_STOP,正确命中其在 Crane_Communication 网络4 的赋值及两个门控条件,并正确判定门控操作数为 DB 成员(无绝对地址 → 提示用 OPC UA 符号读)。

修复

TraceTagCause / TraceTagCauseLive:当 TIA 与 PLC 在线连接时,Openness 无法导出块(Export ... not supported in online mode)。此前所有块导出失败仍报 No block writes 'X',会误导为"解析后无写入"。

  • 新增 analyzedBlockCount 字段;当无任何块成功导出时返回 INCONCLUSIVE,并在在线模式失败时提示先在 TIA 转至离线再重试(S7 实时读为独立直连,不受转离线影响)。
  • 两个工具的 Description 补充该离线导出前置条件。

包含

  • 双运行时:TiaMcpServer.exe(V21)+ bin-v20(V20),net48。
  • 完整源码、Skill 规格、静态工具表、能力矩阵、PLC/HMI 模板、一键工程蓝图、手册。

免费开源(MIT),无许可证密钥。运行需 Windows + .NET Framework 4.8 + TIA Portal V20/V21,当前用户加入 Siemens TIA Openness 本地组。

v2.1.0 — 在线只读实时读值 (S7 / OPC UA / 监控表 / 离线溯因)

09 Jun 09:02

Choose a tag to compare

TIA Openness 是工程接口,读不到运行中 CPU 的实时值。本版新增一条独立于 Openness 的运行时只读通道,直连 CPU 读实时值。

新增 5 个工具(全部 [L2],纯只读:不写 / 不强制 / 不改运行模式),工具数 181 → 186

  • ReadPlcLiveValuesS7 / ProbeS7CpuIdentity — S7 协议(ISO-on-TCP, 端口 102),绝对地址 DB34.DBD116:DINT / M0.0 / IW76,单次几十~几百 ms。expectModuleContains 身份护栏。S7-1200/1500 需开 PUT/GET 且读非优化 DB。
  • ReadPlcLiveValuesOpcUa — OPC UA(端口 4840,匿名无加密),会话按 endpoint 缓存复用(首次 ~1.7s,之后 ~150-220ms),失效自动重建一次;对锁的等待有界,避免不可达服务器导致后续调用堆积。
  • MonitorWatchTableLiveS7 — 经 Openness 取已有监控表条目地址(只读)+ S7 实时读,按 TIA DEC_signed 显示格式映射有符号类型。
  • TraceTagCause — 离线静态溯因:导出代码块解析 SimaticML(LAD 线圈 S/R/= 与 ST 的 :=),找写入网络 + 门控条件操作数,再用 ReadPlcLiveValuesS7 实时读判断当前由谁驱动。

每个响应都带 safety 自证字段。真机(CPU 1211C @192.168.0.32)S7 / OPC UA / 监控表三法与博途显示逐字节交叉核对一致。双构建 V20/V21 均 0 错,FileVersion 2.1.0,runtime tools/list 实测 186。

中文使用指南见 docs/在线实时读值_使用指南.md

下载

TIA_MCP_Delivery_v2.1.0_20260609.zip:完整源码 + V20/V21 双 exe(含 .exe.config 与 Sharp7 / Workstation.UaClient 依赖)。解压即用。

v2.0.2 — V20 标签表兼容修复 + WritePlcSclSourceFile

08 Jun 13:03

Choose a tag to compare

V20 兼容性修复小版本(修复 GitHub issue #2)。仍为双 V20/V21 binary、MIT。工具数 180 → 181(新增 1 个离线工具)。

修复 — V20 导入标签表报 The engineering version 'V21' ... is not supported

Portal.ImportPlcTagTable 现在统一走 PrepareXmlForImport,把硬编码的 <Engineering version="V21"/> 头改写为当前连接的博途版本(并补 UTF-8 BOM)。此前块 / 类型导入已做此处理,唯独标签表漏过滤,导致 V20 上 PlcBuildAndImport 生成的变量表被 Openness 拒绝。

新增 — WritePlcSclSourceFile(离线,第 181 个工具)

把 SCL 源文本写成本地 .scl 外部源文件(UTF-8 带 BOM,中文注释不乱码)。不连接博途、不导入,只落盘并返回路径与手动导入指引。

作为 V20 用户的稳妥后路:当 FC 逻辑块 XML 因 Cannot create SW.Blocks.CompileUnit... token not supported(V21 SimaticML 令牌)被 V20 拒绝时,改用博途「外部源文件 → 从源生成块」手动导入,绕开严格的 XML 令牌校验。


下载 TIA_MCP_Delivery_v2.0.2_20260608.zip,解压即用(含双 V20/V21 exe + 依赖 + tia.cmd)。

v2.0.1 — 安全(XXE)+隐私小版本

04 Jun 13:14

Choose a tag to compare

安全与隐私小版本,无行为变更、无新工具(仍 180 工具、双 V20/V21 binary、MIT)。

安全 — 修复 XML 外部实体注入(XXE)

导入/解析 XML 工程产物(块 / 画面 / 变量表 / 监控表)的 6 处 XmlDocument.Load(...) 之前统一设置 XmlResolver = null,禁用外部实体与 DTD 解析。修复在 .NET Framework 4.8 上导入第三方恶意 XML 文件时可被 XXE 利用(本地文件读取 / SSRF / billion-laughs DoS)的风险。XDocument.Load/Parse 路径默认 DtdProcessing.Prohibit,本就安全。

隐私 — 移除源码中的开发机个人路径

清除 Program.cs 中 11 处硬编码的作者机器路径,改为中性兜底(Directory.GetCurrentDirectory() / MyDocuments)。仅出现在 --run-* 开发者自测处理器,正常 MCP/CLI 运行不受影响。

下载 TIA_MCP_Delivery_v2.0.1_20260604.zip,解压即用(含双 exe + 依赖 + tia.cmd)。

v2.0.0 — 声明式 tia CLI

03 Jun 09:35

Choose a tag to compare

⚠️ 此历史版本的下载包已下架。 请使用最新版 → https://github.com/bulaofen0036-coder/TIA_Portal_Openness_MCP/releases/latest (v2.0.1,已修复 XXE 并清理)。


声明式 tia 命令行大版本:同一个 exe 既是 MCP 服务,也是命令行。任意 AI 产出一份 YAML/JSON spec,任意工程师跑一条命令即可从零建/改博途工程——无需 MCP 客户端、无需安装。

亮点

  • tia gen <spec>:一条命令从 spec 建完整工程(PLC+HMI+UDT/DB/标签表+SCL/LAD+编译+保存)。
  • tia patch <spec>:增量 upsert 进已有工程。
  • 还有 compile/describe/export/import/prewarm/schema,退出码 0/1/2。
  • YAML + JSON 双解析;--dry-run 离线校验;--json 机器可读。

上手优化(本版)

  • tia 命令入口:根目录 tia.cmd(V21)/tia-v20.cmd(V20),加 PATH 即可随处 tia gen
  • 模板开箱即用:自动解析 spec 里的 __BUNDLE__,现成启停/电机模板无需手改路径。
  • 修复相对工程路径.bat V21 缺失自动回退 V20。

验证

  • live 实机回归全过(真连 TIA V21):tia gen 16/16 步、编译 Success 0 错;patch/compile/describe/export/import/prewarm 全 rc=0。
  • 双 V20/V21 binary、0 编译错误。

仍是完整 MCP 服务(tia verb 之外行为不变),CLI 与 MCP 共享同一引擎。

交付 zip:TIA_MCP_Delivery_v2.0.0_20260603.zip(源码 183 + 双版本 exe/依赖 116,6.07MB)。

v1.0.0 — headless + ScaffoldProject 一键建工程

02 Jun 14:11

Choose a tag to compare

⚠️ 此历史版本的下载包已下架。 请使用最新版 → https://github.com/bulaofen0036-coder/TIA_Portal_Openness_MCP/releases/latest (v2.0.1,已修复 XXE 并清理)。


首个 1.0 大版本,聚焦「快、好用、不出错」。

性能

  • 默认 headless 启动:冷启动约 200–340s → 约 10–28s(全量回归 21/21 通过,含 WinCC Unified HMI)。需 GUI 检查时启动加 --with-ui
  • 常驻实例(可选)python scripts/prewarm_tia.py 保活后,后续会话 Connect 约 0.8–1s。

新工具

  • ScaffoldProject(L1):单个 JSON spec 一次调用生成完整工程(建项目→PLC/HMI 硬件→UDT/DB/标签表→SCL/LAD→编译→HMI 连接/画面/变量→保存)。支持 dryRun=true 离线校验。现成模板:scaffold_spec_start_stop.json(启停)、scaffold_spec_motor.json(电机)。

可靠性

  • HMI 软件路径自动探测(不再写死 HMI_RT_1
  • 连接对挂死/孤儿 TIA 实例加超时跳过
  • 单块导入回读校验(Meta.verified

工具收敛

  • 184 → 180:下线 4 个 Export*ToTemp 变体 + 易混 Export/Import 工具补消歧描述

安装

解压附件 zip,把 MCP 配置 command 指向包内 tools/tiaportal-mcp/src/TiaMcpServer/bin/Release/net48/TiaMcpServer.exe(V20 用 bin-v20/Release/net48/)。需 Windows + TIA Portal V20/V21 + .NET 4.8。

v0.0.40 — 示例库注释/丰富 + 二进制移出 git 跟踪

02 Jun 06:16

Choose a tag to compare

⚠️ 此历史版本的下载包已下架。 请使用最新版 → https://github.com/bulaofen0036-coder/TIA_Portal_Openness_MCP/releases/latest (v2.0.1,已修复 XXE 并清理)。


0.0.40

示例库质量

  • 5 个 scl-examples/*.scl 重写:块头说明 + 每个接口变量(VAR_INPUT/OUTPUT/VAR)逐行中文注释 + 逻辑分区注释;逻辑更丰富(运行/剩余/完成百分比、限幅、方向、偏差%)。
  • FB_TimerCounterDemo 用静态累计器消除"输出未初始化"告警 → 编译 0 错 0 警。
  • UDT_BasicStatus / DB_BasicStatus 每个成员补 commentZhCn 中文注释。

仓库管理

  • 编译产物(exe/DLL/.config)移出 git 跟踪,改由本 Release zip 分发;消除"clean 误删 tracked 二进制 → MCP 启动崩溃"隐患。

交付包

TIA_MCP_Delivery_v0.0.40_20260602.zip 含完整源码 + V21/V20 双 exe(0.0.40)+ 配置。clone 仓库需自行 build 或用本 zip。

v0.0.37 — 错误处理统一 (E)

31 May 07:31

Choose a tag to compare

⚠️ 此历史版本的下载包已下架。 请使用最新版 → https://github.com/bulaofen0036-coder/TIA_Portal_Openness_MCP/releases/latest (v2.0.1,已修复 XXE 并清理)。


错误处理统一(E)

将 6 个错误域(Connect / Hmi / PlcGen / Compile / Import / AddDevice)的失败信号从 return false/null + 可变 LastXxxError 侧信道,统一为 throw PortalException(code, msg),工具层统一 catch (PortalException)McpException(结构化错误码进消息)。

  • 删除 5 个侧信道字段(LastHmiError/LastPlcGenError/LastCompileError/LastImportError/LastAddDeviceError);LastConnectError 故意保留(喂 Bootstrap 诊断 + OpenProject/OpenSession 共用失败分支)。
  • throw PortalException 19→90,catch (PortalException) 1→28;仅改 Portal.cs + McpServer.cs,净减 ~94 行。
  • 批量导入逐项 try/catch 收集 ImportFailure,并修正了块/类型导入原先"一条失败中断整批"的不一致。
  • 重建 V20/V21 双版本 exe(0.0.37,0 错误)。

本版同时包含 0.0.36(A:移除 4 个纯别名工具,削减工具表面)—— 0.0.36 未单独发布。

详见 CHANGELOG.md。zip 为仓库 tracked 内容(含双版本预编译 exe)。