TIME in STRING
Die Funktion TIME_TO_STRING wandelt einen Wert vom Datentyp TIME in einen Wert vom Datentyp STRING[20] um. Entsprechend der Darstellung gemäß IEC-1131 wird der Ergebnisstring mit kurzem Zeitpräfix und ohne Unterstriche dargestellt. Mögliche Werte für den Ergebnisstring liegen im Bereich von 'T#000d00h00m00s000ms' bis 'T#248d13h13m56s470ms'.
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.
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: TIME:=T#0s;
result_string: STRING;
Die Eingangsvariable input_value vom Datentyp TIME wird durch den Wert T#1h30m45s initialisiert. Die Ausgangsvariable result_string ist vom Datentyp STRING[20]. Sie kann maximal 20 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 TIME wird in STRING[20] umgewandelt. Der umgewandelte Wert wird in result_string geschrieben. Wenn die Variable input_value = T#1h30m45s steht in result_string 'T#000d01h30m45s000ms'.
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,TIME_TO_STRING!,Instance,10,1,19,3,,?D?C);
B(B_VARIN,,input_value,8,1,10,3,);
B(B_VAROUT,,result_string,19,1,21,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
result_string:=TIME_TO_STRING(input_value);
Dieses Beispiel zeigt, wie man aus einem Eingangswert vom Datentyp TIME eine Zeichenfolge STRING[9] der Länge 9 im Format 'xxhxxmxxs' erzeugt (es sollen nur Stunden, Minuten und Sekunden ausgegeben werden). 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: TIME:=T#1h30m45s;
(*example value*)
result_string: STRING[9]:='';
(*result: here '01h30m45s'*)
END_VAR
In diesem Beispiel werden eine Eingangsvariable input_value vom Datentyp TIME sowie eine Ausgangsvariable result_string vom Datentyp STRING[9] deklariert.
Zur Realisierung der geforderten Aufgabe wird der Funktion TIME_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 9 angelegt, welche die Länge des Ergebnisstrings festlegt. Die INT-Konstante 7 am Eingang P bestimmt die Position, ab der der Mittelabschnitt beginnt. Aus der Variablen input_value = T#1h30m45s wird nach der Typwandlung der STRING 'T#000d01h30m45s000ms'. Die MID-Funktion schneidet den STRING an der Position 7 ab und gibt result_string '01h30m45s' 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,TIME_TO_STRING!,Instance,7,2,16,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,,9,17,3,19,5,);
B(B_VARIN,,7,17,4,19,6,);
L(1,0,1,6);
L(16,3,19,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY