跳到正文
Learn-SCL
SCL 示例库/SCL 指南/SCL 优化块与标准块:访问方式、兼容性与迁移

SCL 优化块与标准块:访问方式、兼容性与迁移

优化块与标准访问的区别:绝对地址、指针、Serialize/Deserialize、数组 DB 和旧程序迁移。

块属性

一句话:新 S7-1200/1500 程序默认用优化块:符号访问、无绝对地址、数组/结构更灵活;需要绝对地址、指针或旧库兼容时才用标准访问。

TIA Portal 的 FB/FC/DB 都有一个“块访问”属性:优化访问或标准访问。新建 S7-1200/1500 程序默认是优化块;旧程序、旧库或需要绝对地址时才用标准块。

怎么区分

在 SCL 源码里,块属性写在块头:

SCL
1FUNCTION_BLOCK "FB_Optimized"
2{ S7_Optimized_Access := 'TRUE' }
3VERSION : 0.1
4   VAR_INPUT
5      Start : Bool;
6   END_VAR
7BEGIN
8   // ...
9END_FUNCTION_BLOCK

标准访问:

SCL
1FUNCTION_BLOCK "FB_Standard"
2{ S7_Optimized_Access := 'FALSE' }
3VERSION : 0.1
4   VAR_INPUT
5      Start : Bool;
6   END_VAR
7BEGIN
8   // ...
9END_FUNCTION_BLOCK

优化块

标准块

和数组/DB 的关系

迁移检查清单

  1. 先备份项目/块,确认哪些外部程序按绝对地址访问。
  2. 检查 DB 的“优化块访问”属性;数组 DB 还要检查 MemoryReserve。
  3. 检查 P#/BLKMOV/PEEK/POKE 等指针访问;改成符号访问或块移动指令。
  4. 检查 Serialize/Deserialize、通信缓冲区、文件接口的字节布局。
  5. 重新编译整个 PLC,不要只编译改动块;旧块可能仍按旧布局访问。
  6. 在测试项目验证 HMI/上位机/通信伙伴的地址映射。

常见坑

下一步

常见问题

优化块能用绝对地址吗?

不能直接按绝对地址访问;优化块按符号访问,需要绝对地址时用标准块或显式转换/指针指令。

Serialize/Deserialize 需要标准块吗?

旧版本要求标准访问;V2.0 以上优化块也支持,但跨 CPU/旧库通信仍建议确认访问属性和字节布局。

下一步

浏览示例

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

打开示例库 →

TiaLink

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

了解 TiaLink →

PLC 云仿真

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

打开云仿真 →