TO_INT-Baustein
Kurz-Information
Name | TO_INT |
---|---|
→POE-Typ | →Funktion |
Kategorie | IEC-Baustein, Convert, Baustein mit interner Fehlerdiagnose |
Konform zur →IEC-Norm |
|
Grafische Schnittstelle | |
Verfügbar ab |
|
Funktionalität
Der Baustein dient zur expliziten Konvertierung des an IN
anliegenden Werts in einen Wert vom Datentyp INT
.
Falls der anliegende Wert im gemeinsamen Wertbereich des Eingangsdatentyps und des Ergebniswerts INT
liegt, so liefert der Baustein diesen Wert.
Beachten Sie:
-
Bei der Umwandlung von Datentypen auf den
TIME
-Datentyp und umgekehrt wird immer auf Sekunden-Basis konvertiert. -
Falls ein Wert vom Datentyp
STRING
am Eingang anliegt, wird der Wert in einen Dezimalwert (Basis: 10, erlaubte Ziffern:0
bis9
) konvertiert und dann wird dieser Dezimalwert in einen Wert des Ziel-Datentyps konvertiert. Diese Spezialfälle sind dabei möglich (siehe unter "Beispiel für Verwendung im ST-Editor"):- Falls der Wert mit dem Zeichen
+
, mit Leerzeichen oder Tabulatoren (= sogenannten "Whitespace") beginnt und falls der Wert innerhalb des Wertbereichs des Ziel-Datentyps liegt, wird der Wert in einen positiven Dezimalwert (wie ohne diese Zeichen) konvertiert. Der AusgangENO
wird hier auf den WertTRUE
gesetzt.
Details zu dieser Konvertierung: Ein dem Wert vorangestelltes Zeichen+
wird ignoriert , ebenso werden Leerzeichen und Tabulatoren ignoriert. -
Falls der Wert mit dem Zeichen
–
beginnt und der Wert innerhalb des Wertbereichs des Ziel-Datentyps liegt, wird der Wert in einen negativen Dezimalwert konvertiert. Auch hier wird der AusgangENO
auf den WertTRUE
gesetzt. -
Falls der Wert ein nicht erlaubtes Zeichen enthält, liefert der Baustein den Wert
0
. Hier wird der AusgangENO
auf den WertFALSE
gesetzt.Erlaubte Zeichen
Nicht erlaubte Zeichen
Ziffern (Basis: 10, Zahlen:
0
bis9
)
Beispiel für Wert mit erlaubtem Zeichen:'12'
andere Zeichen, wie z.B. Buchstaben
Beispiele für Wert mit nicht erlaubtem Zeichen:'12a3'
,'a123'
ein dem Wert vorangestelltes Zeichen
+
oder–
Beispiel für Wert mit erlaubtem Zeichen:+2
oder–3
Wiederholungen von
+
oder–
am Anfang des Werts, das Zeichen+
oder–
innerhalb des Werts
Beispiele für Wert mit nicht erlaubtem Zeichen:'++1'
,'1–3'
einzelne Unterstrich-Zeichen _ innerhalb des Werts
Beispiel für Wert mit erlaubtem Zeichen:1_2
oder1_2_3
Unterstrich-Zeichen _ am Anfang oder Ende des Werts, mehrere Unterstrich-Zeichen _ direkt hintereinander
Beispiel für Wert mit nicht erlaubtem Zeichen:_12
,12_
oder1__2
-
Falls der zu konvertierende
STRING
-Wert die Obergrenze des Ziel-Datentyps übersteigt, liefert der Baustein die Obergrenze des Ziel-Datentyps. Auch hier wird der AusgangENO
auf den WertFALSE
gesetzt. -
Falls der zu konvertierende
STRING
-Wert unter der Untergrenze des Ziel-Datentyps liegt, liefert der Baustein die Untergrenze des Ziel-Datentyps. Auch hier wird der AusgangENO
auf den WertFALSE
gesetzt.
- Falls der Wert mit dem Zeichen
-
Falls ein Wert vom Datentyp
CHAR
am Eingang anliegt, erfolgt die Konvertierung analog zu einemSTRING
-Wert. Als Unterschied zurSTRING
-Konvertierung sind bei derCHAR
-Konvertierung nur die einzelnen Ziffern0
bis9
erlaubt. Für alle anderen Zeichen (Buchstaben, die Zeichen+
,-
und _) liefert der Baustein den Wert0
und der AusgangENO
wird auf den WertFALSE
gesetzt.
Explizite Konvertierung laut IEC-Norm
Die IEC-Norm sieht eine explizite Konvertierung der folgenden Datentypen auf INT
vor:
LREAL, REAL, LINT, DINT, SINT, ULINT, UDINT, UINT, USINT, LWORD, DWORD, WORD, BYTE, BOOL
Eingänge, Ergebniswert
Bezeichner | →Datentyp | Beschreibung | |
---|---|---|---|
Eingänge: | IN |
| zu konvertierender Wert |
Ergebniswert: | – | INT |
Der Eingang EN
und der Ausgang ENO
sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN
und zum Ausgang ENO
.
Interne Fehlerdiagnose für Baustein
Der Baustein prüft den Wert, der am Eingang anliegt. In den folgenden Fällen wird der Ausgang ENO
des Bausteins auf den Wert FALSE
(oder eine Entsprechung) zurückgesetzt:
- Ein
STRING
-Wert enthält ein nicht erlaubtes Zeichen oder beginnt damit. (In diesem Fall liefert der Baustein außerdem den Wert 0.) - Ein
STRING
-Wert übersteigt die Obergrenze des Ziel-Datentyps. (In diesem Fall liefert der Baustein außerdem die Obergrenze des Ziel-Datentyps.)
- Ein
STRING
-Wert unterschreitet die Untergrenze des Ziel-Datentyps. (In diesem Fall liefert der Baustein außerdem die Untergrenze des Ziel-Datentyps.)
-
Der
CHAR
-Wert ist ein nicht erlaubtes Zeichen. (In diesem Fall liefert der Baustein außerdem den Wert 0.)
Beispiel für Verwendung im ST-Editor
Die berechneten Werte werden mit Hilfe des Assert
-Bausteins ausgewertet.
FUNCTION_BLOCK ExampleToInt VAR result : INT; END_VAR result := TO_INT(IN := SINT#12); Assert(result = 12); END_FUNCTION_BLOCK
FUNCTION_BLOCK ExampleToIntString VAR resultStr1, resultStr2, resultStr3, resultStr4, resultStr5, resultStr6, resultStr7, resultStr8, resultStr9, resultStr10, resultStr11, resultStr12, resultStr13, resultStr14, resultStr15 : INT; CheckENO1, CheckENO2, CheckENO3, CheckENO4, CheckENO5, CheckENO6, CheckENO7, CheckENO8, CheckENO9, CheckENO10, CheckENO11, CheckENO12, CheckENO13, CheckENO14, CheckENO15 : BOOL; END_VAR resultStr1 := TO_INT(IN:='12', ENO=>CheckENO1); Assert(resultStr1 = 12); Assert(CheckENO1 = TRUE); resultStr2 := TO_INT(IN:=' 3', ENO=>CheckENO2); Assert(resultStr2 = 3); Assert(CheckENO2 = TRUE); resultStr3 := TO_INT(IN:='+2', ENO=>CheckENO3); Assert(resultStr3 = 2); Assert(CheckENO3 = TRUE); resultStr4 := TO_INT(IN:='-3', ENO=>CheckENO4); Assert(resultStr4 = -3); Assert(CheckENO4 = TRUE); resultStr5 := TO_INT(IN:='1_2', ENO=>CheckENO5); Assert(resultStr5 = 12); Assert(CheckENO5 = TRUE); resultStr6 := TO_INT(IN:='1_2_3', ENO=>CheckENO6); Assert(resultStr6 = 123); Assert(CheckENO6 = TRUE); resultStr7 := TO_INT(IN:='123a45', ENO=>CheckENO7); Assert(resultStr7 = 0); Assert(CheckENO7 = FALSE); resultStr8 := TO_INT(IN:='a1234', ENO=>CheckENO8); Assert(resultStr8 = 0); Assert(CheckENO9 = FALSE); resultStr9 := TO_INT(IN:='++1', ENO=>CheckENO9); Assert(resultStr9 = 0); Assert(CheckENO9 = FALSE); resultStr10 := TO_INT(IN:='1-3', ENO=>CheckENO10); Assert(resultStr10 = 0); Assert(CheckENO10 = FALSE); resultStr11 := TO_INT(IN:='_12', ENO=>CheckENO11); Assert(resultStr11 = 0); Assert(CheckENO11 = FALSE); resultStr12 := TO_INT(IN:='12_', ENO=>CheckENO12); Assert(resultStr12 = 0); Assert(CheckENO12 = FALSE); resultStr13 := TO_INT(IN:='1__2', ENO=>CheckENO13); Assert(resultStr13 = 0); Assert(CheckENO13 = FALSE); resultStr14 := TO_INT(IN:='35000', ENO=>CheckENO14); (* The upper limit for INT is 32_767. *) Assert(resultStr14 = 32_767); Assert(CheckENO14 = FALSE); resultStr15 := TO_INT(IN:='-35000', ENO=>CheckENO15); (* The lower limit for INT is -32_768. *) Assert(resultStr15 = -32_768); Assert(CheckENO15 = FALSE); END_FUNCTION_BLOCK
Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.