20 个工程师写了 10 年的 PLC 程序,我让 Gemini 读了一遍
我以前怀疑 AI 会幻觉。但我早就让它读手册了——那为什么不让它读那堆二十年欠债的面条代码?
一位自动化工程师(Weiming,WZAutomation)在 11 月 7 日写了篇实测:他用 Gemini + MCP 读 TIA Portal 里的 PLC 程序,专挑那种"人能读、但读起来很痛"的写法——REF_TO 间接赋值、DB_ANY、POKE。Gemini 解释了程序、算出了结果,还把执行流程画成流程图写回工作区。
开场那句很诚实:"我以前怀疑 AI 在控制软件开发里的作用,因为我知道它会幻觉。但我早就让它帮我读文档和手册了——那为什么不让它读那堆由 20 个工程师维护了 10 年的面条代码?"
下面按原文翻译他的做法、代码与结论,最后附我们的整理。
一、MCP 是什么,以及它怎么接自动化软件
MCP(Model Context Protocol)是 Anthropic 在 2024 年 11 月提出的开源标准,用来把 AI 应用连接到外部数据源、工具与工作流。2025 年 12 月,Anthropic 把 MCP 捐给了 Agentic AI Foundation——Linux 基金会下的一个基金。
协议是 server-client 结构:MCP server 提供服务(tool call)与工作区数据;MCP client 把 server 能提供的服务以 schema 的形式发给 LLM。
用户对 LLM 写提示之后,LLM 去请求 schema,让 MCP client 执行工具,把本地工作区的数据喂回 LLM;LLM 处理完再产出结果给用户。这个请求—取数—再请求的过程可能来回多次,才拿到最终结果。
MCP server 还可以提供反向的工具:让 LLM 把结果以文本形式写回工作区,或者把文本结果转成图片之类的格式。

原文配图:User → MCP Client →(schema / JSON-RPC)→ 云端的 LLM;MCP Server ↔ Local Workspace。注意这张图的分界线——数据在本地,模型在云上。
二、他写的那个"故意难读"的程序
他写了一个演示用的 FB,专门用了人类程序员常用的几种"臭名昭著"的手法:指针访问 DB 数据、通过引用做间接赋值。小程序里不难懂,但在大程序里,人要顺着追踪会非常痛苦。
FUNCTION_BLOCK "FB_Calculate"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_IN_OUT
Numbers : "numbertype";
END_VAR
VAR
Value1 : Int;
Value2 : Int;
s_AddedValue : Int;
END_VAR
VAR_TEMP
reference : REF_TO Int;
error : Int;
dbany : DB_ANY;
END_VAR
BEGIN
#Value1 := #Numbers.value1;
#Value2 := #Numbers.value2;
#s_AddedValue := #Value1 + #Value2;
// POKE(area := 16#84,
// dbNumber := #Numbers,
// byteOffset := _dint_in_,
// value := _byte_in_);
#reference := REF("DB_Strange".secretValue);
#reference^ := #s_AddedValue;
END_FUNCTION_BLOCK
ORGANIZATION_BLOCK "Main"
TITLE = "Main Program Sweep (Cycle)"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
BEGIN
"DB_Calculate"(Numbers := "DB_Numbers".numbers);
END_ORGANIZATION_BLOCK
他的判断是:这些写法对人很痛,但对 LLM 不算挑战——只要它知道这些编程技巧是怎么工作的。而它知道。
三、他怎么用
跑起工具、接上自己的 Gemini key,然后要求 Gemini 做三件事:算出程序在某个条件下的值、解释程序怎么工作、画一张执行流程图。

