news 2026/9/29 8:34:39

基于KIMI与Trae AI自动生成TIA博途PLC程序:从SCL代码到仿真验证的完整实例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于KIMI与Trae AI自动生成TIA博途PLC程序:从SCL代码到仿真验证的完整实例

1. 从工艺需求到可运行PLC:AI辅助编程的真实链路

如果你是一名电气工程师,最近大概率会被各种“AI写PLC程序”的演示刷屏。但真正落到TIA博途里,能一次编译通过、仿真跑通、变量命名规范的案例并不多。我这次完整走了一遍从KIMI梳理控制需求,到Trae AI生成SCL代码,再导入TIA博途做仿真验证的全流程,中间踩了几个坑,也总结出一套可复制的配置骨架。核心检索词先交代清楚:KIMI负责把模糊的工艺描述转成结构化控制需求,Trae AI负责在VS Code里生成符合IEC 61131-3的SCL代码,TIA博途负责导入、编译和仿真。适合谁?适合手头有博途V16以上、会基本梯形图、但想快速搭建程序原型的电气工程师。整套流程下来,一个中等复杂度的功能块从需求到仿真验证,大约40分钟。下面我把每一步的命令、配置、参数和排错都摊开讲。

2. TaoToken前置:统一Key与API通道的配置

在开始之前,先解决一个实际问题:KIMI和Trae AI各自需要配置API Key,如果你还打算在VS Code里用其他AI插件,Key的管理会很乱。我习惯用TaoToken做统一入口,它把模型对话、Coding Plan、API Keys和接入文档都放在一个控制台里,省得来回切换。

2.1 获取API Key与模型对话入口

打开TaoToken官网,注册后进入控制台。左侧菜单里找到“API Keys”,新建一个Key,复制保存。这个Key后面会同时用于KIMI的API调用和Trae AI的模型配置。如果你只是想先验证模型能不能理解SCL语法,可以直接用“模型对话”页面,把一段SCL代码贴进去问它“这段代码在TIA博途里编译会报什么错”,实测下来它对SCL的关键字冲突和数据类型匹配判断得挺准。

2.2 Coding Plan与接入文档

如果你打算长期用AI辅助编码,建议看一下Coding Plan,它按调用量计费,比单次买Token划算。接入文档里有完整的API endpoint和参数说明,地址是https://taotoken.net/api,注意这个地址不加UTM参数,直接用于代码里的base_url。文档里还给了ClaudeCodeAnthropic的接入示例,如果你用Claude Code做代码审查,可以直接参考。

注意:TaoToken的API通道只负责模型调用,不涉及任何网络代理配置。所有请求都是标准的HTTPS,你在代码里填好base_url和Key即可。

3. 可复制配置:VS Code + Trae AI + Siemens SCL环境搭建

这一章是实操核心。你需要装三个东西:VS Code、Trae AI插件、Siemens SCL插件。博途本身不参与代码生成,只负责导入和编译。

3.1 VS Code与插件安装

VS Code官网下载安装,这一步跳过。安装完成后,打开扩展面板,搜索“Trae AI”并安装。接着搜索“Siemens SCL”,这个插件提供SCL语法高亮和基本的语法检查。两个插件都装好后,重启VS Code。

3.2 Trae AI的模型配置

Trae AI默认可能用内置模型,但为了统一走TaoToken通道,你需要在设置里找到“Model Provider”或“API Configuration”。填入:

  • Base URL:https://taotoken.net/api
  • API Key: 你刚才在TaoToken控制台复制的Key
  • Model: 选择KIMI对应的模型标识(具体名称看TaoToken文档里的模型列表)

配置完成后,在VS Code里新建一个.scl文件,输入一段简单的SCL代码,比如:

FUNCTION_BLOCK FB_Test VAR_INPUT Start : BOOL; END_VAR VAR_OUTPUT Run : BOOL; END_VAR BEGIN Run := Start; END_FUNCTION_BLOCK

然后右键选择“Trae AI: Explain Code”,如果它能正确解释这段代码的功能,说明通道通了。

3.3 KIMI侧的需求梳理配置

KIMI我用的是网页版,没有走API,因为需求梳理阶段需要反复对话,网页版更顺手。但如果你想把KIMI也接入统一通道,可以在TaoToken的模型对话里选KIMI模型,效果一样。关键操作是:把工艺流程图或者时序描述整理成文字,发给KIMI,让它输出一张“输入-输出-中间变量”的对照表。比如我这次做的是一个自动分拣系统,KIMI输出的需求表如下:

变量名类型说明
StartBtnBOOL启动按钮
Sensor1BOOL入口光电
Cylinder1BOOL推料气缸
ConveyorBOOL传送带电机
CountINT分拣计数

这张表后面直接作为Trae AI生成SCL代码的输入。

4. SCL代码生成与TIA博途导入:完整实例

4.1 用Trae AI生成FB块

在VS Code里打开Trae AI的对话面板,输入以下提示词(我试过,这个模板生成的成功率最高):

