LIMIT 上下限
功能:限制值输出。判断输入数据是否在最小值和最大值之间,若输入数据在两者之间,则直接把输入数据作为输出数据进行输出。若输入数据大于最大值,则把最大值作为输出值。若输入数据小于最小值,则把最小值作为输出值。 语法:其文本化语言语法格式如下
OUT := LIMIT(Min, IN, Max)
这个语句用的挺多的,主要是在做参数限幅的时候用。
例子:创建一个POU,使用限制值指令,无论输入为何值,确保输出值在能在30~80 的范围内。具体实现程序如下。
VAR
iVar:INT:=90;
iOutVar: INT;
END_VAR
iOutVar:=limit(30,iVar,80);
最小值输入值为30,最大值输入值为80,实际输入值为90,大于最大值,故最终输出以最大值80 为输出,故最终结果为80
SEL 二选一
功能:通过选择开关,在两个输入数据中选择一个作为输出,选择开关为FALSE 时,输出为第一个输入数据,选择开关为TRUE 时,输出为第二个数据。
语法:其文本化语言语法格式如下 OUT := SEL(G, IN0, IN1)
参数G:必须是布尔变量。如果G 是FALSE,则返回值的结果是IN0, 如果G 是TRUE,则返回值的结果为IN1。
例子:当输入值bInput 为FALSE,输出为3,反之,当其为TRUE 时,输 出为4,具体实现程序如下。
VAR
iVar1:INT:=3;
iVar2:INT:=4;
iOutVar: INT;
bInput: BOOL;
END_VAR
iOutVar:=SEL(bInput,iVar1,iVar2);
MUX 多选一
功能:多路器操作。通过控制数在多个输入数据中选择一个作为输出。 语法:其文本化语言语法格式如下, OUT := MUX(K, IN0,...,INn) IN0,...,INn 以及 返回值可以是任何变量类型。但是K 必须为 BYTE, WORD, DWORD, LWORD,SINT, USINT, INT, UINT, DINT, LINT, ULINT 或者UDINT。 MUX 从变量组中选择第K 个数据输出。
例子:创建一个POU,使用多选一指令,根据输入控制数iVar 选择最终要输出的数据。具 体实现程序如下。
VAR
iVar:INT:=1;
iOutVar: INT;
END_VAR
iOutVar:=MUX(iVar,30,40,50,60,70,80);
最终输出结果为40,因为数据排序是从第0 个元素开始累积。如果数据超出范围,最数据按最后一个数据为输出,如例6.x 中,将iVar 的值设定为10,最终的输出结果为80。如果iVar 为-1,最终输出值还是为80。
MAX 最大值
功能:最大值函数。在多个输入数据中选择最大值作为输出。 语法:其文本化语言语法格式如下所示, OUT := MAX(IN0, …,INn)
例子:创建一个POU,iOutVar 的输入值为iVar1 和iVar2 中的较大者,具体实现程序如下。
VAR
iVar1:INT:=30;
iVar2:INT:=60;
iOutVar: INT;
END_VAR
iOutVar:=MAX(iVar1,iVar2);
程序运行后输出结果为60。
MIN 最小值
功能:最小值函数。在多个输入数据中选择最小值作为输出。 语法:其文本化语言语法格式如下所示 OUT := MIN(IN0, …,INn) IN0, INn 以及 OUT 可以是任何数据类型
例子:创建一个POU,iOutVar 的输入值为iVar1 和iVar2 中的较小者,具体实现程序如下。
VAR
iVar1:INT:=30;
iVar2:INT:=60;
iOutVar: INT;
END_VAR
iOutVar:=MIN(iVar1,iVar2);
程序运行后输出结果为30。