浏览示例
把语法放回完整程序里看:边沿、定时器、状态机、缓冲站、阀门控制。
打开示例库 →从外部源到生成块、编译、保存:TiaLink 的 import-batch / import-scl 流程、常见编译错误和检查清单。
一句话:TiaLink 把 SCL 当作“外部源”导入正在打开的 TIA Portal:提交 .scl 文件后生成块、编译并清理外部源,最后显式保存项目。
本页说明 Learn-SCL 示例页上的「导入到我的 TIA 项目」按钮背后发生了什么,以及导入失败时怎么排查。
Siemens TIA Openness(安装 Openness 时创建,改完组要重新登录);TiaLink 提供两个与 SCL 有关的入口:
| 入口 | 用途 |
|---|---|
POST /api/v1/import-scl |
把请求体当作一个 SCL/STL/DB/UDT 外部源创建;可选 generate=true 从源生成块 |
POST /api/v1/import-batch |
一次提交多个文件(SimaticML 或 .scl),按顺序导入,最后统一编译 |
Learn-SCL 的示例页使用 import-batch,每个块一个 .scl 文件 part,并带上:
compile=true
cleanupSources=true
stopOnError=true
device=<你选择的 PLC>含义:
compile=true:所有块导入后编译整个 PLC 软件,返回错误/警告数;cleanupSources=true:生成块后删除临时外部源,避免工程树里堆一堆 Source_*;stopOnError=true:第一个块失败就停止,后面的块标记为 skipped;device:多 PLC 项目里指定目标 CPU;不传则用第一个 PLC。GET /api/v1/health,确认 TiaLink 在运行、已连接项目;GET /api/v1/devices,填充「目标 PLC」下拉框;multipart/form-data,POST 到 /api/v1/import-batch;health.dirty=true),页面出现「保存项目」按钮,调用 POST /api/v1/save。TiaLink 对 SCL 外部源没有 dryRun 预检(
dryRun只对 SimaticML 生效)。所以页面用确认框代替预检,并明确提示“同名块可能被覆盖”。
SimaticML 是 TIA 导出的 XML 格式,适合精确还原块界面和网络;但 SCL 的 SimaticML 是 token 级的 XML,手写/生成都很脆弱。SCL 外部源是 TIA 原生支持的文本入口:源码 → TIA 解析 → 生成块,链路更短,也更容易在页面上展示和复制。
代价是:SCL 外部源导入时,TIA 会按自己的规则解析源码;语法错误会以 TIA 编译错误的形式返回,而不是页面预检。所以示例都在本地 SCL 仿真引擎里先验证过,再在 TIA 里编译验证。
| 错误 | 原因 | 处理 |
|---|---|---|
Unknown type / 类型未知 |
引用了未导入的 UDT/DB/FB | 确认示例的块都按顺序导入;本库示例尽量不用 UDT |
Identifier not defined |
标签/块名拼写不一致 | 检查大小写和引号;TIA 标签名区分大小写 |
Cannot convert |
类型不匹配 | 用 INT_TO_REAL / REAL_TO_INT 等显式转换 |
The block is not consistent |
块内有未解析引用 | 先编译被调用块,或检查接口 |
Instance DB missing |
FB 调用没有背景 DB | 单实例调用要生成实例 DB;本库示例多用 FB 静态变量,不需要外部实例 DB |
Hardware I/O not found |
示例用了 CPU 上不存在的 I/O | 换 CPU 或改地址;这是警告,不一定是错误 |
POST /api/v1/save 或 TIA 里 Ctrl+S)。先用页面上的「仿真验证」:复制 scl_run_scenario 请求到 PLC 云仿真,不需要博途就能逐扫描运行 SCL。等逻辑确认后,再找一台装有 TIA 的 Windows 电脑做导入。
TiaLink 在本地运行,工程数据不经过 Learn-SCL 服务器;页面只把源码 POST 到你自己填写的 TiaLink 地址(默认 http://localhost:8080)。如果 TiaLink 启用了 --api-token,在「TiaLink 设置」里填入同一个值即可。
一个文件用 import-scl;多个块用 import-batch,每个块一个 .scl 文件 part,并设置 compile=true、cleanupSources=true。
TiaLink 的导入只写入当前打开的项目,不会自动持久化;必须调用 POST /api/v1/save(页面上的“保存项目”按钮)才会写回 .ap19 文件。
把语法放回完整程序里看:边沿、定时器、状态机、缓冲站、阀门控制。
打开示例库 →把示例导入你的 TIA Portal 工程,生成块、编译并读回核对。
了解 TiaLink →不装博途,用 MCP 逐扫描运行 SCL,做场景验收。
打开云仿真 →