Fließkommawert -> 16-Bit-Ganzzahl-Wert (größter Ganzzahl-Wert überschreitet den Fließkommawert nicht)
Die Funktion konvertiert einen Fließkommawert am Eingang s im Bereich von -32767,99 bis 32767.99 in einen Ganzzahl-Wert (mit Vorzeichen). Das Funktionsergebnis wird am Ausgang d zurückgegeben.
Eingang
Quell-REAL-Zahl-Daten (2 Worte)
Ausgang
Ziel zum Speichern der konvertierten Daten
Der konvertierte Ganzzahl-Wert am Ausgang d ist immer kleiner oder gleich groß wie der Fließkommawert am Eingang s:
Wenn am Eingang ein positiver Fließkommawert steht, wird am Ausgang ein positiver Vorkomma-Wert zurückgegeben.
Wenn am Eingang ein negativer Fließkommawert steht, wird am Ausgang der nächst kleinere Vorkomma-Wert zurückgegeben.
Hat der negative Fließkommawert in den Nachkommastellen nur Nullen, so wird seine Vorkommastelle zurückgegeben.
wenn der Wert am Eingang s keine REAL-Zahl ist, oder das konvertierte Ergebnis den 16-Bit-Bereich am Ausgang d überschreitet.
wenn der Wert am Eingang s keine REAL-Zahl ist, oder das konvertierte Ergebnis den 16-Bit-Bereich am Ausgang d überschreitet.
wenn das Funktionsergebnis 0 ist.
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
start: BOOL:=FALSE;
(*activates the function*)
input_value: REAL:=-1.234;
output_value: INT:=0;
(*result after a 0->1 leading
edge from start: 32*)
END_VAR
In diesem Beispiel wird die Eingangsvariable input_value deklariert. Stattdessen können Sie im Rumpf eine Konstante auch direkt an den Eingang der Funktion schreiben.
Wenn die Variable start auf TRUE gesetzt wird, wird die Funktion ausgeführt. Sie konvertiert den Fließkommawert -1.234 in den Ganzzahlwert -2, der am Ausgang der Variablen output_value übergeben wird. Da die Ganzzahl den Fließkommawert nicht überschreiten darf, wird hier abgerundet.
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,,output,7,1,9,3,);
B(B_VARIN,,input_value,7,2,9,4,);
B(B_VAROUT,,output_value,17,2,19,4,);
B(B_F,F327_INT,,9,0,17,4,,?DEN?D@'s'?AENO?Cd);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF start THEN
F327_INT(input_value, output_value);
END_IF;