siehe auch Timer S7
Die Norm DIN EN 61131-3 hat für die Steuerungstechnik eine gewisse Menge von bekannten Datentypen zur Benutzung anerkannt und für normgerechte SPS Programmiersysteme festgelegt. Damit wurde auch die Schreibweise von Datentypen durch reservierte Schlüsselwörter festgelegt. Diese Schlüsselwörter dürfen nicht für andere Zwecke verwendet werden.
Vor allem bei der Deklaration von Variablen eines Steuerungsprogramms werden diese Datentypen benötigt. Innerhalb des Steuerungsprogramms haben diese Datentypen einen bestimmenden Einfluß auf die zulässigen Operationen sowie auf den möglichen Wertebereich von Daten.
Nachfolgend sind die wichtigsten elementaren Datentypen und die zusammengesetzten Datentypen tabellarisch aufgelistet welche man beim Programmieren mit Step7 kennen muß. Allerdings muß bemerkt werden das bei der Auflistung der elementaren Datentypen der in Step7 benutzte Datentyp S5TIME außerhalb der SPS-Norm liegt.
Elementare Datentypen sind maximal 32 Bit lang. Dies entspricht auch der Wortlänge eines Akkumulators einer S7-CPU. Die elementaren Datentypen sind vordefiniert was bedeutet das sie unveränderbar festgelegt sind. Für einen S7-Programmierer heißt das dass er einer deklarierten Variablen einen elementaren Datentyp zuordnen muß (Beispiel: Der Eingang E3.2 ist vom Datentyp BOOL). Bei den zusammengesetzten Datentypen ist das anders.
| Schlüsselwort | Datentyp | Größe | Schreibweise und Wertebereich |
|---|---|---|---|
| Bit-Datentyp | |||
| BOOL | Boolesche Variable | 1Bit | False (logisch "0"), True (logisch "1") |
| BYTE | Zusammenhängende Bit-Folge (8 Bit) und 8-BitHex-Zahlen | 8 Bit | B#16#0 bis B#16#FF |
| WORD | Zusammenhängende Bitfolge (16 Bit) und 16 Bit-Hex-Zahlen | 16 Bit | Dualzahlen von 0 bis 1111 1111 1111 1111 Hexadezimalzahlen von W#16#0 bis W#16#FFFF BCD-Zahlen von 0 bis 999 Dezimalzahlen ohne Vorzeichen von B#(0,0) bis B#(255,255) |
| DWORD | Zusammenhängende Bitfolge (32 Bit) und 32 Bit-Hex-Zahlen | 32 Bit | Dualzahlen von 0 bis 1111 1111 1111 1111 1111 1111 1111 1111 Hexadezimalzahlen von DW#16#0000 0000 bis DW#16#FFFF FFFF Dezimalzahlen ohne Vorzeichen von B#(0,0,0,0) bis B#(255,255,255,255) |
| CHAR | ASCII-Zeichen | 8 Bit | ’A’ |
| Arithmetische Typen | |||
| INT | Ganze Zahlen mit Vorzeichen(Festpunktzahlen) | 16 Bit | -32768 bis +32768 |
| DINT | Ganze Zahlen mit Vorzeichen (Festpunktzahlen) | 32 Bit | -2147483648 bis +2147483648 |
| REAL | Reelle Zahlen (IEEE Gleitpunktzahlen) |
32 Bit | Dezimalzahl mit Punkt (156,235) Exponentialdarstellung (1.568 E+04) |
| Zeittypen Timer Step7® |
|||
| S5TIME | Zeitdauer im S5T#-Format Step7® Zeit in Schritten von 10ms |
16 Bit | S5T#0H_0M_0S_10MS bis S5T#2H_46M_30S_0MS und S5T#0H_0M_0S_0MS |
| TIME | Zeitdauer im IEC-Format IEC-Zeit in Schritten von 1ms, Ganzzahl mit Vorzeichen |
32 Bit | -T#24D_20H_31M_23S_648MS bis T#24D_20H_31M_23S_647MS |
| TIME_OF_DAY | Uhrzeit (Tageszeit) in Schritten von 1ms |
32 Bit | TOD#0:0:0.0 bis TOD#23:59:59.999 z.B. TIME_OF_DAY#23:59:59,9 |
| DATE | IEC-Datum in Schritten von 1 Tag |
16 Bit | D#1990-1-1 bis D#2168-12-31 z.B. DATE#2006-05-10 |
Für BCD-Zahlen gibt es keinen besonderen Datentypen in der Norm, auch nicht in Step7. BCD-Zahlen werden als Hexadezimalzahlen eingegeben wobei man die Datentypen BYTE, WORD und DWORD und die Ziffern 0 bis 9 verwendet. Am Beispiel des Datentyps WORD würde die Eingabe zur Erzeugung der vierstelligen BCD-Zahlen "1234" so aussehen: (W#)16#1234. Davon unberührt existiert nach wie vor auch noch das BCD-Zahlenformat. Dafür gibt es entsprechende Codeumsetzer, z.B. ITB (INTEGER nach BCD).
In Step7 benutzt man neben den elementaren Datentypen auch noch die zusammengesetzten Datentypen. Mit den zusammengetzten Datentypen werden Datengruppen definiert die größer als 32 Bit sind. In Step7 kann man folgende zusammengesetzte Datentypen definieren:
| Schlüsselwort | Datentyp | Schreibweise und Erklärung | ||||||
|---|---|---|---|---|---|---|---|---|
| DATE_AND_ TIME |
DATE_AND_TIME definiert einen Bereich mit 64 Bits (8 Bytes) und wird in einem binärcodierten Dezimalformat gespeichert. | DT#1990-1-1-0:0:0.0 bis DT#2089-12-31-23:59:59.999 (erlaubter Bereich für die Eingabe von Datum und Zeit) | ||||||
| ARRAY | Mit diesem Datentyp definiert man ein Feld bzw. eine Gruppierung von Komponenten gleichen Datentyps (entweder elementar oder zusammengesetzt). Man kann maximal 6 Dimensionen in einem Feld definieren. | Messwerte: ARRAY[1...3] OF INT; Jede
Index ist ein fester Wert und kann zur Laufzeit des Programms nicht verändert werden, d.h. es ist keine Variablen-indizierung möglich. Der Index kann ein beliebiger ganzzahliger Wert von -32768 bis +32767 sein. Der Inhalt einer ARRAY-Variablen ist mit der Systemfunktion SCF 20 "BLKMOV" kopierbar. |
||||||
| STRUCT | Mit dem Datentyp STRUCT kann man eine Gruppierung von beliebig kombinierten Datentypen bzw. Komponenten definieren, z. B. ein Feld aus Strukturen oder eine Struktur aus Strukturen und Feldern. | Messwerte: STRUCT
Alle Komponenten mit einfachem Datentyp sind einzeln mit AWL-Anweisungen ansprechbar, z.B:
STRUCT-Variablen können mit der Systemfunktion SFC 20 "BLKMOV" kopiert werden. |
||||||
| FB, SFB | Mit FB oder SFB wird die Struktur des zugeordneten Instanzdatenbausteins bestimmt. | Die Bestimmung der Struktur ermöglicht die Übergabe von Instanzdaten für mehrere FB-Aufrufe innerhalb eines Instanzdatenbausteins. | ||||||
| UDT | User Defined Data Typ =Anwenderdefinierter Datentyp:
Durch die Verwendung von UDTs ist es möglich große Datenmengen zu strukturieren. Dies verein-facht das Eingeben von Datentypen bei der Er-zeugung von Datenbausteinen und bei der Deklaration von Variablen. In Step7 können elementare und zusammengesetzte Datentypen verknüpft werden. Dadurch ent-stehen UDTs, anwenderdefinierte Datentypen, die einen eigenen Namen haben und dadurch mehrfach verwendbar sind. |
Ein UDT entsteht durch Deklaration über
Sein Name ist UDTn (n = Nummer) oder ein symbolischer Name und ist global in allen Bausteinen gültig und bekannt. Der Datentyp UDT entspricht dem Aufbau der Datenstruktur STRUCT. Daher können UDT-Komponenten ebenso angesprochen werden wie die STRUCT-Komponenten, z.B.: L Analogwert.Alarme.Messwert_zu_hoch |