INTEGER-Daten skalieren
Dieser Befehl skaliert einen INTEGER-Wert zwischen einem unteren und einem oberen Grenzwert auf einen INTEGER-Ausgangswert. Mit WITHIN_LIMITS prüfen Sie, ob der Eingangswert innerhalb des angegebenen Bereichs liegt.
Eingang
Eingangssignal
Unterer Grenzwert des Eingangsbereichs
Oberer Grenzwert des Eingangsbereichs
Der Ausgangswert, der dem unteren Grenzwert des Eingangsbereichs zugewiesen wird (kann höher als iOutputUpperLimit sein)
Der Ausgangswert, der dem oberen Grenzwert des Eingangsbereichs zugewiesen wird (kann niedriger als iOutputLowerLimit sein)
Ausgang
Skaliertes Ausgangssignal
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
iInput0: INT:=2000;
iOutput0: INT:=0;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_F,SCALE_INT!,,15,0,26,7,,?DiInput?DiInputLowerLimit?DiInputUpperLimit?DiOutputLowerLimit?DiOutputUpperLimit?C);
B(B_VARIN,,iInput0,13,1,15,3,);
B(B_VARIN,,-1000,13,2,15,4,);
B(B_VARIN,,3000,13,3,15,5,);
B(B_VARIN,,-10000,13,4,15,6,);
B(B_VARIN,,30000,13,5,15,7,);
B(B_VAROUT,,iOutput0,26,1,28,3,);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (bScale) then
iOutput := SCALE_INT(iInput := iInput0,
iInputLowerLimit := -1000,
iInputUpperLimit := 3000,
iOutputLowerLimit := -10000,
iOutputUpperLimit := 30000);
end_if;