SCL DECO — 解码
把位号解码成一位热码。
字逻辑这一组处理位模式和选择:DECO/ENCO 是位号与一位热码互转,MUX/DEMUX 是多选一/一选多。
DECO/ENCO 的位号从 0 开始;MUX 的 K 从 0 开始选 IN0,DEMUX 的 K 从 0 开始写 OUT0。
这些指令都按位串/整数工作;类型、位宽、越界默认值是最容易出问题的地方。
| 需求 | 指令 |
|---|---|
| 位号 → 一位热码 | DECO |
| 一位热码 → 位号 | ENCO |
| 多选一 | MUX |
| 一选多 | DEMUX |
| 按位与/或/异或 | AND / OR / XOR 运算符 |
1IF #AlarmWord <> 16#00000000 THEN
2 #FirstAlarm := ENCO(IN := #AlarmWord);
3 #Mask := DECO(IN := #FirstAlarm);
4END_IF;
位号从 0 开始;显示给操作员时可能需要 +1。
从 0 开始。ENCO(8)=3,DECO(3)=8;显示给操作员时可以 +1。
从 0 开始:MUX 的 K=0 选 IN0,DEMUX 的 K=0 写 OUT0。
不会。只写选中的输出,其他输出保持原值;需要清零就自己复位。
DECO/ENCO 和移位指令用位串/整数;MUX/DEMUX 支持整数、浮点、字符串、时间等,但输入/输出类型要兼容。