Valore limite della variabile di ingresso
In LIMIT la 1a variabile di ingresso costituisce il valore limite inferiore e la 3a variabile di ingresso il valore limite superiore. Se la 2a variabile di ingresso rientra in questo limite, verrà trasferita nella variabile di uscita. Se supera questo limite, verrà trasferito il valore limite superiore; se è al di sotto di questo limite verrà trasferito il valore limite inferiore.
Ingresso
1° ingresso: limite inferiore
2° ingresso: valore confrontato con il limite superiore e inferiore
3° ingresso: limite superiore
Uscita
Uscita come ingresso: risultato, 2° valore di ingresso se compreso tra il limite superiore e quello inferiore, altrimenti il limite superiore o inferiore
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
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
In questo esempio sono state dichiarate le variabili di ingresso (lower_limit_val, comparison_value e upper_limit_val). Al loro posto potete inserire una costante direttamente nel contatto di ingresso di una funzione.
lower_limit_val e upper_limit_val formano l'intervallo nel quale deve trovarsi comparison_value per poter essere trasferito in result.
Se comparison_value è superiore a upper_limit_val, il valore di upper_limit_val verrà trasferito in result.
Se è inferiore a lower_limit_val, il valore di llower_limit_val verrà trasferito in 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
result:=LIMIT(MN:=lower_limit_val, IN:=comparison_value, MX:=upper_limit_val);
LD |
lower_limit_val |
LIMIT |
comparison_value, upper_limit_val |
ST |
result |