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:
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 aufBYTE
konvertiert werden. DaBYTE
aufWORD
konvertiert werden kann, kann auchBOOL
aufWORD
konvertiert werden. DaWORD
aufDWORD
konvertiert werden kann, kann auchBYTE
undBOOL
aufDWORD
konvertiert werden. Und so weiter in der Pfeilrichtung. - Beispiel 2:
SINT
kann aufINT
konvertiert werden. DaINT
aufDINT
undREAL
konvertiert werden kann, kann auchSINT
aufDINT
undREAL
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.
Implizite Konvertierung eines Safe-Datentyps
Siehe unter "Safe-Datentypen".
Konvertierungsregeln
Bei der Konvertierung eines
REAL
-/LREAL
-Werts in einenANY_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: DerREAL
-Wert1.5
und derREAL
-Wert2.5
werden beide zumANY_INT
-Wert2
konvertiert.Bei der expliziten Konvertierung eines
ANY_SIGNED
-Werts (Wert mit Vorzeichen) in einenANY_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
oderFFFFhex
oderFFFFFFFFhex
(als Wert ohne Vorzeichen, je nach Datentyp)128
(=80hex
) alsUSINT
-128
(=80hex
) alsSINT
129
(=81hex
) alsUSINT
-127
(=81hex
) alsSINT
255
(=FFhex
) alsUSINT
-1
(=FFhex
) alsSINT
Bei der Umwandlung von Datentypen auf den
TIME
-Datentyp und umgekehrt wird immer auf Sekunden-Basis konvertiert.