WORD in STRING
Die Funktion WORD_TO_STRING wandelt einen Wert vom Datentyp WORD in einen Wert vom Datentyp STRING um.
Sie erzeugt eine rechtsbündige Ergebniszeichenfolge in Dezimaldarstellung. Diese wird mit führenden Nullen aufgefüllt, bis die maximale Anzahl der Zeichen erreicht ist, die für diese Zeichenfolge definiert ist.
Eingang
Ausgang
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.
Eingang |
Ausgang definiert als |
liefert |
---|---|---|
16#ABCD |
STRING[1] |
'D' |
STRING[2] |
'CD' |
|
STRING[3] |
'BCD' |
|
STRING[4] |
'ABCD' |
|
STRING[5] |
'0ABCD' |
|
STRING[6] |
'00ABCD' |
|
und so weiter ... |
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: WORD:=0;
result_string: STRING;
Die Eingangsvariable input_value vom Datentyp WORD wird durch den Wert 16#ABCD initialisiert. Die Ausgangsvariable result_string ist vom Datentyp STRING[6]. Sie kann maximal 6 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 WORD wird in STRING[6] umgewandelt. Der umgewandelte Wert wird in result_string geschrieben. Mit der Variablen input_value = 16#ABCD steht in result_string '00ABCD'.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 2 ;
NETWORK_BODY
B(B_F,WORD_TO_STRING!,Instance,11,0,21,2,,?D?C);
B(B_VARIN,,input_value,9,0,11,2,);
B(B_VAROUT,,result_string,21,0,23,2,);
L(1,0,1,2);
END_NETWORK_BODY
END_NET_WORK
END_BODY
result_string:=WORD_TO_STRING(input_value);
Dieses Beispiel zeigt, wie man aus einem Eingangswert vom Datentyp WORD einen STRING[4] der Länge 4 erzeugt, in dem der führende Teilstring '16#' abgeschnitten wird.
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: WORD:=16#1234;
(*example value*)
result_string1: STRING[7]:='';
(*result: here '0001234'*)
result_string: STRING[4]:='';
(*result: here '1234'*)
END_VAR
In diesem Beispiel werden eine Eingangsvariable input_value vom Datentyp WORD sowie eine Ausgangsvariable result_string vom Datentyp STRING[4] deklariert.
Zur Realisierung der geforderten Aufgabe wird der Funktion WORD_TO_STRING zusätzlich die Standardfunktion RIGHT nachgeschaltet. RIGHT erzeugt eine rechtsbündige Zeichenfolge der Länge L.
Im Beispiel liegt am Eingang der RIGHT-Funktion der Ausgangsstring von WORD_TO_STRING an. Am L-Eingang von RIGHT gibt die INT-Konstante 4 die Länge des zu ersetzenden STRING an. Aus der Variablen input_value = 16#1234 wird nach der Typwandlung und der RIGHT-Funktion der Ergebnistring result_string '1234'.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 2 ;
NETWORK_BODY
B(B_F,WORD_TO_STRING!,Instance,11,0,21,2,,?D?C);
B(B_VARIN,,input_value,9,0,11,2,);
B(B_VAROUT,,result_string1,21,0,23,2,);
L(1,0,1,2);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_VARIN,,result_string1,10,2,12,4,);
B(B_VAROUT,,result_string,17,2,19,4,);
B(B_F,RIGHT!,Instance,12,1,17,5,,?DIN?DL?C);
B(B_VARIN,,4,10,3,12,5,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY