Konvertierung der Datentypen

Wenn Sie Ihre Anwendung erstellen, werden Situationen entstehen, in denen Sie die unterstützten Datentypen für die Verwendung in Ausdrücken oder Zuweisungen in ST anpassen müssen. logi.CAD 3 bietet Ihnen die folgenden Typkonvertierungen für diese Anpassung:

Explizite Konvertierung des Datentyps

Geben Sie den Aufruf einer der Convert-Funktionen bei der Erstellung Ihrer Anwendung ein, um einen Datentypen in den gewünschten Datentyp umzuwandeln. Beachten Sie dabei die Konvertierungsregeln.

Mögliche Folgen einer expliziten Konvertierung

  • Genauigkeitsverlust

  • Diskrepanz im Umfang

Implizite Konvertierung des Datentyps

Aufgrund der impliziten Konvertierung von logi.CAD 3 müssen Sie keinen zusätzlichen Code in Ihrer Anwendung eingeben, falls Sie die folgenden Datentypen umwandeln wollen:

images/download/attachments/409863261/DatatypesConvertingFigure-version-1-modificationdate-1531296823407-api-v2.png

Hinweis zur Interpretation der Abbildung: Die Pfeile zeigen die mögliche Konvertierungspfade. Also: Ein Datentyp kann auf den Datentyp konvertiert werden, auf den der Pfeil zeigt. Falls dieser Datentyp wiederum auf Datentypen konvertiert werden kann, kann der Datentyp davor ebenfalls auf die folgenden Datentypen konvertiert werden.

  • Beispiel 1: BOOL kann auf BYTE konvertiert werden. Da BYTE auf WORD konvertiert werden kann, kann auch BOOL auf WORD konvertiert werden. Da WORD auf DWORD konvertiert werden kann, kann auch BYTE und BOOL auf DWORD konvertiert werden. Und so weiter in der Pfeilrichtung.

  • Beispiel 2: SINT kann auf INT konvertiert werden. Da INT auf DINT und REAL konvertiert werden kann, kann auch SINT auf DINT und REAL konvertiert werden. Und so weiter in der Pfeilrichtung.

Auswirkungen einer impliziten Konvertierung: Der Wert und die Genauigkeit des ursprünglichen Datentyps bleiben erhalten. Beachten Sie dennoch die Konvertierungsregeln.

Konvertierungsregeln

  • Bei der Konvertierung eines REAL-/LREAL-Werts in einen ANY_INT-Wert wird zur nächsten ganzzahligen Zahl auf- oder abgerundet. Halbe Anteile (wie z.B. 0.5) werden auf die nächste gerade ganzzahlige Zahl gerundet. Beispiel: Der REAL-Wert 1.5 und der REAL-Wert 2.5 werden beide zum ANY_INT-Wert 2 konvertiert.

  • Bei der expliziten Konvertierung eines ANY_SIGNED-Werts (Wert mit Vorzeichen) in einen ANY_UNSIGNED-Wert (Wert ohne Vorzeichen) und umgekehrt wird das Bitmuster des Werts im jeweiligen Datenformat interpretiert.

    Also:

    Ursprünglicher Wert

    Entsprechung (konvertierter Wert)

    -1 (als Wert mit Vorzeichen)

    FFhex oder FFFFhex oder FFFFFFFFhex
    (als Wert ohne Vorzeichen, je nach Datentyp)

    128 (=80hex) als USINT

    -128 (=80hex) als SINT

    129 (=81hex) als USINT

    -127 (=81hex) als SINT

    255 (=FFhex) als USINT

    -1 (=FFhex) als SINT

  • Bei der Umwandlung von Datentypen auf den TIME-Datentyp und umgekehrt wird immer auf Sekunden-Basis konvertiert.