REAL in STRING
Die Funktion REAL_TO_STRING wandelt einen Wert vom Datentyp REAL in einen Wert vom Datentyp STRING[15] mit je 7 Vor- und 7 Nachkommastellen. Der Ergebnisstring wird im Bereich von '-999999.0000000' bis '9999999.0000000' dargestellt. Im positiven Bereich wird das Pluszeichen weggelassen. Führende Nullen werden mit Leerzeichen aufgefüllt (z.B. wird aus -12,0 der STRING '-12,0').
Eingang
Ausgang
Die Funktion benötigt ungefähr 160 Schritte Programmspeicher. Bei mehrmaliger Verwendung sollte man sie daher in eine Anwenderfunktion integrieren, die dann nur einmal im Speicher abgelegt ist.
Bei der Verwendung des Datentyps STRING mit Kleinsteuerungen wie FP-e oder FP0 müssen Sie darauf achten, dass die Länge der Ergebniszeichenfolge mindestens so groß ist wie die Länge der Ausgangszeichenfolge.
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
input_value: REAL:=-123.4560166;
result_string: STRING[15]:='';
END_VAR
Die Eingangsvariable input_value vom Datentyp REAL wird mit dem Wert -123,4560166 initialisiert. Die Ausgangsvariable result_string ist vom Datentyp STRING[15]. Sie kann maximal 15 Zeichen speichern. Statt der Variable input_value, können Sie im Rumpf eine Konstante direkt an den Eingang der Funktion schreiben.
input_value vom Datentyp REAL wird in STRING[15] umgewandelt. Der umgewandelte Wert wird in result_string geschrieben. Mit der Variable input_value = 123,4560166 steht in result_string ' -123.4560165'.
BODY
WORKSPACE</p>
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_F,REAL_TO_STRING!,Instance,7,1,17,3,,?D?C);
B(B_VARIN,,input_value,5,1,7,3,);
B(B_VAROUT,,result_string,17,1,19,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Dieses Beispiel zeigt, wie man aus einem Eingangswert vom Datentyp REAL einen STRING der Länge 7 mit 4 Vor- und 2 Nachkommastellen erzeugt.
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
input_value: REAL:=-123.4560166;
(*example value*)
result_string: STRING[15]:='';
(*result: here ' -123.45'*)
END_VAR
In diesem Beispiel werden eine Eingangsvariable input_value vom Datentyp REAL sowie eine Ausgangsvariable result_string vom Datentyp STRING[7] deklariert.
Zur Realisierung der geforderten Aufgabe wird der Funktion REAL_TO_STRING zusätzlich die Standardfunktion MID nachgeschaltet. MID sorgt für einen Mittelabschnitt der Zeichenfolge ab Position P (INT-Wert) mit L (INT-Wert) Zeichen.
Im Beispiel wird am L-Eingang von MID eine INT-Konstante 7 angelegt, welche die Länge des Ergebnisstrings festlegt. Die INT-Konstante 4 am Eingang P bestimmt die Position, ab der der Mittelabschnitt beginnt. Aus der Variablen input_value = -123.4560166 wird nach der Typwandlung der STRING ' -123.4560166'. Die MID-Funktion schneidet den STRING an der Position 4 ab und gibt result_string '-123.45' aus.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,REAL_TO_STRING!,Instance,7,2,17,4,,?D?C);
B(B_VARIN,,input_value,5,2,7,4,);
B(B_VAROUT,,result_string,24,2,26,4,);
B(B_F,MID!,Instance,19,1,24,6,,?DIN?DL?DP?C);
B(B_VARIN,,7,17,3,19,5,);
B(B_VARIN,,4,17,4,19,6,);
L(17,3,19,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY