Grenzwert für Eingangsvariable
In LIMIT bildet die 1. Eingangsvariable den unteren und die 3. Eingangsvariable den oberen Grenzwert. Wenn die 2. Eingangsvariable innerhalb dieser Grenze liegt, wird die 2. Eingangsvariable an die Ausgangsvariable übertragen. Wenn die 2. Eingangsvariable darüber liegt, wird der obere, falls sie darunter liegt, der untere Grenzwert übertragen.
Eingang
1. Eingang: unterer Grenzwert
2. Eingang: Wert, der mit oberem und unterem Grenzwert verglichen wird
3. Eingang: oberer Grenzwert
Ausgang
Ausgang wie Eingang: Ergebnis ist die zweite Eingangsvariable, falls sie zwischen dem oberen und dem unteren Grenzwert liegt, sonst der obere oder untere Grenzwert
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
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 diesem Beispiel wurden die Eingangsvariablen (lower_limit_val, comparison_value und upper_limit_val) deklariert. Stattdessen können Sie im Rumpf eine Konstante auch direkt an den Eingang der Funktion schreiben.
lower_limit_val und upper_limit_val bilden den Bereich, in dem sich der Vergleichswert comparison_value befinden muss, wenn er in result übertragen werden soll.
Liegt der Vergleichswert comparison_value über dem oberen Grenzwert upper_limit_val, wird der Wert aus upper_limit_vall in result übertragen.
Liegt der Vergleichswert unter dem unteren Grenzwert lower_limit_val, wird der Wert aus lower_limit_val in result übertragen.
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 |