SCL IF — 条件判断
用 IF / ELSIF / ELSE / END_IF 按条件执行代码;SCL 里最常用的分支结构。
本手册是学习参考,不替代 TIA 帮助和现场工艺评审;安全相关结论必须人工确认。
按 TIA 指令分类排列;“待补充”条目先保留索引,不生成空页。参数和完整示例以已发布的详解页为准。当前已发布 17 条。
| 指令 | 名称 | 分类 | 一句话 | 详解 |
|---|---|---|---|---|
IF | IF — 条件判断 | 控制流 | 用 IF / ELSIF / ELSE / END_IF 按条件执行代码;SCL 里最常用的分支结构。 | 详解 → |
CASE | CASE — 多路分支 | 控制流 | 按一个整数或枚举值跳到多个分支;比一长串 ELSIF 清晰,适合状态机。 | 详解 → |
FOR | FOR — 计数循环 | 控制流 | 按计数循环执行一段代码;支持步长和递减循环。 | 待补充 |
WHILE | WHILE — 条件循环 | 控制流 | 条件为真时循环;条件在循环前判断,可能一次都不执行。 | 待补充 |
REPEAT | REPEAT — 直到循环 | 控制流 | 先执行一次,再判断条件;至少执行一次。 | 待补充 |
RETURN | RETURN — 提前返回 | 控制流 | 提前退出当前 FC/FB;FC 可返回一个值。 | 待补充 |
CONTINUE | CONTINUE — 跳过本次循环 | 控制流 | 跳过本次循环剩余语句,直接进入下一次循环。 | 待补充 |
EXIT | EXIT — 退出循环 | 控制流 | 立即退出当前循环,继续执行循环后面的代码。 | 待补充 |
REGION | REGION — 代码分段 | 控制流 | 用 REGION/END_REGION 给代码分段,便于折叠和导航。 | 待补充 |
TON | TON — 接通延时定时器 | 定时器 | 多重实例用 #Timer(IN := ..., PT := ...) 调用;IN 保持到 PT 后 Q=1,IN 断开 Q/ET 立即复位。 | 详解 → |
TOF | TOF — 断开延时定时器 | 定时器 | IN 断开后 Q 继续保持 PT,计时到 0 才复位;用于风机后吹、泵后停。 | 详解 → |
TP | TP — 脉冲定时器 | 定时器 | IN 上升沿产生一个固定宽度 PT 的脉冲;脉冲期间 IN 断开也不影响 Q。 | 详解 → |
TONR | TONR — 保持型接通延时 | 定时器 | 累计 IN 为 1 的时间,IN 断开不清零;R=1 才复位,适合累计运行时间。 | 详解 → |
CTU | CTU — 加计数器 | 计数器 | CU 每个上升沿 CV 加 1,CV≥PV 时 Q=1;R=1 清零。 | 详解 → |
CTD | CTD — 减计数器 | 计数器 | CD 每个上升沿 CV 减 1,CV≤0 时 Q=1;LD=1 装载 PV。 | 详解 → |
CTUD | CTUD — 双向计数器 | 计数器 | CU/CD 分别加/减,QU/QD 两路输出;R 复位、LD 装载 PV。 | 详解 → |
R_TRIG | R_TRIG — 上升沿检测 | 边沿 | 检测 0→1 的上升沿,Q 只在一个扫描周期为 1;需要实例。 | 详解 → |
F_TRIG | F_TRIG — 下降沿检测 | 边沿 | 检测 1→0 的下降沿,Q 只在一个扫描周期为 1;需要实例。 | 详解 → |
EQ | EQ — 等于比较 | 比较 | 等于比较;SCL 里通常直接用 =。 | 待补充 |
NE | NE — 不等于比较 | 比较 | 不等于比较;SCL 里通常直接用 <>。 | 待补充 |
GT | GT — 大于比较 | 比较 | 大于比较;SCL 里通常直接用 >。 | 待补充 |
GE | GE — 大于等于比较 | 比较 | 大于等于比较;SCL 里通常直接用 >=。 | 待补充 |
LT | LT — 小于比较 | 比较 | 小于比较;SCL 里通常直接用 <。 | 待补充 |
LE | LE — 小于等于比较 | 比较 | 小于等于比较;SCL 里通常直接用 <=。 | 待补充 |
ABS | ABS — 绝对值 | 数学 | 取绝对值;整数和浮点数都支持。 | 待补充 |
LIMIT | LIMIT — 限幅 | 数学 | 把值限制在 MIN/MAX 之间;超出范围时输出边界值。 | 待补充 |
MIN | MIN — 最小值 | 数学 | 取两个值中的较小值。 | 待补充 |
MAX | MAX — 最大值 | 数学 | 取两个值中的较大值。 | 待补充 |
SQRT | SQRT — 平方根 | 数学 | 求平方根;输入不能为负。 | 待补充 |
SCALE_X | SCALE_X — 缩放到范围 | 转换 | 把 0.0~1.0 的浮点数映射到 MIN~MAX;模拟量标定常用。 | 详解 → |
NORM_X | NORM_X — 归一化 | 转换 | 把 MIN~MAX 的输入映射到 0.0~1.0;和 SCALE_X 互为逆运算。 | 详解 → |
CONVERT | CONVERT — 类型转换 | 转换 | 在兼容数据类型之间转换;SCL 也常用 INT_TO_REAL 等显式转换。 | 待补充 |
ROUND | ROUND — 四舍五入 | 转换 | 把浮点数四舍五入到整数。 | 待补充 |
TRUNC | TRUNC — 截断取整 | 转换 | 向零截断取整,不四舍五入。 | 待补充 |
CEIL | CEIL — 向上取整 | 转换 | 取不小于输入的最小整数。 | 待补充 |
FLOOR | FLOOR — 向下取整 | 转换 | 取不大于输入的最大整数。 | 待补充 |
MOVE | 赋值与 MOVE — 把值写到变量 | 移动 | SCL 里用 := 赋值;LAD 的 MOVE 在 SCL 中就是赋值,不要生搬硬套。 | 详解 → |
MOVE_BLK | MOVE_BLK — 块移动 | 移动 | 从数组起始元素复制 COUNT 个元素到另一个数组;源和目标元素类型必须一致。 | 详解 → |
FILL_BLK | FILL_BLK — 填充数组 | 移动 | 把同一个值写进目标数组的 COUNT 个元素;常用于批量清零或预置。 | 详解 → |
BLKMOV | BLKMOV — 按字节移动 | 移动 | 按字节移动存储区(Legacy);新代码优先 MOVE_BLK。 | 待补充 |
UMOVE_BLK | UMOVE_BLK — 不可中断块移动 | 移动 | 不可中断的块移动;用于需要一致性的数据。 | 待补充 |
UFILL_BLK | UFILL_BLK — 不可中断块填充 | 移动 | 不可中断的块填充;用于需要一致性的数据。 | 待补充 |
DECO | DECO — 解码 | 字逻辑 | 把位号解码成一位热码。 | 待补充 |
ENCO | ENCO — 编码 | 字逻辑 | 把一位热码编码成位号。 | 待补充 |
MUX | MUX — 多路选择 | 字逻辑 | 按 K 选择其中一个输入。 | 待补充 |
DEMUX | DEMUX — 多路分配 | 字逻辑 | 把输入送到 K 指定的输出。 | 待补充 |
SHL | SHL — 左移 | 移位 | 左移,低位补 0。 | 待补充 |
SHR | SHR — 右移 | 移位 | 右移,高位补 0。 | 待补充 |
ROL | ROL — 循环左移 | 移位 | 循环左移,移出的位从右侧补回。 | 待补充 |
ROR | ROR — 循环右移 | 移位 | 循环右移,移出的位从左侧补回。 | 待补充 |
CONCAT | CONCAT — 拼接字符串 | 字符串 | 把多个 STRING/WSTRING 拼成一个;注意目标长度和参数个数。 | 详解 → |
LEN | LEN — 字符串长度 | 字符串 | 取字符串当前长度;空串返回 0。 | 待补充 |
LEFT | LEFT — 取左字符串 | 字符串 | 取左边 N 个字符。 | 待补充 |
RIGHT | RIGHT — 取右字符串 | 字符串 | 取右边 N 个字符。 | 待补充 |
MID | MID — 取中间字符串 | 字符串 | 从位置 P 取 N 个字符;位置从 1 开始。 | 待补充 |
FIND | FIND — 查找子串 | 字符串 | 查找子串位置;找不到返回 0。 | 待补充 |
INSERT | INSERT — 插入字符串 | 字符串 | 在指定位置插入字符串。 | 待补充 |
DELETE | DELETE — 删除字符串 | 字符串 | 删除指定位置的一段字符。 | 待补充 |
REPLACE | REPLACE — 替换字符串 | 字符串 | 替换指定位置的一段字符。 | 待补充 |
LOWER_BOUND | LOWER_BOUND — 数组下界 | 数组与DB | 读数组下界;配合 VARIANT/ARRAY[*] 使用。 | 待补充 |
UPPER_BOUND | UPPER_BOUND — 数组上界 | 数组与DB | 读数组上界;配合 VARIANT/ARRAY[*] 使用。 | 待补充 |
COUNTOFELEMENTS | CountOfElements — 数组元素个数 | 数组与DB | 读 VARIANT 数组的元素个数。 | 待补充 |
SERIALIZE | Serialize — 序列化 | 数组与DB | 把变量序列化成字节数组。 | 待补充 |
DESERIALIZE | Deserialize — 反序列化 | 数组与DB | 把字节数组反序列化回变量。 | 待补充 |
T_ADD | T_ADD — 时间相加 | 日期时间 | 两个 Time 相加。 | 待补充 |
T_SUB | T_SUB — 时间相减 | 日期时间 | 两个 Time 相减。 | 待补充 |
T_DIFF | T_DIFF — 时间差 | 日期时间 | 两个 Time_Of_Day 的差,结果是 Time。 | 待补充 |
本站按“怎么写、参数是什么、常见坑”重新组织,每个已发布指令配完整 SCL 示例和本地校验;TIA 帮助是官方事实源,适合查完整定义和版本差异。
不是。索引里先列出常用指令,标“详解”的已有独立页面;标“待补充”的保留在索引中,按搜索需求和验证进度逐步补,不生成空页。
可以。每个示例都是完整的 FC/FB 块,页面展示的源码和 TiaLink 导入载荷是同一份;导入后不会自动运行,FB 需要在 OB 里调用并接变量。
内容以 TIA Portal V19 帮助为事实核对,面向 S7-1200/1500。示例只用标准 SCL;低版本或 1200 上遇到类型/指令差异时,以实际编译结果为准。