LIMIT

Ventana comparadora

En LIMIT la primera y la tercera variable representan los límites inferior y superior respectivamente. Si la segunda variable de entrada está dentro de este límite, se transfiere a la variable de salida. Si es mayor que el límite superior, se transfiere a la salida el valor del límite superior; si es inferior al límite inferior, se transfiere el valor del límite inferior.

Parámetros

Entrada

MN (INT, DINT, UINT, UDINT, REAL, LREAL)

Primera entrada: límite inferior

IN (INT, DINT, UINT, UDINT, REAL, LREAL)

Segunda entrada: valor a comparar

MX (INT, DINT, UINT, UDINT, REAL, LREAL)

Tercera entrada: límite superior

Salida

VAR_OUT (INT, DINT, UINT, UDINT, REAL, LREAL)

Salida: resultado, el valor de la segunda variable si está entre el límite superior y el límite inferior, en caso contrario el límite correspondiente

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	VAR
		lower_limit_val: INT:=0;
			(*all types allowed*)
		comparison_value: INT:=0;
			(*all types allowed*)
		upper_limit_val: INT:=0;
			(*all types allowed*)
		result: INT:=0;
			(*all types allowed*)
	END_VAR

En este ejemplo se han declarado las variables de entrada (lower_limit_val, comparison_value y upper_limit_val). Sin embargo, se puede introducir una constante directamente en la entrada de una función.

Cuerpo LD

comparison_value tiene que estar entre lower_limit_val y upper_limit_val para que su valor se transfiera a result.

  • Si comparison_value es mayor que upper_limit_val, el valor de upper_limit_val se transfiere a result.

  • Si es menor que lower_limit_val, el valor de lower_limit_val se copiará en result

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_VARIN,,lower_limit_val,9,1,11,3,);
B(B_VARIN,,comparison_value,9,2,11,4,);
B(B_VARIN,,upper_limit_val,9,3,11,5,);
B(B_VAROUT,,result,16,1,18,3,);
B(B_F,LIMIT!,Instance,11,0,16,5,,?DMN?DIN?DMX?C);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

result:=LIMIT(MN:=lower_limit_val, IN:=comparison_value, MX:=upper_limit_val);

Cuerpo IL

LD

lower_limit_val

LIMIT

comparison_value, upper_limit_val

ST

result

Modificado el: 2022-11-15Comentarios sobre esta páginaPanasonic hotline