你清楚SCL编程吗?请用SCL语言生成一个FB块,功能是自动分拣控制。 输入:StartBtn(BOOL), Sensor1(BOOL), Sensor2(BOOL) 输出:Cylinder1(BOOL), Conveyor(BOOL), Count(INT) 要求: 1. 使用IEC 61131-3标准语法 2. 变量命名用英文,不要用T1/T2这种定时器符号 3. 包含一个TON定时器,延时2秒 4. 输出完整的FUNCTION_BLOCK结构

Trae AI生成的代码大致如下(我截取了核心部分):

FUNCTION_BLOCK FB_Sorting VAR_INPUT StartBtn : BOOL; Sensor1 : BOOL; Sensor2 : BOOL; END_VAR VAR_OUTPUT Cylinder1 : BOOL; Conveyor : BOOL; Count : INT; END_VAR VAR Timer1 : TON; Step : INT := 0; END_VAR BEGIN IF StartBtn THEN Conveyor := TRUE; END_IF; CASE Step OF 0: IF Sensor1 THEN Timer1(IN := TRUE, PT := T#2S); IF Timer1.Q THEN Cylinder1 := TRUE; Step := 1; END_IF; END_IF; 1: IF Sensor2 THEN Count := Count + 1; Cylinder1 := FALSE; Step := 0; END_IF; END_CASE; END_FUNCTION_BLOCK

生成后,把文件保存为FB_Sorting.scl,编码格式必须选UTF-8 with BOM。这个坑我踩过:如果存成UTF-8无BOM,导入博途后中文注释会变乱码,变量名也可能识别异常。

4.2 导入TIA博途

打开TIA博途,新建项目,添加一个S7-1200或S7-1500的CPU。在“程序块”上右键,选择“从外部源生成块”,选中刚才的.scl文件。博途会自动解析并生成一个FB块。如果代码里有语法错误,这一步会弹窗提示,你需要回到VS Code里让Trae AI修正。

导入成功后,在OB1里调用这个FB块,分配背景数据块。外部变量连接:把StartBtn、Sensor1、Sensor2映射到PLC的输入地址,Cylinder1、Conveyor映射到输出地址。

4.3 仿真验证步骤

博途自带PLCSIM,不需要额外硬件。操作顺序:

  1. 编译整个项目,确保无错误。
  2. 启动仿真,下载程序到PLCSIM。
  3. 在监控表里添加输入输出变量。
  4. 手动置位StartBtn为TRUE,观察Conveyor是否变为TRUE。
  5. 置位Sensor1为TRUE,等待2秒,观察Cylinder1是否变为TRUE。
  6. 置位Sensor2为TRUE,观察Count是否加1,Cylinder1是否复位。

实测下来,只要代码生成时提示词里强调了“使用IEC标准定时器”,仿真就能一次跑通。如果出现定时器不动作,检查TON的背景数据块是否在FB内部声明。

5. 本篇常见错排查

5.1 导入博途后变量名变成乱码

原因:SCL文件编码不是UTF-8 with BOM。解决:在VS Code右下角点击编码,选择“通过编码保存”,选“UTF-8 with BOM”,重新导入。

5.2 生成代码里出现T1、T2等三菱风格定时器

原因:Trae AI没有明确SCL编程上下文,默认套用了其他PLC品牌的模板。解决:在对话开头加一句“你清楚SCL编程吗?请使用西门子TIA博途的IEC定时器TON”,然后再描述需求。

5.3 编译报错“未定义的变量”

原因:FB块内部使用了未在VAR区声明的变量。解决:让Trae AI重新生成,提示词里加“所有中间变量必须在VAR区声明”。

5.4 API调用返回401

原因:TaoToken的Key填错,或者base_url少了/api。解决:检查https://taotoken.net/api是否完整,Key是否复制了空格。

5.5 仿真时输出不动作

原因:OB1里没有调用FB块,或者背景数据块未分配。解决:在OB1里拖入FB块,系统会自动生成背景DB,确认调用后编译下载。

6. 语义一致CTA:按场景选择入口

如果你在排障或接入阶段卡住了,优先看API Keys和接入文档,那里有完整的Key管理和endpoint说明。如果你只是想验证KIMI或Trae AI对SCL语法的理解能力,直接进模型对话,贴一段代码问它编译问题。如果你打算长期用AI辅助编码,甚至跑Agent自动生成多个FB块,Coding Plan更合适,按量计费不浪费。三个入口都在TaoToken控制台左侧菜单,按需点进去就行。

最后说一个实用技巧:每次让Trae AI生成代码前,先把KIMI整理的需求表贴进去,再补一句“请按这个变量表生成SCL”,这样生成的代码变量命名和类型完全对齐,导入博途后基本不需要手动改。我这次从需求到仿真跑通,只改了定时器的时间参数,其他一次通过。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 8:32:02

Qwen3-Max 2025 完整版发布分析:从 API 配置到实测验证的深度评测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华