S7-1500PLC梯形图(LAD)基础指令——字逻辑运算3
SEL:选择 |
说明
“选择”指令根据开关(输入 G)的情况,选择输入 IN0 或 IN1 中的一个,并将其内容复制到输出 OUT。如果输入 G 的信号状态为“0”,则移动输入 IN0 的值。如果输入 G 的信号状态为“1”,则将输入 IN1 的值移动到输出 OUT 中。
所有参数的所有变量都必须具有相同的数据类型。
参数
下表列出了“选择”指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 | ||
S7-1200 | S7-1500 | S7-1200 | S7-1500 | |||
EN | Input | BOOL | BOOL | I、Q、M、D、L 或常量 | I、Q、M、D、L 或常量 | 使能输入 |
ENO | Output | BOOL | BOOL | I、Q、M、D、L | I、Q、M、D、L | 使能输出 |
G | Input | BOOL | BOOL | I、Q、M、D、L 或常量 | I、Q、M、D、L、T、C 或常量 | 开关 |
IN0 | Input | 位字符串、整数、浮点数、定时器、TOD、CHAR、WCHAR、DATE | 位字符串、整数、浮点数、定时器、TOD、LTOD、LDT、CHAR、WCHAR、DATE | I、Q、M、D、L、P 或常量 | I、Q、M、D、L、P 或常量 | 第一个输入值 |
IN1 | Input | 位字符串、整数、浮点数、定时器、TOD、CHAR、WCHAR、DATE | 位字符串、整数、浮点数、定时器、TOD、LTOD、LDT、CHAR、WCHAR、DATE | I、Q、M、D、L、P 或常量 | I、Q、M、D、L、P 或常量 | 第二个输入值 |
OUT | Output | 位字符串、整数、浮点数、定时器、TOD、CHAR、WCHAR、DATE | 位字符串、整数、浮点数、定时器、TOD、LTOD、LDT、CHAR、WCHAR、DATE | I、Q、M、D、L、P | I、Q、M、D、L、P | 结果 |
可以从指令框的“???”下拉列表中选择该指令的数据类型。
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数 | 操作数 | 值 | |
G | TagIn_G | 0 | 1 |
IN0 | TagIn_Value0 | W#16#0000 | W#16#4C |
IN1 | TagIn_Value1 | W#16#FFFF | W#16#5E |
OUT | TagOut_Value | W#16#0000 | W#16#5E |
如果操作数“TagIn”的信号状态为“1”,则执行该指令。根据“TagIn_G”输入的信号状态,选择“TagIn_Value0”或“TagIn_Value1”输入的值并将其移动到“TagOut_Value”输出。如果成功执行了该指令,则使能输出 ENO 的信号状态为“1”,同时置位输出“TagOut”。
MUX:多路复用 |
说明
可以使用指令“多路复用”将选定输入的内容复制到输出 OUT。可以扩展指令框中可选输入的编号。最多可声明 32 个输入。
输入会在该框中自动编号。编号从 IN0 开始,每次新增输入后将连续递增。可以使用参数 K 定义其内容要复制到输出 OUT 中的输入。如果参数 K 的值大于可用输入数,则参数 ELSE 的内容将复制到输出 OUT 中,并且使能输出 ENO 的信号状态会被指定为“0”。
仅当所有输入和输出 OUT 中变量的数据类型都相同时,才能执行“多路复用”指令。参数 K 有所例外,因为只能为其指定整数。
如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”:
- 使能输入 EN 的信号状态为“0”。
- 参数 K 的输入超出了可用输入。这不受是否使用输入 ELSE 的影响。输出 OUT 中的值将会改变。
- 执行该指令期间出错。
参数
下表列出了“多路复用”指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 | |
S7-1200 | S7-1500 | ||||
EN | Input | BOOL | BOOL | I、Q、M、D、L 或常量 | 使能输入 |
ENO | Output | BOOL | BOOL | I、Q、M、D、L | 使能输出 |
K | Input | 整数 | 整数 | I、Q、M、D、L、P 或常量 | 指定要复制哪个输入的数据。
|
IN0 | Input | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT | I、Q、M、D、L、P 或常量 | 第一个输入值 |
IN1 | Input | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT | I、Q、M、D、L、P 或常量 | 第二个输入值 |
INn | Input | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT | I、Q、M、D、L、P 或常量 | 可选的输入值 |
ELSE | Input | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT | I、Q、M、D、L、P 或常量 | 指定 K > n 时要复制的值。 |
OUT | Output | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT | I、Q、M、D、L、P | 要将值复制到的输出。 |
可以从指令框的“???”下拉列表中选择该指令的数据类型。
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数 | 操作数 | 值 |
K | Tag_Number | 1 |
IN0 | Tag_Value_0 | DW#16#00000000 |
IN1 | Tag_Value_1 | DW#16#003E4A7D |
ELSE | Tag_Value_2 | DW#16#FFFF0000 |
OUT | Tag_Result | DW#16#003E4A7D |
如果操作数“Tag_Input”的信号状态为“1”,则执行该指令。根据操作数“Tag_Number”的值,复制输入“Tag_Value_1”的值,并将其分配给输出“Tag_Result”的操作数。如果成功执行该指令,则置位使能输出“ENO”和“Tag_Output”。
DEMUX:多路分用 |
说明
可以使用指令“多路分用”将输入 IN 的内容复制到选定的输出。可以在指令框中扩展选定输出的编号。在此框中自动对输出编号。编号从 OUT0 开始,对于每个新输出,此编号连续递增。可以使用参数 K 定义要将输入 IN 的内容复制到的输出。其它输出则保持不变。如果参数 K 的值大于可用的输出数目,则将输入 IN 的内容复制到参数 ELSE 中,并将使能输出 ENO 的信号状态指定为“0”。
只有当所有输入 IN 与所有输出具有相同数据类型时,才能执行指令“多路分用”。参数 K 有所例外,因为只能为其指定整数。
如果满足下列条件之一,将复位使能输出 ENO:
- 使能输入 EN 的信号状态为“0”。
- 参数 K 的值大于可用输出数。
- 执行该指令期间出错。
参数
下表列出了指令“多路分用”的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 | |
S7-1200 | S7-1500 | ||||
EN | Input | BOOL | BOOL | I、Q、M、D、L 或常量 | 使能输入 |
ENO | Output | BOOL | BOOL | I、Q、M、D、L | 使能输出 |
K | Input | 整数 | 整数 | I、Q、M、D、L、P 或常量 | 指定要将输入值 (IN) 复制到的输出。
|
IN | Input | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT | I、Q、M、D、L、P 或常量 | 输入值 |
OUT0 | Output | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT | I、Q、M、D、L、P | 第一个输出 |
OUT1 | Output | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT | I、Q、M、D、L、P | 第二个输出 |
OUTn | Output | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT | I、Q、M、D、L、P | 可选输出 |
ELSE | Output | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE | 二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT | I、Q、M、D、L、P | 要将输入值(K > n 中的 IN)复制到的输出。 |
可以从指令框的“???”下拉列表中选择该指令的数据类型。
有关可用数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
执行程序段之前“多路分用”指令的输入值
参数 | 操作数 | 值 | |
K | Tag_Number | 1 | 4 |
IN | Tag_Value | DW#16#FFFFFFFF | DW#16#003E4A7D |
执行程序段之后“多路分用”指令的输出值
参数 | 操作数 | 值 | |
OUT0 | Tag_Output_0 | 不变 | 不变 |
OUT1 | Tag_Output_1 | DW#16#FFFFFFFF | 不变 |
ELSE | Tag_Output_2 | 不变 | DW#16#003E4A7D |
如果操作数“Tag_Input”的信号状态为“1”,则执行该指令。根据操作数“Tag_Number”的值,将输入“IN”的值复制到对应的输出。