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.