Überladung

Die Operatoren konvertieren Werte in andere Datentypen, wobei explizit nur ein Zieldatentyp und kein Anfangsdatentyp (Datentyp des Operanden) angegeben wird („überladene Konvertierung“).

Überladungen sind nicht Teil der IEC 61131-3. Wenn Sie strikt nach IEC61131-3 programmieren möchten, verwenden Sie bitte die in den folgenden Abschnitten beschriebenen Operatoren des Schemas <type> _TO_ <another type>.

Syntax:

<variable name> := <TO operator> ( <operand> );
<operand> = <variable name> | <literal>

Operatoren:

TO___UXINT
TO___XINT
TO___XWORD
TO_BIT
TO_BYTE
TO_BOOL
TO_DATE
TO_DINT
TO_DT
TO_DWORD
TO_INT
TO_LDATE
TO_LDT
TO_LINT
TO_LREAL
TO_LTIME
TO_LTOD
TO_LWORD
TO_REAL
TO_SINT
TO_STRING
TO_TIME
TO_TOD
TO_UDINT
TO_UINT
TO_ULINT
TO_USINT
TO_WORD
TO_WSTRING

Die Regeln für die getypten Konvertierungen gelten auch bei der Überladung.

Überladung 1:

Wenn der Eingangswert eines Typkonvertierungsoperators außerhalb des Wertebereichs des Ausgangsdatentyps liegt, ist das Ergebnis der Operation nicht definiert und abhängig von der Plattform. Dies ist zum Beispiel der Fall, wenn der Eingangswert für die Konvertierung von LREAL nach UDINT negativ ist.

Beispiele:

Implementierungssprache ST:

VAR
    nNumber1 : INT;
    nNumber2 : INT;
    fNumber3 : REAL     := 123.456;
    bTruth   : BOOL;
    sText1   : STRING;
    sText2   : STRING   := 'Hello World!';
    wsText   : WSTRING;
    dEvent   : DATE     := D#2019-9-3;
    nEvent   : UINT;
    nData    : __UXINT;
END_VAR
nNumber1 := TO_INT(4.22);          // Result: 4
nNumber2 := TO_INT(fNumber1);      // Result: 123
bTruth   := TO_BOOL(1);            // Result: TRUE
sText1   := TO_STRING(342);        // Result: '342'
wsText   := TO_WSTRING(sText2);    // Result: "Hello World!"
nEvent   := TO_UINT(dEvent);       // Result: 44288
dEvent   := TO___UXINT(nNumber2);  // Result: 123

Siehe auch: