跳到正文
Learn-SCL
SCL 示例库/SCL 指令手册/SCL 位逻辑与多路选择

SCL 位逻辑与多路选择

西门子 SCL 位逻辑与多路选择:位号解码/编码、多选一和多路分配,含完整 FB 示例、边界场景和常见坑。

字逻辑这一组处理位模式和选择:DECO/ENCO 是位号与一位热码互转,MUX/DEMUX 是多选一/一选多。

DECO/ENCO 的位号从 0 开始;MUX 的 K 从 0 开始选 IN0,DEMUX 的 K 从 0 开始写 OUT0。

这些指令都按位串/整数工作;类型、位宽、越界默认值是最容易出问题的地方。

SCL 位逻辑与多路选择 4

怎么选

需求 指令
位号 → 一位热码 DECO
一位热码 → 位号 ENCO
多选一 MUX
一选多 DEMUX
按位与/或/异或 AND / OR / XOR 运算符

一个报警字例子

SCL
1IF #AlarmWord <> 16#00000000 THEN
2   #FirstAlarm := ENCO(IN := #AlarmWord);
3   #Mask := DECO(IN := #FirstAlarm);
4END_IF;

位号从 0 开始;显示给操作员时可能需要 +1。

常见问题

DECO/ENCO 的位号从 0 还是 1 开始?

从 0 开始。ENCO(8)=3,DECO(3)=8;显示给操作员时可以 +1。

MUX/DEMUX 的 K 从 0 还是 1 开始?

从 0 开始:MUX 的 K=0 选 IN0,DEMUX 的 K=0 写 OUT0。

DEMUX 没选中的输出会清零吗?

不会。只写选中的输出,其他输出保持原值;需要清零就自己复位。

位逻辑指令支持哪些类型?

DECO/ENCO 和移位指令用位串/整数;MUX/DEMUX 支持整数、浮点、字符串、时间等,但输入/输出类型要兼容。

← 返回 SCL 指令手册