DOUBLE WORD in STRING
Die Funktion DWORD_TO_STRING wandelt einen Wert vom Datentyp DWORD 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#ABCDEFFE |
STRING[2] |
'FE' |
STRING[4] |
'EFFE' |
|
STRING[6] |
'CDEFFE' |
|
STRING[8] |
'ABCDEFFE' |
|
STRING[10] |
'00ABCDEFFE' |
|
STRING[12] |
'0000ABCDEFFE' |
|
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
DWORD_value: DWORD:=0;
(*example value: 16#ABCDEFFE*)
result_string: STRING[10]:='';
(*result: '00ABCDEFFE'*)
@'': @'';
END_VAR
Die Eingangsvariable DWORD_value vom Datentyp DWORD wird durch den Wert 16#ABCDEFFE initialisiert. Die Ausgangsvariable result_string ist vom Datentyp STRING[10]. Sie kann maximal 10 Zeichen speichern. Statt der Variable DWORD_value, können Sie im Rumpf eine Konstante direkt an den Eingang der Funktion schreiben.
DWORD_value vom Datentyp DWORD wird in STRING[10] umgewandelt. Der umgewandelte Wert wird in result_string geschrieben. Mit der Variable DWORD_value = 16#ABCDEFFE steht in result_string '00ABCDEFFE'.
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_F,DWORD_TO_STRING!,Instance,9,1,20,3,,?D?C);
B(B_VARIN,,DWORD_value,7,1,9,3,);
B(B_VAROUT,,result_string,20,1,22,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
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.
Dieses Beispiel zeigt, wie man aus einem Eingangswert vom Datentyp DWORD einen STRING[10] der Länge 10 erzeugt, in dem der führende Teilstring '16#' durch den String '0x' ersetzt wird.
VAR
input_value: DWORD:=16#12345678;
result_string: STRING[10]:='';
@'': @'';
END_VAR
In diesem Beispiel werden eine Eingangsvariablen input_value vom Datentyp DWORD sowie eine Ausgangsvariable result_string vom Datentyp STRING[10] deklariert.
Zur Realisierung der geforderten Aufgabe wird der Funktion DWORD_TO_STRING zusätzlich die Standardfunktion REPLACE nachgeschaltet. REPLACE ersetzt einen Abschnitt in einer Zeichenfolge durch einen anderen.
Im Beispiel liegt am Eingang IN1 der REPLACE-Funktion der Ausgangsstring von DWORD_TO_STRING an. Am Eingang IN2 liegt der Ersatz-STRING als STRING-Konstante '0x' an. Am L-Eingang von REPLACE gibt die INT-Konstante 3 die Länge des zu ersetzenden STRING an. Der P-Eingang gibt die Position an, ab der ersetzt werden soll. In diesem Fall ist dies die INT-Zahl 1. Aus der Variablen input_value = 16#12345678 wird nach der Typwandlung und der REPLACE-Funktion der result_string = '0x12345678'.
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,DWORD_TO_STRING!,Instance,8,1,19,3,,?D?C);
B(B_VARIN,,input_value,6,1,8,3,);
B(B_VAROUT,,result_string,26,1,28,3,);
B(B_F,REPLACE!,Instance,20,0,26,6,,?DIN1?DIN2?DL?DP?C);
B(B_VARIN,,'0x',18,2,20,4,);
B(B_VARIN,,3,18,3,20,5,);
B(B_VARIN,,2,18,4,20,6,);
L(19,2,20,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY