Unterstützte Datentypen (in ST)
Sie können folgende Datentypen in Ihrer Anwendung verwenden:
Anwenderdefinierte Datentypen
Ein →anwenderdefinierter Datentyp ist ein →Datentyp, den Sie selbst deklariert haben. Informieren Sie sich unter:
"Deklaration eines Datentyps in ST", wie Sie Datentypen deklarieren können.
"C-Code und/oder C++-Code in die Anwendung integrieren (Deprecated)", wie Sie Datentypen in →C oder →C++ erstellen und in ST verwenden können.
Elementare Datentypen
logi.CAD 3 unterstützt folgende elementare Datentypen:
Datentyp (= →Schlüsselwort) |
Beschreibung |
I: Standard-→Initialisierungswert |
BOOL |
I: 0 oder FALSE U: 1 (entsprechend Schlüsselwort TRUE) O: wie Standard-Initialisierungswert (I) |
|
SINT |
kurze ganze Zahl (short integer) |
I: 0 U: -128 (1) O: 127 (1) |
INT |
ganze Zahl (→Integer) |
I: 0 U: -32_768 (1) (2) O: 32_767 (1) |
DINT |
doppelte ganze Zahl (double integer) |
I: 0 U: -2_147_483_648 (1) (2) O: 2_147_483_647 (1) |
LINT |
lange ganze Zahl (long integer) |
I: 0 U: -9_223_372_036_854_775_808 (1) (2) O: 9_223_372_036_854_775_807 (1) |
USINT |
vorzeichenlose kurze ganze Zahl (unsigned short integer) |
I: 0 U: wie Standard-Initialisierungswert (I) (1) O: 255 (1) |
UINT |
vorzeichenlose ganze Zahl (→Unsigned Integer) |
I: 0 U: wie Standard-Initialisierungswert (I) (1) O: 65_535 (1) (2) |
UDINT |
vorzeichenlose doppelte ganze Zahl (unsigned double integer) |
I: 0 U: wie Standard-Initialisierungswert (I) (1) O: 4_294_967_295 (1) (2) |
ULINT |
vorzeichenlose lange ganze Zahl (unsigned long integer) |
I: 0 U: wie Standard-Initialisierungswert (I) (1) O: 18_446_744_073_709_551_615 (1) (2) |
REAL |
reelle Zahl (3) |
I: 0.0 U: -3.402_823_466e+38 (1) (2) (4) O: 3.402_823_466e+38 (1) (4) Werte im Bereich von -1.4e-45 bis +1.4e-45 können von logi.CAD 3 nicht verarbeitet werden (Ausnahme: 0.0 wird verarbeitet). Solche Werte ergeben einen →Unterlauf. |
LREAL |
I: 0.0 U: -1.797_693_134_862_315_7e+308 (1) (2) (4) O: 1.797_693_134_862_315_7e+308 (1) (4) Werte im Bereich von -4.9e-324 bis +4.9e-324 können von logi.CAD 3 nicht verarbeitet werden (Ausnahme: 0.0 wird verarbeitet). Solche Werte ergeben einen →Unterlauf. |
|
TIME |
Zeitdauer |
I: T#0s U: T#-89_468_321d19h42m34s400ms (2) (entspricht -7730063005354.4s) O: T#89_468_321d19h42m34s400ms (6) (entspricht 7730063005354.4s) |
DATE |
(nur) Datum |
I: DATE#1970-01-01 (7) U: wie Standard-Initialisierungswert (I) O: DATE#246_925-12-11 (6) (7) |
TIME_OF_DAY oder TOD |
(nur) Uhrzeit |
I: TOD#00:00:00 (5) U: wie Standard-Initialisierungswert (I) O: TOD#23:59:59.999_000_000 (2) (5) (6) |
DATE_AND_TIME oder DT |
Datum und Uhrzeit |
I: DT#1970-01-01-00:00:00.000_000_000 (2) (5) (7) U: wie Standard-Initialisierungswert (I) O: DT#246_925-12-11-19:42:34.400 (5) (6) (7) |
STRING |
Einzel-Byte-→Zeichenfolge mit variabler Länge |
I: '' (leer) keine Unter-/Obergrenze, da beliebige Zeichenfolge möglich ist |
CHAR |
Einzel-Byte-Zeichen |
I: '$00' (entsprechend dem Dezimalwert 0 im ANSI-C-Zeichensatz) (8) U: wie Standard-Initialisierungswert (I) O: '$FF' (entsprechend dem ÿ -Zeichen bzw. dem Dezimalwert 255 im ANSI-C-Zeichensatz ) (8)
|
BYTE |
→Bitfolge der Länge 8 |
I: 16#00 U: wie Standard-Initialisierungswert (I) (1) O: 16#FF (1) |
WORD |
Bitfolge der Länge 16 |
I: 16#0000 U: wie Standard-Initialisierungswert (I) (1) O: 16#FFFF (1) |
DWORD |
Bitfolge der Länge 32 |
I: 16#0000_0000 (2) U: wie Standard-Initialisierungswert (I) (1) O: 16#FFFF_FFFF (1) |
LWORD |
Bitfolge der Länge 64 |
I: 16#0000_0000_0000_0000 (2) U: wie Standard-Initialisierungswert (I) (1) O: 16#FFFF_FFFF_FFFF_FFFF (1) |
Hinweise:
(1) Bei diesem Datentyp ist es möglich, die Untergrenze (U) oder Obergrenze (O) mit Hilfe der Begriffe MIN oder MAX zuzuweisen – siehe FAQ-Artikel: "Wie wird der Minimalwert oder Maximalwert eines Datentyps zugewiesen?"
(2) Das einzelne Unterstrich-Zeichen _ ist zur besseren Lesbarkeit als Trennzeichen für Werte eingefügt, _ ist für die Werte nicht signifikant. Werte mit _ werden von logi.CAD 3 korrekt interpretiert.
(3) Ungenauigkeiten bei Gleitkommazahlen (betrifft die Datentypen REAL und LREAL):
Aufgrund der internen Darstellung von Gleitkommazahlen können sich Ungenauigkeiten bei der Verarbeitung von REAL- und LREAL-Werten ergeben. Diese Ungenauigkeiten können bewirken, dass Operationen mit solchen Werten zu einem nicht erwarteten Ergebnis führen. Dies betrifft auch Systembausteine, die REAL- und/oder LREAL-Werte verarbeiten.
(4) REAL-Werte werden intern als "Float-Wert" und LREAL-Werte als "Double-Werte" verwaltet.
Das IEEE-Float-Format sieht für die Darstellung folgende Bestimmungen vor:
REAL |
24-Bit-Mantisse |
LREAL |
53-Bit-Mantisse |
Bei Verwendung eines →Controllino oder →Arduino Nano als SPS vermeiden Sie die Verwendung von Bausteinen/Variablen, die LREAL-Werte verarbeiten/liefern. Details: siehe "Zielsystem-spezifische Eigenschaften und Einschränkungen".(5) Werte für TIME_OF_DAY und DATE_AND_TIME sind Zeitangaben in der koordinierten Weltzeit (UTC = Coordinated Universal Time) – unabhängig von dem Zielsystem, das Sie verwenden. Eine Liste über die Zeitzonen pro Land (= Abweichung von UTC) finden Sie z.B. unter http://en.wikipedia.org/wiki/List_of_time_zones_by_country (Stand: 29. Juli 2012). Die Sommerzeit ist in der Liste nicht berücksichtigt. Beispiel: UTC+1 = Ortszeit Berlin (Deutschland), Paris (Frankreich), Rom (Italien) oder Wien (Österreich). Bei einer UTC-Zeit von 13:52 ergibt sich also eine Ortszeit 14:52 (Winterzeit) für z.B. Berlin, Paris, Rom oder Wien.
(6) Der Wertbereich und die Auflösung für TIME, DATE, TIME_OF_DAY und DATE_AND_TIME ist abhängig von der eingesetzten →SPS. Daher ist der angegebene Wert für die Obergrenze ein Annäherungswert. Die tatsächliche Obergrenze für Ihre Anwendung kann jedoch von diesem Wert abweichen. Siehe "Zielsystem-spezifische Eigenschaften und Einschränkungen").
(7) Die Untergrenze für DATE bzw. DATE_AND_TIME ist für Literale gültig. Aufgrund von Berechnungen oder Konvertierungen kann logi.CAD 3 Werte bis zu DATE#0001-01-01 bzw. DT#0001-01-01-00:00:00.000_000_000 verarbeiten und darstellen. Werte < DATE#0001-01-01 bzw. DT#0001-01-01-00:00:00.000_000_000 werden in Sekunden im Format OVF(Zahl) angezeigt, und zwar relativ zu DATE#1970-01-01 bzw. DT#1970-01-01-00:00:00.000_000_000.
(8) Kombinationen von 3 Zeichen, beginnend mit dem Dollar-Zeichen ($) und gefolgt von 2 Hexadezimal-Ziffern, werden in logi.CAD 3 als entsprechendes Zeichen des ANSI-C-Zeichensatzes interpretiert.
Auf diese Weise können Sie Sonderzeichen, wie z.B. Umlaute, für Einzel-Byte-Zeichenfolgen eingeben. Derzeit werden solche Sonderzeichen in logi.CAD 3 (z.B. in der Sicht Variablenwerte) jedoch so ausgegeben, wie sie eingegeben wurden.
Hier eine Auswahl an Sonderzeichen (eine Liste des ANSI-Zeichensatzes finden Sie unter http://ascii-table.com/ansi-codes.php):
Dezimalwert |
Hexadezimal-Ziffer |
Einzugeben |
Sonderzeichen |
128 |
80 |
$80 |
€ |
163 |
A3 |
$A3 |
£ |
169 |
A9 |
$A9 |
© |
174 |
AE |
$AE |
® |
177 |
B1 |
$B1 |
± |
178 |
B2 |
$B2 |
² (hochgestellte Ziffer "2") |
179 |
B3 |
$B3 |
³ (hochgestellte Ziffer "3") |
188 |
BC |
$BC |
¼ |
189 |
BD |
$BD |
½ |
190 |
BE |
$BE |
¾ |
196 |
C4 |
$C4 |
Ä |
214 |
D6 |
$D6 |
Ö |
220 |
DC |
$DC |
Ü |
223 |
DF |
$DF |
ß |
228 |
E4 |
$E4 |
ä |
246 |
F6 |
$F6 |
ö |
252 |
FC |
$FC |
ü |
Falls die Zeichenkombination '$00' einem einzelnen Zeichen einer STRING-Variable zugewiesen wird, endet die Zeichenfolge der STRING-Variable an dieser Position. Solche Zeichenfolge werden auch in der Sicht Variablenwerte bei $00 beendet.
In Zuweisungen wird jedoch die vollständige Zeichenfolge übernommen. So ist es möglich, dass die Sicht Variablenwerte einzelne Zeichen hinter $00 darstellt, falls Sie auf zugewiesenen Zeichen hinter $00 zugreifen.