原文截图:他用的是 FastMCP 4.1.5,起了一个 LocalWorkspaceServer,stdio 传输;连上后提示 "Gemini can now access your './gemini workspace' folder."
Gemini 的回应是调用 MCP server 提供的工具去理解这个程序,然后用文字回答了问题、解释了它怎么工作。
最后它把程序执行过程画成流程图,放进工作区。
原文:这是 Gemini 生成的流程图。它相当准确,我相信任何懂西门子 PLC 编程的人都能看懂。
四、他下一步想做什么
这个想法试下来很有意思,看起来效果相当不错。
我下一步的计划是:写几个工具,让 Gemini 通过 TIA Openness 或 OPC UA 访问 PLC 的在线数据,看看它在一些在线程序的排障场景里表现如何。
注意这一步的性质变化:从"读工程文件"走到"读现场数据"。
五、我们的整理
这篇的价值不在于"AI 能读 PLC 程序"这个结论,而在于它给了一个可以复现的最小路径:一个故意难读的 FB → 一个 MCP server → 三个可验收的要求(算值、解释、画流程)。任何团队想自证"我们的 AI 辅助到底行不行",都可以照这个做一遍。
三条我认为要补的边界:
- 这是"读",不是"写"。 全程没有任何一步是往工程里写东西的。所以它避开了这类工具最危险的那一半——写入、编译、下装。原文最后那句"下一步接在线数据"才是风险分水岭:读工程是静态的,读现场是会动的。
- 云模型的边界画在图里。 那张架构图把 LLM 画在云端、工作区画在本地。这意味着工程内容会出内网(至少是它读到的那些块)。工业项目默认应该按"不出内网"设计,这一点原文没有展开,但选型时必须问。
- 三个要求里,只有两个是可自动验收的。 "算值"可以对比,"画流程"可以肉眼核,但"解释怎么工作"对不对,仍然要靠懂行的人判断。流程图"相当准确"是作者的判断,不是测量的结果。
对我们做博途工具的人,这篇还确认了一件事:这条链路上最贵的不是模型,是"读得到"。他之所以能跑通,是因为本地有一个能读工作区的 MCP server;换到 TIA Portal 里,等价的那一层是 TIA Openness。模型换来换去差别不大,能不能读到工程里的块、变量、交叉引用,才决定它有没有用。
六、想自己跑一遍?三步
博途这边对应的现成入口是 TiaLink(博途 MCP 网关)。它给 agent 的不是"能读到项目"这一件事,而是两层:
- 第一层:读到原始内容。 块与接口的源码、DB 结构、标签表、硬件组态,按工程里的样子读出来,不做改写、不转述。
- 第二层:把项目建成一张可查询的代码图谱。 它把工程的 SimaticML 导出索引成图——块与接口、调用关系、DB 与标签的读/写、悬空引用——再由
tialink_context_*这组工具交给 agent:搜符号、走调用链、读块摘要、问"改这里会影响谁"。
这两层的差别,就是这篇文章的分水岭。 原文那位作者手上只有第一层:一堆导出的文本。所以 REF_TO 指向哪、DB_ANY 实际落在哪个数据块、这段逻辑还有谁在调用,他得让模型顺着文本自己推——能推对,但每次都从头推。
有了第二层,这个块被谁调用、这个变量在哪儿被写、改它会影响到谁 是一次查询,不是一次通读。工业项目里真正难的不是"看单个块",是"看这个块在这张网里的位置"——这正是代码图谱存在的理由。
三步:
- 导出 + 索引:把工程(或一份已导出的 SimaticML 目录)喂进去,建那张图。索引是只读的,工程文件不上传;不装授权时连接本身就是只读模式。
- 问三个问题:这个块被谁调用?这个变量在哪儿被写?改它会影响到谁?
- 对答案:拿你自己已经知道的三个事实去核——核对上了,再让它读你不敢读的那几个块。
第 2 步那三个问题,正好对应原文的诉求;区别是他读的是文本,TiaLink 读的是工程本体加关系图。
同一条链的下一段(写 SCL → 编译 → 仿真验证)也在 TiaLink 里:除了读工程,它的 MCP 工具还包括建块、写 SCL 与梯形图、编译检查、PLCSIM Advanced 单元仿真与整机仿真、以及写完读回核对。入口同上:TiaLink。
如果你不想自己配 agent、只想把需求说清楚让它把活干完,那是另一个产品:TIA Forge——成品智能体,关键节点由人确认。
来源
- Weiming(WZAutomation),《Play with AI: Gemini MCP Program Reader》,2026-11-07:https://www.wzautomation.com/tech-talk/play_with_ai_gemini_mcp_plc_program_reader/
- 原文配图三张(封面、MCP 架构、终端截图)均转自原文,作者制作
- MCP 的来历与捐赠时间取自原文(Anthropic 2024-11 提出;2025-12 捐给 Linux 基金会下的 Agentic AI Foundation)
同一条链的下一段(读 → 写 SCL → 编译 → 仿真验证)都在 TiaLink 里:它的 MCP 工具除了读工程,还包括建块、写 SCL 与梯形图、编译检查、PLCSIM Advanced 单元仿真与整机仿真、以及写完读回核对。入口同上:TiaLink。
如果你不想自己配 agent、只想把需求说清楚让它把活干完,那是另一个产品:TIA Forge——成品智能体,关键节点由人确认。
相关阅读:AI 改博途程序:TIA Openness MCP 的写保护与边界——这篇讲"读",那篇讲"写",两篇合起来才是一条完整的链路。|AI × 工业 / PLC 完全指南