跳到正文
Learn-SCL
SCL 示例库/SCL 指南/不装博途,用 PLC 云仿真验证 SCL

不装博途,用 PLC 云仿真验证 SCL

不装博途也能验证 SCL:配置 sim MCP,用 scl_validate / scl_run_scenario 逐扫描跑场景,返回 PASS/FAIL。

云仿真

一句话:PLC 云仿真通过 MCP 接收 SCL 源码,用 scl_validate 校验、scl_simulate 逐扫描执行、scl_run_scenario 做场景验收,不需要安装博途。

PLC 云仿真是一个 MCP 服务:AI 助手(Claude Code、Cursor、VS Code 等)把 SCL 源码提交给它,它在云端逐扫描执行,返回变量值、诊断和 PASS/FAIL 场景报告。新用户有 100 次免费调用。

它能做什么

工具 作用
scl_validate 解析 + 结构校验 SCL 源码,返回 parse/validation issue
scl_simulate 种子变量 → 分步写入 → 跑 N 个扫描周期 → 回读变量/完整状态 + 诊断
scl_run_scenario 声明式场景:cases / sweep / fuzz / always,返回 PASS/FAIL 报告

它不是 TIA 编译器:不检查硬件、不生成块、不替代 TIA 编译。它验证的是 SCL 的语法、结构和逐扫描行为。

配置 MCP

在支持 MCP 的客户端里加入:

{
  "mcpServers": {
    "sim-cloud": {
      "url": "https://tia.hubwiz.com/sim/mcp",
      "headers": { "Authorization": "Bearer <你的 API Key>" }
    }
  }
}

API Key 在 PLC 云仿真 微信扫码登录后获得。每次被接受的 tools/call 扣 1 次额度;initialize / tools/list / resources/read 免费。

最小示例:边沿检测

下面的 JSON 是一个回归基线,用来展示 MCP 调用形状;实际使用时推荐让 Agent 自己写 scenario,不必手抄。

{
  "sources": [
    {
      "name": "FB_EdgeDetection.scl",
      "source": "FUNCTION_BLOCK \"FB_EdgeDetection\"\n...\nEND_FUNCTION_BLOCK"
    }
  ],
  "scenario": {
    "docs": ["FB_EdgeDetection.scl"],
    "block": "FB_EdgeDetection",
    "tickMs": 10,
    "scenarios": [
      {
        "name": "上升沿只出现一个扫描周期",
        "steps": [
          { "set": { "Signal": false }, "expect": { "Rising": false } },
          { "set": { "Signal": true }, "expect": { "Rising": true } },
          { "set": { "Signal": true }, "expect": { "Rising": false } }
        ]
      }
    ]
  }
}

调用 scl_run_scenario,返回类似:

PASS  上升沿只出现一个扫描周期 (3 step(s), 3 scan(s))
RESULT: ALL PASS (3 scan(s))

Learn-SCL 每个可仿真示例的「仿真验证」区块都提供两样东西:

不要一开始就手写 scenario:把设计场景的工作交给 Agent,你只需要检查它给出的输入、期望、实际和 PASS/FAIL 是否合理。

场景文件语法

键 必填 含义
docs 是 SCL 文件路径;在 MCP 请求里可以随便写,因为 sources 已经内联
block 是 要扫描的目标块名
tickMs 否 注入的扫描周期,默认 10ms
seed 否 每个新状态都先写入的变量
scenarios 三选一 脚本化用例:每个 case 全新状态
sweep 三选一 笛卡尔积组合
fuzz 三选一 种子随机测试
always 否 每次扫描后都检查的不变式

步骤键是 ticks(不是 scans),set 是增量写入,expect 是精确断言。

标签寻址

常见坑

额度与计费

和 TiaLink 的分工

场景 用哪个
只验证 SCL 逻辑/状态机/定时器 云仿真 scl_*
需要生成 TIA 块、编译、下载到 PLCSIM TiaLink
需要真实 CPU/硬件反馈 TIA + PLCSIM/真实 CPU
需要读回工程、导出、比较 TiaLink

两者可以组合:先在云仿真里把场景跑通,再用 TiaLink 导入 TIA 编译,最后在 PLCSIM 里跑同样的场景。

常见问题

云仿真能替代 TIA 编译吗?

不能。云仿真验证 SCL 的语法、结构和逐扫描行为,不检查硬件、不生成块、不替代 TIA Portal 编译;导入工程前仍要在 TIA 里编译一次。

一个 source 可以放多个块吗?

本地 SCL 仿真引擎的 parse 只解析一个块;多个块请拆成多个 sources,每个 source 一个 FB/FC/OB/DB。

下一步

浏览示例

把语法放回完整程序里看:边沿、定时器、状态机、缓冲站、阀门控制。

打开示例库 →

TiaLink

把示例导入你的 TIA Portal 工程,生成块、编译并读回核对。

了解 TiaLink →

PLC 云仿真

不装博途,用 MCP 逐扫描运行 SCL,做场景验收。

打开云仿真 →