SPS – Übersicht der Datentypen
Wie in jeder Programmiersprache hat man es bei SPS-Programmen mit unterschiedlichen Datentypen zu tun. Jeder Datentyp hat eigene Aufgaben, Wertebereiche und spezielle Eigenschaften. Je nach Datentyp werden eigene Speicherbereiche genutzt.
Beispiel:
SPS-Programme arbeiten grundlegend mit dem boolschen Datentyp. Boolsche Datentyp basiert auf der boolschen Algebra, welche wir alle aus der Schule kennen. Diese besitzt nur zwei Zustände null und eins bzw. true und false.
Mit der Zuweisung des Datentyps, weiss das Programm folgendes:
Datentyp Bool | null oder eins |
benötigter Speicherplatz | 1Bit |
Menge der darstellbaren Ziffern | 2 (entweder 0 oder 1) |
In der DIN Norm 61131 wurden verschiedenen Aufgaben Datentypen mit Hilfe von Schlüsselbegriffen zugewiesen. Die ist notwendig um strukturiert zu Programmieren, als die Lesbarkeit bzw. Verständlichkeit des programmierten Codes zu gewährleisten.
Dabei wird in zwei Gruppen von Datentypen unterschieden:
1 .Elementare Datentypen
Elementare Datentypen haben eine maximale Länge von 32 Bits.
Datentyp | Datentyp | Speicherbedarf | Wertebereich |
BOOL | boolescher Wert | 1Bit | true (logisch 1), false (logisch 0), |
BYTE | Dual- und Hexadezimalzahlen | 8 Bits | Dualzahlen 00000000 – 11111111
Hexadezimal B#16#0 – B#16#FF |
CHAR | ASCII-Zeichen | 8 Bit | Buchstaben, z.B. A, B, C … |
DATE | IEC-Datum in Schritten von
1 Tag |
16 Bit | D#1990-1-1 bis D#2168-12-31
z.B. DATE#2017-11-17 |
DINT | ganze Zahlen mit Vorzeichen | 32 Bit | -2147483648 bis +2147483648 |
DWORD | Dual- und Hexadezimalzahlen | 32 Bits | Dualzahlen von 0 bis 1111 1111 1111 1111 1111 1111 1111 1111
Hexadezimal von DW#16#0000 0000 bis DW#16#FFFF FFFF Dezimal ohne Vorzeichen von B#(0,0,0,0) bis B#(255,255,255,255) |
INT | Integer, Ganze Zahlen mit Vorzeichen | 16 Bit | -32768 bis +32768 |
REAL | reelle Zahlen | 32 Bit | Dezimalzahl mit Punkt (124,234)
Exponentialdarstellung (1.478 E+02) |
S5TIME | Zeitdauer im S5T#-Format
Step7 Zeit in Schritten von 10ms |
16 Bit | S5T#0H_0M_0S_30MS bis
S5T#2H_30M_10S_0MS und
|
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 |
WORD | Dual- und Hexadezimalzahlen | 16 Bits | Dualzahlen von 0 bis 1111 1111 1111 1111
Hexadezimal W#16#0 – W#16#FFFF BCD-Zahlen von 0 bis 999 Dezimal ohne Vorzeichen B#(0,0) bis B#(255,255) |
2. Zusammengesetzte Datentypen
Schlüsselwort | Datentyp | Beschreibung |
ARRAY | Mit diesem Datentyp definiert man ein Feld bzw. eine
Gruppierung von Komponenten gleichen Datentyps (entweder elementar oder zusammengesetzt). Es können maximal sechs Dimensionen in einem Feld definiert werden. |
Messwerte: ARRAY[1…3] OF INT; Jede
Feldkomponente wird über den Feldindex angesprochen:
L Messwerte [Index] T Messwerte [Index]
Der Index kann ein beliebiger ganzzahliger Wert von -32768 bis +32767 sein und kann zur Laufzeit des Programms nicht verändert werden. Mit Hilfe von SFC20 werden ARRAY-Variablen kopiert. |
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) |
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 |
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
Temperatur: INT; Geschwindigkeit: REAL; END_STRUCT;
In AWL sind die Komponenten einzeln ansprechbar, z.B:
T Messwerte, Geschwindigkeit
Mit Hilfe von SFC20 werden ARRAY-Variablen kopiert. |
UDT | User Defined Data Typ: Durch die Verwendung von UDTs ist es möglich große Datenmengen zu strukturieren. Dies vereinfacht das Eingeben von Datentypen bei der Erzeugung von Datenbausteinen und bei der Deklaration von Variablen. In Step7 können elementare und zusammengesetzte Datentypen verknüpft werden. Dadurch entstehen UDTs, die einen eigenen Namen haben und dadurch mehrfach verwendbar sind. |
Ein UDT ist global gültig. Ist vom Aufbau her wie ein STRUCT. |