Gültige Datentypen | ||||
Datentypen legen die Eigenschaften der Daten fest, z.B. für die Darstellung des Inhalts und des zulässigen Speicherbereichs. Die verschiedenen Typen sind in Datentypgruppen eingeteilt und nicht unbedingt für jede CPU der S7-Familie verwendbar. [1]
Binärzahlen | ||||
Bool | ||||
Ein Operand vom Datentyp BOOL stellt einen Bitwert dar und enthält nur einen der folgenden Werte:
- TRUE
- FALSE
Länge | S7-300/400 | S7-1200 | S7-1500 |
1 Bit | |||
Format | Wertebereich | Beispiele | |
Boolesch | FALSE oder TRUE | TRUE BOOL#1 BOOL#TRUE | |
Ganzzahlen ohne Vorzeichen | 0 oder 1 | 1 | |
Dualzahlen | 2#0 oder 2#1 | 2#0 | |
Oktalzahlen | FALSE oder TRUE | 8#1 | |
Hexadezimalzahlen | 16#0 oder 16#1 | 16#1 |
Byte | ||||
Ein Operand vom Datentyp BYTE ist eine Bitfolge aus 8 Bit.
Der Datentyp BYTE kann nicht auf größer oder kleiner verglichen werden. Er kann dezimal nur mit den gleichen Daten versorgt werden, die auch die Datentypen SINT und USINT verarbeiten können.
Länge | S7-300/400 | S7-1200 | S7-1500 |
8 Bit | |||
Format | Wertebereich | Beispiele | |
Ganzzahlen ohne Vorzeichen | -128 bis 255 | 15, B#15 BYTE#15 | |
Dualzahlen | 2#0 bis 2#11111111 | 2#00001111 BYTE#2#00001111 B#2#00001111 | |
Oktalzahlen | 8#0 bis 8#377 | 8#17, BYTE#8#17 B#8#17 | |
Hexadezimalzahlen | B#16#0 bis B#16#FF 16#0 bis 16#FF | 16#0F BYTE#16#0F B#16#0F |
Word | ||||
Ein Operand vom Datentyp WORD ist eine Bitfolge aus 16 Bit.
Der Datentyp WORD kann nicht auf größer oder kleiner verglichen werden. Er kann dezimal nur mit den gleichen Daten versorgt werden, die auch die Datentypen INT und UINT verarbeiten können.
Länge | S7-300/400 | S7-1200 | S7-1500 |
16 Bit | |||
Ganzzahlen ohne Vorzeichen | -32768 bis 65535 | 61680 WORD#61680 W#61680 | |
Dualzahlen | 2#0 bis 2#1111111111111111 | 2#1111000011110000 WORD#2#1111000011110000 W#2#1111000011110000 | |
Oktalzahlen | 8#0 bis 8#177777 | 8#170360 WORD#8#170360 W#8#170360 | |
Hexadezimalzahlen | W#16#0 bis W#16#FFFF 16#0 bis 16#FFFF | 16#F0F0 WORD#16#F0F0 W#16#F0F0 | |
BCD | C#0 bis C#999 | C#55 | |
Dezimalfolge | B#(0,0) bis B#(255,255) | B#(127,200) |
DWord | ||||
Ein Operand vom Datentyp DWORD ist eine Bitfolge aus 32 Bit.
Der Datentyp DWORD kann nicht auf größer oder kleiner verglichen werden. Er kann dezimal nur mit den gleichen Daten versorgt werden, die auch die Datentypen DINT und UDINT verarbeiten können.
Länge | S7-300/400 | S7-1200 | S7-1500 |
32 Bit | |||
Format | Wertebereich | Beispiele | |
Ganzzahlen ohne Vorzeichen | -2147483648 bis 4294967295 | 15793935 DWORD#15793935 DW#15793935 | |
Dualzahlen | 2#0 bis 2#11111111111111111111111111111111 | 2#00000000111100001111111100001111 DWORD#2#00000000111100001111111100001111 DW#2#00000000111100001111111100001111 | |
Oktalzahlen | 8#0 bis 8#37777777777 | 8#74177417 DWORD#8#74177417 DW#8#74177417 | |
Hexadezimalzahlen | DW#16#00000000 bis DW#16#FFFFFFFF 16#00000000 bis 16#FFFFFFFF | 16#00F0FF0F DWORD#16#00F0FF0F DW#16#00F0FF0F | |
Dezimalfolge | B#(0,0,0,0) bis B#(255,255,255,255) | B#(127,200, 127,200) |
LWord | ||||
Ein Operand vom Datentyp LWORD ist eine Bitfolge aus 64 Bit.
Der Datentyp LWORD kann nicht auf größer oder kleiner verglichen werden. Er kann dezimal nur mit den gleichen Daten versorgt werden, die auch die Datentypen LINT und ULINT verarbeiten können.
Länge | S7-300/400 | S7-1200 | S7-1500 |
64 Bit | |||
Format | Wertebereich | Beispiele | |
Ganzzahlen ohne Vorzeichen | -9223372036854775808 bis 18446744073709551615 | 26123590360715 LWORD#26123590360715 LW#26123590360715 | |
Dualzahlen | 2#0 bis 2#1111111111111111111111111111111111111111111111111111111111111111 | 2#000000000000000000010111110000100101111010100101101111010001011 LWORD#2#000000000000000000010111110000100101111010100101101111010001011 LW#2#000000000000000000010111110000100101111010100101101111010001011 | |
Oktalzahlen | 8#0 bis 8#1777777777777777777777 | 8#13724557213 LWORD#8#13724557213 LW#8#13724557213 | |
Hexadezimalzahlen | LW#16#00000000 bis LW#16#FFFFFFFFFFFFFFFF 16#00000000 bis 16#FFFFFFFFFFFFFFFF | 16#000000005F52DE8B LWORD#16#000000005F52DE8B LW#16#000000005F52DE8B | |
Dezimalfolge | B#(0,0,0,0,0,0,0,0) bis B#(255,255,255,255,255,255,255,255) | B#(127,200,127,200,127,200,127,200) |
Ganzzahlen | ||||
Sint | ||||
Ein Operand vom Datentyp SINT (Short INTeger) hat eine Länge von 8 Bit und besteht aus zwei Komponenten: einem Vorzeichen und einem Zahlenwert im Zweierkomplement. Die Signalzustände der Bits 0 bis 6 stehen für die Größe der Zahl. Der Signalzustand von Bit 7 stellt das Vorzeichen dar. Das Vorzeichen kann den Signalzustand „0“ für positiv oder „1“ für negativ annehmen.
Bit | 7 | 4 | 3 | 0 | |||||
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | ||
Vorzeichen | |||||||||
Dezimalwerte | 32 | 8 | 2 | = 42 |
Länge | S7-300/400 | S7-1200 | S7-1500 |
8 Bit | |||
Format | Wertebereich | Beispiele | |
Ganzzahlen mit Vorzeichen | -128 bis 127 | +42 SINT#+42 | |
Dualzahlen | 2#0 bis 2#01111111 | 2#00101010 SINT#2#00101010 | |
Oktalzahlen (nur positiv) | 8#0 bis 8#177 | 8#42 SINT#8#42 | |
Hexadezimalzahlen (nur positiv) | 16#0 bis 16#7F | 16#2A SINT#16#2A |
USint | ||||
Ein Operand vom Datentyp USINT (Unsigned Short INTeger) hat eine Länge von 8 Bit und und erhält Zahlenwerte ohne Vorzeichen.
Ein Operand vom Datentyp USINT belegt im Speicher 1 Byte.
Bit | 7 | 4 | 3 | 0 | |||||
1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | ||
Dezimalwerte | 128 | 16 | 8 | 4 | = 156 |
Länge | S7-300/400 | S7-1200 | S7-1500 |
8 Bit | |||
Format | Wertebereich | Beispiele | |
Ganzzahlen ohne Vorzeichen | 0 bis 255 | 156 USINT#156 | |
Dualzahlen | 2#0 bis 2#11111111 | 2#10011100 USINT#2#10011100 | |
Oktalzahlen | 8#0 bis 8#377 | 8#156 USINT#8#156 | |
Hexadezimalzahlen | 16#0 bis 16#FF | 16#9C USINT#16#9C |
Int | ||||
Ein Operand vom Datentyp INT (INTeger) hat eine Länge von 16 Bit und besteht aus zwei Komponenten: einem Vorzeichen und einem Zahlenwert im Zweierkomplement. Die Signalzustände der Bits 0 bis 14 stehen für die Größe der Zahl. Der Signalzustand von Bit 15 stellt das Vorzeichen dar. Das Vorzeichen kann den Signalzustand „0“ für positiv oder „1“ für negativ annehmen. Ein Operand vom Datentyp INT belegt im Speicher 2 Byte.
Bit | 15 | 8 | 7 | 0 | |||||||||||||
0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | ||
Vorzeichen | |||||||||||||||||
Dezimalwerte | 512 | 64 | 8 | ||||||||||||||
= 2760 | 2048 | 128 |
Länge | S7-300/400 | S7-1200 | S7-1500 |
16 Bit | |||
Format | Wertebereich | Beispiele | |
Ganzzahlen mit Vorzeichen | -32768 bis 32767 | +2760 INT#+2760 | |
Dualzahlen (nur positiv) | 2#0 bis 2#0111111111111111 | 2#0000101011001000 INT#2#0000101011001000 | |
Oktalzahlen | 8#0 bis 8#77777 | 8#5310 INT#8#5310 | |
Hexadezimalzahlen (nur positiv) | B#16#0 bis 16#7FFF | 16#AC8 INT#16#AC8 |
UInt | ||||
Ein Operand vom Datentyp UINT (Unsigned INTeger) hat eine Länge von 16 Bit und enthält Zahlenwerte ohne Vorzeichen.
Ein Operand vom Datentyp UINT belegt im Speicher 2 Byte.
Bit | 15 | 8 | 7 | 0 | ||||||||||||
0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | |
Dezimalwerte | 1024 | 32 | 4 | 1 | ||||||||||||
= 5421 | 4096 | 256 | 8 |
Länge | S7-300/400 | S7-1200 | S7-1500 |
16 Bit | |||
Format | Wertebereich | Beispiele | |
Ganzzahlen ohne Vorzeichen | 0 bis 65535 | 65295 UINT#65295 | |
Dualzahlen | 2#0 bis 2#1111111111111111 | 2#1111111100001111 UINT#2#1111111100001111 | |
Oktalzahlen | 8#0 bis 8#177777 | 8#170360 UINT#8#177417 | |
Hexadezimalzahlen | 16#0 bis 16#FFFF | 16#FF0F UINT#16#FF0F |
DInt | ||||
Ein Operand vom Datentyp DINT (Double INTeger) hat eine Länge von 32 Bit und besteht aus zwei Komponenten: einem Vorzeichen und einem Zahlenwert im Zweierkomplement. Die Signalzustände der Bits 0 bis 30 stehen für die Größe der Zahl. Der Signalzustand von Bit 31 stellt das Vorzeichen dar. Das Vorzeichen kann den Signalzustand „0“ für positiv oder „1“ für negativ annehmen. Ein Operand vom Datentyp DINT belegt im Speicher 4 Byte.
Bit | 31 | 0 | ||||||||||||||
0 | 1 | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | 1 | ||||||
Vorzeichen | ||||||||||||||||
1073741824 | 1 |
Länge | S7-300/400 | S7-1200 | S7-1500 |
32 Bit | |||
Format | Wertebereich | Beispiele | |
Ganzzahlen mit Vorzeichen | -2147483648 bis +2147483647 | 125790 DINT#125790 L#275 | |
Dualzahlen (nur positiv) | 2#0 bis 2#01111111111111111111111111111111 | 2#00000000000000011110101101011110 DINT#2#00000000000000011110101101011110 | |
Oktalzahlen (nur positiv) | 8#0 bis 8#17777777777 | 8#365536 DINT#8#365536 | |
Hexadezimalzahlen | 16#00000000 bis 16#7FFFFFFF | 16#0001EB5E DINT#16#0001EB5E |
UDInt | ||||
Ein Operand vom Datentyp UDINT (Unsigned Double INT) hat eine Länge von 32 Bit und enthält Zahlenwerte ohne Vorzeichen.
Ein Operand vom Datentyp UDINT belegt im Speicher 4 Byte.
Bit | 31 | 0 | ||||||||||||||
1 | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | 1 | |||||||
2147483648 | 1 |
Länge | S7-300/400 | S7-1200 | S7-1500 |
32 Bit | |||
Format | Wertebereich | Beispiele | |
Ganzzahlen ohne Vorzeichen | 0 bis 4294967295 | 4042322160 UDINT#4042322160 | |
Dualzahlen | 2#0 bis 2#11111111111111111111111111111111 | 2#11110000111100001111000011110000 UDINT#2#11110000111100001111000011110000 | |
Oktalzahlen | 8#0 bis 8#377777777 77 | 8#36074170360 UDINT#8#36074170360 | |
Hexadezimalzahlen | 16#00000000 bis 16#FFFFFFFF | 16#F0F0F0F0 UDINT#16#F0F0F0F0 |
LInt | ||||
Ein Operand vom Datentyp LINT (Long INTeger) hat eine Länge von 64 Bit und besteht aus zwei Komponenten: einem Vorzeichen und einem Zahlenwert im Zweierkomplement. Die Signalzustände der Bits 0 bis 62 stehen für die Größe der Zahl. Der Signalzustand von Bit 63 stellt das Vorzeichen dar. Das Vorzeichen kann den Signalzustand „0“ für positiv oder „1“ für negativ annehmen. Ein Operand vom Datentyp LINT belegt im Speicher 8 Byte.
Bit | 63 | 0 | ||||||||||||||
0 | 1 | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | 1 | ||||||
Vorzeichen | ||||||||||||||||
4611686018427387904 | 1 |
Länge | S7-300/400 | S7-1200 | S7-1500 |
64 Bit | |||
Format | Wertebereich | ||
Ganzzahlen mit Vorzeichen | -9223372036854775808 bis +9223372036854775807 |
ULInt | ||||
Ein Operand vom Datentyp ULINT (Unsigned Long INT) hat eine Länge von 64 Bit und enthält Zahlenwerte ohne Vorzeichen.
Ein Operand vom Datentyp ULINT belegt im Speicher 8 Byte.
Bit | 63 | 0 | ||||||||||||||
1 | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | ‥ | 1 | |||||||
9223372036854775808 | 1 |
Länge | S7-300/400 | S7-1200 | S7-1500 |
64 Bit | |||
Format | Wertebereich | ||
Ganzzahlen ohne Vorzeichen | 0 bis 18446744073709551615 |
Die Angabe der Wertebereiche und Beispiele für die Dual-, Oktal- und Hexadezimalzahlen sei hier einmal wegen der vielen Einser und Nullen geschenkt. Das Prinzip ist gleich den anderen Ganzzahl-Operanden.
Gleitpunktzahlen | ||||
Real | ||||
Operanden vom Datentyp REAL haben eine Länge vom 32 Bit und werden zur Darstellung von Gleitpunktzahlen verwendet. Eine Gleitpunkzahl, auch Fließkommazahl genannt, ist die Darstellung einer Zahl in Exponentialschreibweise. Ein Operand vom Datentyp REAL besteht immer aus drei Komponenten:
Vorzeichen: Das Vorzeichen wird durch den Signalzustand von Bit 31 bestimmt. Das Bit 31 kann die Werte „0“ (positiv) und „1“ (negativ) annehmen.
8-Bit-Exponenten zur Basis 2: Der Exponent wird um eine Konstante (Basis, +127) erhöht, so dass er einen Wertebereich von 0 bis 255 aufweist.
23-Bit-Mantisse: Nur der gebrochene Anteil der Mantisse wird dargestellt. Der ganzzahlige Anteil der Mantisse ist bei normalisierten Gleitpunktzahlen immer „1“ und wird nicht gespeichert.
Beispiel: Die Zahl 1230000 kann auch mit der Zahl 1,23 * 106 dargestellt werden. 1,23 ist die Mantisse, 10 die Basis und 6 der Exponent.
Der Datentyp REAL wird mit einer Genauigkeit von 7 Stellen nach dem Komma verarbeitet.
Bit | 31 | 30 | 23 | 22 | 0 | ||||||||||
V | e | m | |||||||||||||
Vorzeichen | Exponent e | Mantisse m | |||||||||||||
(1 Bit) | (8 Bit) | (23 Bit) |
Länge | S7-300/400 | S7-1200 | S7-1500 |
32 Bit | |||
Format | Wertebereich | Beispiele | |
Gleitpunktzahlen nach IEEE754 | -3.402823e+38 bis -1.175 495e-38 ±0 +1.175 495e-38 bis +3.402823e+38 | 1.0e-5 REAL#1.0e-5 | |
Gleitpunktzahlen | 1.0 REAL#1.0 |
LReal | ||||
Operanden vom Datentyp LREAL haben eine Länge vom 64 Bit und werden zur Darstellung von Gleitpunktzahlen verwendet. Ein Operand vom Datentyp LREAL besteht immer aus drei Komponenten:
Vorzeichen: Das Vorzeichen wird durch den Signalzustand von Bit 63 bestimmt. Das Bit 63 kann die Werte „0“ (positiv) und „1“ (negativ) annehmen.
11-Bit-Exponenten zur Basis 2: Der Exponent wird um eine Konstante (Basis, +1023) erhöht, so dass er einen Wertebereich von 0 bis 2047 aufweist.
52-Bit-Mantisse: Nur der gebrochene Anteil der Mantisse wird dargestellt. Der ganzzahlige Anteil der Mantisse ist bei normalisierten Gleitpunktzahlen immer „1“ und wird nicht gespeichert.
Der Datentyp LREAL wird mit einer Genauigkeit von 15 Stellen nach dem Komma verarbeitet.
Bit | 63 | 62 | 52 | 51 | 0 | ||||||||||
V | e | m | |||||||||||||
Vorzeichen | Exponent e | Mantisse m | |||||||||||||
(1 Bit) | (11 Bit) | (52 Bit) |
Länge | S7-300/400 | S7-1200 | S7-1500 |
64 Bit | |||
Format | Wertebereich | Beispiele | |
Gleitpunktzahlen nach IEEE754 | -1.7976931348623158e+308 bis -2.2250738585072014e-308 ±0 +2.2250738585072014e-308 bis +1.7976931348623158e+308 | 1.0e-5 LREAL#1.0e-5 | |
Gleitpunktzahlen | 1.0 LREAL#1.0 |
Bei Gleitpunktzahlen werden nur die von der IEEE754 [2] Norm definierten Genauigkeiten gespeichert. Zusätzlich angegebene Dezimalstellen werden nach IEEE754 gerundet. Bei häufig geschachtelten arithmetischen Berechnungen kann sich die Anzahl der Dezimalstellen verringern. Werden mehr Dezimalstellen eingegeben als der Datentyp speichern kann, dann wird die Zahl auf den, der möglichen Genauigkeit in diesem Wertebereich, entsprechenden Wert gerundet.
Zeiten | ||||
S5Time | ||||
Der Datentyp S5TIME speichert die Zeitdauer im BCD-Format. Die Zeitdauer ist das Produkt aus einem Zeitwert im Bereich von 0 bis 999 und einer Zeitbasis. Die Zeitbasis gibt das Intervall an, in dem eine Zeit den Zeitwert um je eine Einheit vermindert, bis er „0“ erreicht. Über die Zeitbasis kann die Auflösung der Zeitwerte gesteuert werden.
Länge | S7-300/400 | S7-1200 | S7-1500 |
16 Bit | |||
Format | Wertebereich | Beispiele | |
S7-Zeit in Schritten von 10 ms (Standardwert) | S5T#0H_0M_0S_0MS bis S5T#2H_46M_30S_0MS | S5T#10s S5TIME#10s |
Zeitbasis | Binärcode | |
Bit 13 | Bit 12 | |
10ms | 0 | 0 |
100ms | 0 | 1 |
1s | 1 | 0 |
10s | 1 | 1 |
15 | Bit | 8 | 7 | Bit | 0 | ||||||||||
x | x | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
1s | 1 | 4 | 3 | ||||||||||||
Zeitbasis | Zeitwert im BCD-Format |
Auflösung | Bereich |
0,01s | 10ms bis 9s 990ms |
0,1s | 100ms bis 1m 39s 900ms |
1s | 1s bis 16m 39s |
10s | 10s bis 2h 46m 30s |
Time | ||||
Der Inhalt eines Operanden vom Datentyp TIME wird als Millisekunden interpretiert. Die Darstellung enthält Angaben für Tage (d), Stunden (h), Minuten (m), Sekunden (s) und Millisekunden (ms).
Es ist nicht erforderlich, alle Zeiteinheiten anzugeben. So ist z. B. T#5h10s gültig. Wenn nur eine Einheit angegeben wird, darf der absolute Wert an Tagen, Stunden und Minuten die oberen oder unteren Grenzwerte nicht überschreiten. Wenn mehr als eine Zeiteinheit angegeben wird, darf der Wert die Einheit 24 Tage, 23 Stunden, 59 Minuten, 59 Sekunden oder 999 Millisekunden nicht überschreiten.
Länge | S7-300/400 | S7-1200 | S7-1500 |
32 Bit | |||
Format | Wertebereich | Beispiele | |
Zeitdauer mit Vorzeichen | T#-24d20h31m23s648ms bis T#+24d20h31m23s647ms | T#10d20h30m20s630ms TIME#10d20h30m20s630ms |
LTime | ||||
Der Inhalt eines Operanden vom Datentyp LTIME wird als Nanosekunden interpretiert. Die Darstellung enthält Angaben für Tage (d), Stunden (h), Minuten (m), Sekunden (s), Millisekunden (ms), Mikrosekunden (us) und Nanosekunden (ns).
Es ist nicht erforderlich, alle Zeiteinheiten anzugeben. So ist z. B. LT#5h10s gültig. Wenn nur eine Einheit angegeben wird, darf der absolute Wert an Tagen, Stunden und Minuten die oberen oder unteren Grenzwerte nicht überschreiten. Wenn mehr als eine Zeiteinheit angegeben wird, darf der Wert die Einheit 106751 Tage, 23 Stunden, 59 Minuten, 59 Sekunden, 999 Millisekunden, 999 Mikrosekunden oder 999 Nanosekunden nicht überschreiten.
Länge | S7-300/400 | S7-1200 | S7-1500 |
64 Bit | |||
Format | Wertebereich | Beispiele | |
Zeitdauer mit Vorzeichen | LT#-106751d23h47m16s854ms775us808ns bis LT#+106751d23h47m16s854ms775us807ns | LT#11350d20h25m14s830ms652us315ns LTIME#11350d20h25m14s830ms652us315ns |
Datum und Uhrzeit | ||||
Date | ||||
Der Datentyp DATE speichert ein Datum als vorzeichenlose Ganzzahl. Die Darstellung enthält das Jahr, den Monat und den Tag.
Im Hexadezimalformat entspricht der Inhalt des Operanden DATE der Anzahl der Tage seit dem 01.01.1990 (≙16#0000).
Länge | S7-300/400 | S7-1200 | S7-1500 |
2 Byte | |||
Format | Wertebereich | Beispiele | |
IEC-Datum (Jahr-Monat-Tag) | D#1990-01-01 bis D#2168-12-31 | D#2009-12-31 DATE#2009-12-31 | |
Hexadezimalzahlen | 16#0000 bis 16#FF62 | 16#00F2 |
TOD (Time_Of_Day) | ||||
Der Datentyp TOD (TIME_OF_DAY) belegt ein Doppelwort und speichert die Anzahl der Millisekunden seit Tagesbeginn (0:00 Uhr) als vorzeichenlose Ganzzahl.
Länge | S7-300/400 | S7-1200 | S7-1500 |
4 Byte | |||
Format | Wertebereich | Beispiele | |
Tageszeit in Stunden: Minuten: Sekunden | TOD#00:00:00.000 bis TOD#23:59:59.999 | TOD#10:20:30.400 TIME_OF_DAY#10:20:30.400 |
LTOD (LTime_Of_Day) | ||||
Der Datentyp LTOD (LTIME_OF_DAY) belegt zwei Doppelworte und speichert die Anzahl der Nanosekunden seit Tagesbeginn (0:00 Uhr) als vorzeichenlose Ganzzahl.
Länge | S7-300/400 | S7-1200 | S7-1500 |
8 Byte | |||
Format | Wertebereich | Beispiele | |
Tageszeit in Stunden: Minuten: Sekunden. Millisekunden. Mikrosekunden. Nanosekunden | LTOD#00:00:00.000000000 bis LTOD#23:59:59.999999999 | LTOD#10:20:30.400_365_215 LTIME_OF_DAY#10:20:30.400_365_215 |
DT (Date_And_Time) | ||||
Der Datentyp DT (DATE_AND_TIME) speichert Angaben zu Datum und Uhrzeit im BCD-Format.
Länge | S7-300/400 | S7-1200 | S7-1500 |
8 Byte | |||
Format | Wertebereich | Beispiele | |
Datum und Uhrzeit (Jahr-Monat-Tag- Stunde:Minute: Sekunde*) | Min.: DT#1990-01-01-0:0:0 Max.: DT#2089-12-31-23:59:59.999 | DT#2008-10-25-8:12:34.567 DATE_AND_TIME#2008-10-25-08:12:34.567 |
Die Struktur des Datentyp DT:
Byte | Inhalt | Wertebereich |
0 | Jahr | 1990 bis 2089 |
1 | Monat | 0 bis 12 |
2 | Tag | 1 bis 31 |
3 | Stunde | 0 bis 23 |
4 | Minute | 0 bis 59 |
5 | Sekunde | 0 bis 59 |
6 | Millisekunde 1 | 00 bis 99 |
7 (4MSB) 3 | Millisekunde 2 | 0 bis 9 |
7 (4LSB) 4 | Wochentag | 1 bis 7 1=Sonntag |
LDT (Date_And_LTime) | ||||
Der Datentyp LDT (DATE_AND_LTIME) speichert Angaben zu Datum und Uhrzeit in Nanosekunden seit dem 01.01.1970 0:0 (≙LDT#1970-01-01-0:0:0.000000000).
Länge | S7-300/400 | S7-1200 | S7-1500 |
8 Byte | |||
Format | Wertebereich | Beispiele | |
Datum und Uhrzeit (Jahr-Monat-Tag- Stunde:Minute: Sekunde) | Min.: LDT#1970-01-01-0:0:0.000000000, 16#0 Max.: LDT#2262-04-11-23:47:16.854775807, 16#7FFF_FFFF_FFFF_FFFF | LDT#2008-10-25-8:12:34.567 |
DTL (Date_Time_Long) | ||||
Ein Operand vom Datentyp DTL hat eine Länge von 12 Byte und speichert Angaben zu Datum und Uhrzeit in einer vordefinierten Struktur.
Länge | S7-300/400 | S7-1200 | S7-1500 |
12 Byte | |||
Format | Wertebereich | Beispiele | |
Datum und Uhrzeit (Jahr-Monat-Tag- Stunde:Minute: Sekunde. Nanosekunde) | Min.: DTL#1970-01-01-00:00:00.0 Max.: DTL#2554-12-31-23:59:59.999999999 | DTL#2008-12-16-20:30:20.250 |
Die Struktur des Datentyps DTL setzt sich aus mehreren Komponenten zusammen, die jeweils einen unterschiedlichen Datentyp und Wertebereich aufweisen können. Der Datentyp eines angegebenen Werts muss dabei zum Datentyp der jeweiligen Komponente passen.
Die Struktur des Datentyp DTL:
Byte | Inhalt | Datentyp | Wertebereich |
0 | Jahr | UINT | 1970 bis 2554 |
1 | |||
2 | Monat | USINT | 1 bis 12 |
3 | Tag | USINT | 1 bis 31 |
4 | Wochentag* | USINT | 1 bis 7 1=Sonntag |
5 | Stunde | USINT | 0 bis 23 |
6 | Minute | USINT | 0 bis 59 |
7 | Sekunde | USINT | 0 bis 59 |
8 | Nanosekunde | UDINT | 0 bis 999999999 |
9 | |||
10 | |||
11 |
Zeichenfolgen | ||||
CHAR | ||||
Ein Operand vom Datentyp CHAR (Character) hat eine Länge von 8 Bit und belegt ein Byte im Speicher. Der Datentyp CHAR speichert ein einziges Zeichen, das im ASCII-Format [3] abgelegt ist. Der ASCII-Zeichensatz (American Standard Code for Information Interchange) bildet alle Zeichen ab, die man z.B. von einer PC-Tastatur kennt.
Länge | S7-300/400 | S7-1200 | S7-1500 |
8 Bit | |||
Format | Wertebereich | Beispiele | |
ASCII-Zeichen | ASCII-Zeichensatz | 'A', CHAR#'A' |
WCHAR | ||||
Ein Operand vom Datentyp WCHAR (Wide Character) hat eine Länge von 16 Bit und belegt zwei Byte im Speicher. Der Datentyp WCHAR speichert ein einziges Zeichen eines erweiterten Zeichensatzes UFT-16 (Universal Multiple-Octet Coded Character Set Transformation Format) [4] kodiert. Der gesamte Unicode-Zeichensatz wird jedoch nicht abgedeckt. Nicht darstellbare Zeichen werden mit einem Fluchtsymbol ($) sichtbar gemacht.
Länge | S7-300/400 | S7-1200 | S7-1500 |
16 Bit | |||
Format | Wertebereich | Beispiele | |
Unicode | $0000 - $D7FF | WCHAR#'A' |
STRING | ||||
Ein Operand vom Datentyp STRING speichert mehrere Zeichen in einer Zeichenkette, die aus maximal 254 Zeichen bestehen kann. In einer Zeichenkette sind alle Zeichen des ASCII-Codes zugelassen. Die Angabe der Zeichen erfolgt dabei in einfachen Anführungszeichen.
Die Maximallänge der Zeichenkette kann bei der Deklaration eines Operanden mithilfe von eckigen Klammern nach dem Schlüsselwort STRING angegeben werden (z.B. STRING[4]). Wenn die Angabe der Maximallänge weggelassen wird, wird für den jeweiligen Operanden die Standardlänge von 254 Zeichen eingestellt.
Länge (Byte) | S7-300/400 | S7-1200 | S7-1500 |
n + 2 * | |||
Format | Wertebereich | Beispiele | |
ASCII-Zeichenkette einschließlich Sonderzeichen | 0 bis 254 Zeichen | 'Name', STRING#'NAME' |
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | ||||||||||||||||||||
┌ | ─ | ┴ | ─ | ┐ | ┌ | ─ | ┴ | ─ | ┐ | ┌ | ─ | ┴ | ─ | ┐ | ┌ | ─ | ┴ | ─ | ┐ | ┌ | ─ | ┴ | ─ | ┐ |
7 | ‥ | ‥ | ‥ | 0 | 7 | ‥ | ‥ | ‥ | 0 | 7 | ‥ | ‥ | ‥ | 0 | 7 | ‥ | ‥ | ‥ | 0 | 7 | ‥ | ‥ | ‥ | 0 |
└ | ─ | ┬ | ─ | ┘ | └ | ─ | ┬ | ─ | ┘ | └ | ─ | ┬ | ─ | ┘ | └ | ─ | ┬ | ─ | ┘ | └ | ─ | ┬ | ─ | ┘ |
max. | tatsächl. | ASCII- | ASCII- | |||||||||||||||||||||
Länge | Länge | Wert | Wert | |||||||||||||||||||||
String | String | von x | von y | |||||||||||||||||||||
3 | ('xy'=2) |
Wenn die tatsächliche Länge einer angegebenen Zeichenkette kürzer als die deklarierte Maximallänge ist, werden die Zeichen rechtsbündig in die Zeichenkette geschrieben, die restlichen Zeichenplätze bleiben undefiniert. Bei der Wertbearbeitung werden nur belegte Zeichenplätze berücksichtigt.
WSTRING | ||||
Ein Operand vom Datentyp WSTRING (Wide Character String) speichert mehrere Unicode-Zeichen in einer Zeichenkette. In der Zeichenkette sind alle vom jeweiligen Anzeigesystem unterstützten Zeichen zugelassen (z.B. auch chinesisch). Die Länge der Zeichenkette kann bei der Deklaration mithilfe von eckigen Klammern nach dem Schlüsselwort WSTRING angegeben werden (WSTRING[132]). Maximal sind 16382 Zeichen möglich. Ist keine Länge angegeben, dann wird die Länge automatisch auf 254 Zeichen einstellt.
Länge (Word) | S7-300/400 | S7-1200 | S7-1500 |
n + 2 * | |||
Format | Wertebereich | Beispiele | |
Unicode-Zeichenkette, n gibt die Länge der Zeichenkette an. | Voreingestellter Wert: 0 bis 254 Zeichen Max. möglicher Wert: 0 bis 16382 | WSTRING#'Hallo Simatic' |
Quellennachweis
- [1] Die Daten dieser Seite wurden größtenteils aus dem Systemhandbuch „Simatic - Step 7 Basic V12.0 SP1 - 07/2013“ der Siemens AG entnommen
- [2] wikipedia.org/wiki/IEEE_754
- [3] wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange
- [4] wikipedia.org/wiki/UTF-16