Beruflich Dokumente
Kultur Dokumente
Die Europäische Norm EN 61131-3 ist als 2. Ausgabe ab 2003 gültig und hat den Status einer
Deutschen Norm. Ihre hauptsächlichen Ziele bestehen in der Standardisierung der SPS-
Programmierung mit herstellerunabhängigen Programmiersprachen in einem einheitlichen
Programmorganisationskonzept sowie der Pflicht zur Variablendeklaration unter Verwendung
von elementaren und abgeleiteten Datentypen. Die Norm gibt auch den Befehlsvorrat für die
Programmierung vor, der in diesem Lehrbuch erst ab Kapitel 4 schrittweise eingeführt wird.
3.1 Programmiersprachen
Zur Erstellung der Steuerungsprogramme mit Hilfe einer Programmiersoftware können gemäß
DIN EN 61131-3 fünf Programmiersprachen zur Verfügung stehen: Zwei textuelle Fachspra-
chen (AWL, ST) und zwei grafische Fachsprachen (KOP, FBS) sowie die übergeordnete Ab-
laufsprache (AS), die grafische und textuelle Elemente enthält.
SPS-Programmiersprachen
Textsprachen Grafische Sprachen
Ablaufsprache
AS
Anweisungsliste Strukturierter Text Funktionsbausteinsprache Kontaktplan
AWL ST FBS KOP
Kontaktplandarstellung KOP
20 3 Grundzüge der Programmiernorm DIN EN 61131-3
3.2 Programm-Organisationseinheiten
Ein Steuerungsprogramm (Anwenderprogramm) ist ein in Programm-Organisationseinheiten
(kurz: POE) gegliederte logische Anordnung von Sprachelementen und -konstrukten. In der
Praxis wird auch einfach von Bausteintypen gesprochen.
Programm-Organisationseinheiten
Programm Funktionsbaustein Funktion
(PRG) (FB) (FC)
zunehmende Funktionalität
Funktion: Dieser POE-Typ ist geeignet, wenn ein Funktionsergebnis ausschließlich aus den
Eingangsvariablen des Bausteins zu ermitteln ist und unter dem Funktionsnamen des Bausteins
zur Verfügung gestellt werden soll. Der Aufruf einer Funktion mit denselben Werten der Ein-
gangsvariablen liefert deshalb immer denselben Ausgangswert zurück. Die SPS-Norm enthält
einen Katalog von Standardfunktionen für SPS-Systeme, die zur Verfügung stehen sollten.
Spezielle Funktionen für das eigene Anwenderprogramm können durch Deklaration selbst
erzeugt werden. Dabei ist zu beachten, dass keine internen Zustandsvariablen deklarierbar
sind, da der Bausteintyp Funktion (FC) dafür keine Speicherfähigkeit (Gedächtnis) besitzt.
Eine Funktion stellt das Funktionsergebnis unter dem deklarierten Funktionsnamen zur Verfü-
gung, so dass keine Ausgangsvariable deklariert werden muss. Es ist jedoch zulässig, Funktio-
nen mit mehreren Ausgangsvariablen zu bilden. Funktionen können innerhalb eines Pro-
grammzyklus mehrfach aufgerufen werden, um mit unterschiedlichen Werte der Eingangsvari-
ablen entsprechende Funktionsergebnisse zu ermitteln.
Funktionsbaustein: Dieser POE-Typ ist geeignet, wenn aus den Werten von Eingangs- und
Ausgangsvariablen sowie bausteininterner Zustandsvariablen neue Ergebnisse für eine oder
mehrere Ausgangsvariablen ermittelt werden sollen. Alle Werte der Ausgangs- und Zustands-
variablen bleiben von einer Bearbeitung des Funktionsbausteins bis zur folgenden erhalten.
Das bedeutet, dass es bei einer erneuten Bearbeitung des Funktionsbausteins mit denselben
Werte der Eingangsvariablen zu anderen Ausgangsergebnissen kommen kann. Anschaulich
spricht man hier von einem Bausteintyp mit Gedächtnis.
Um die Fähigkeiten eines Funktionsbausteins in einem Programm auch mehrfach nutzen zu
können, ist die so genannte Instanziierung der Funktionsbausteine erforderlich, worunter man
das Erzeugen einer Kopie (Instanz) des Bausteines versteht. Jede Instanz muss mit einem eige-
nen Namen versehen werden, unter dem die letztgültigen Variablenwerte auf entsprechenden
Speicherplätzen verwaltet werden.
Die SPS-Norm schlägt viele Standardfunktionsbausteine für SPS-Systeme vor. Daneben kön-
nen eigene Funktionsbausteine für das Anwenderprogramm selbst erzeugt werden.
Programm: Dieser POE-Typ bildet die oberste Hierarchieebene der Programm-Organisa-
tionseinheiten. Einige SPS-Systeme verwenden den Bausteintyp Programm (PRG) als alleini-
ges Hauptprogramm zur Organisation des Anwenderprogramms. Der Programminhalt eines
solchen (Haupt)-Programms besteht dann nur aus Aufrufen der Funktionen (FC) und Funkti-
onsbausteine (FB) und um deren Eingangs-/Ausgangs-Variablen mit SPS-Ein-/Ausgängen zu
verbinden. Der Gebrauch von Programmen ist identisch mit dem von Funktionsbausteinen.
3.3 Deklaration von Programm-Organisationseinheiten 21
Programm
Programm
3.4 Variablen
3.4.1 Übersicht
Eine der wichtigsten Vorschriften der SPS-Norm IEC 61131-3 ist die explizit auszuführende
Deklaration von Variablen und Konstanten mit Festlegung eines zugehörigen Datentyps. Bei
der Deklaration der Programm-Organisationseinheiten FC und FB in Kapitel 3.3.1 und 3.3.2
war es bereits erforderlich, Variablen mit einzubeziehen, jedoch nur hinsichtlich ihrer Auf-
tragsbestimmung innerhalb der Bausteine. Unterschieden wurde zwischen Eingangs-, Aus-
gangs-, Durchgangs- und internen Zustandvariablen. Auf die Bedeutung von Variablen und
ihrer Darstellungsarten sowie der verschiedenen Variablentypen wird nachfolgend näher ein-
gegangen.
Eine Variable ist ein mit einem Namen (Bezeichner) versehener Speicherplatz, der im Anwen-
derprogramm als Platzhalter für Daten fungiert, die sich zur Laufzeit des Programms ändern
können.
Unter Daten sollen hier Informationen aus technischen Anlagen verstanden werden, wie z. B.
Messdaten über Temperaturen, Füllstände, Durchflussmengen, die verarbeitet und gespeichert
werden müssen. Die Variablen sind die Mittel, um die Daten zu erfassen. Dabei wird für die
Variablen ein bestimmter Datentyp festgelegt, der Speicherplatz in passender Größe für die
Daten reserviert. Der Datentyp hängt direkt zusammen mit den auf ihn zulässigen Operationen.
Der Datentyp bestimmt durch seine Interpretation (Lesart) den Wert des Speicherinhalts.
In Funktionen (FC) und Funktionsbausteinen (FB) sollte nur mit Variablen programmiert wer-
den, um damit bibliotheksfähige Programme zu erhalten, die keine Festlegungen bezüglich der
Verwendung realer SPS-Eingänge/Ausgänge, Merker, Zähler und Zeitglieder enthalten. Erst
auf der Ebene der Programme (PRG) sollte deren Zuordnung zu den verwendeten Eingangs-
und Ausgangsvariablen erfolgen.
3.4.2 Variablen-Deklaration
Die SPS-Norm IEC 61131-3 unterscheidet die Variablen hinsichtlich
x der Anzahl ihrer Datenelemente in Einzelelement-Variablen und Multielement-Variablen,
x ihres Geltungsbereichs zwischen lokalen und globalen Variablen. Lokal bedeutet, dass die
Variable nur in dem Baustein bekannt ist, in dem sie auch deklariert wurde. Globale Vari-
ablen sind solche, die mit der Konstruktion VAR_GLOBAL ... END_VAR in allen Bau-
steinen innerhalb der SPS bekannt gemacht wurden. Der Deklarationsort für globale Vari-
ablen ist die Programm-Organisationseinheit Programm (PRG).
3.4.2.1 Einzelelement-Variablen
Einzelelement-Variablen können nur einzelne Datenelemente mit elementaren Datentypen oder
abgeleiteten Datentypen darstellen.
x Elementare Datentypen sind durch die Norm vordefiniert und dem Programmiersystem
bekannt. Tabelle 3.2 in Kapitel 3.5.1 gibt einen Einblick in die gebräuchlichsten elementa-
ren Datentypen wie BOOL, BYTE, WORD, INT, REAL, TIME, STRING usw.
x Abgeleitete Datentypen sind nach IEC 61131-3 anwender- oder herstellerdefinierte Daten-
typen. Als Beispiel für einen abgeleitete Datentyp bei Einzelelement-Variablen wird in der
Norm der Unterbereichsdatentyp erwähnt. Ein selbstdefinierter Unterbereichsdatentyp kann
z. B. mit dem Namen „SubINT“ als ein Integertyp mit eingeschränktem Zahlenbereich de-
klariert werden, falls ein Anwender so etwas benötigt.
24 3 Grundzüge der Programmiernorm DIN EN 61131-3
Die Deklaration neuer Datentypen erfolgt nach Norm mit der vorgeschriebenen Konstruk-
tion TYPE ... END_TYP in einem dafür bestimmten Menü des Programmiersystems.
Eine weitere Unterscheidung für Einzelelement-Variablen betrifft deren formale Darstellung.
Gemeint ist, ob die Einzelelement-Variablen symbolisch oder direkt dargestellt sind.
x Eine symbolische Darstellung von Variablen erfolgt im Deklarationsteil der Bausteine mit
einem Namen (Bezeichner) innerhalb der schon bekannt gemachten Schlüsselwörter VAR,
VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, VAR_TEMP und END_VAR unter An-
gabe eines Datentyps. Um den Speicherort einer solchen Variablen muss sich der Program-
mierer nicht kümmern, er wird vom Betriebssystem automatisch festgelegt.
x Eine direkte Darstellung von Variablen muss durch eine besondere Symbolik angezeigt
werden, die aus einem vorgesetzten Prozentzeichen (%), gefolgt von einem Präfix für den
Speicherort und einem Präfix für die Größe nach Tabelle 3.1 besteht. Der Hintergrund für
diese Formalität ist, dass der Gebrauch von direkt dargestellten Variablen nur in der obers-
ten Programm-Organisationseinheit Programm (PRG) zur äußeren Beschaltung der auf-
gerufen FC- und FB-Bausteine mit SPS-Eingängen/Ausgängen/Zählern und Zeitgliedern
definiert ist. Nach den Vorschriften der Norm IEC 61131-3 sind diese Operanden dem
Programm (PRG) jedoch nicht automatisch bekannt, d. h., sie müssen erst durch Deklarati-
on bekannt gemacht werden, dazu dienen die direkt dargestellten Variablen.
Beispiel 3.3: Deklaration von zwei symbolisch dargestellten Variablen und einer Konstanten
Allgemein Ausführung in Textform
VAR_INPUT VAR_INPUT
Bezeichner1, Bezeichner2: Datentyp; Spg_U1, Spg_U2: INT;
END_VAR END_VAR
VAR CONSTANT VAR CONSTANT
Bezeichner: Datentyp; Pi: REAL := 3.14;
END_VAR END_VAR
Das zur Deklaration verwendete AT ist ebenso ein Schlüsselwort wie VAR oder END_VAR.
In einer zweiten Variante können zur Erzielung einer besseren Programmlesbarkeit bei direkt
dargestellten Variablen auch Namen (Bezeichner) eingeführt werden, die jedoch im Unter-
schied zu den symbolisch dargestellten Variablen direkt mit dem physikalischen Speicherort
eines SPS-Eingangs/Ausgangs oder Merkers verbunden sind.
Beispiel 3.5: Deklaration einer direkt dargestellten Variablen mit symbolischen Namen
Allgemein Beispiel
VAR VAR
Bezeichner AT %Operand : Datentyp; Endschalter AT %IX4.7 : BOOL;
END_VAR END_VAR
3.4.2.2 Multielement-Variablen
Multielement-Variablen enthalten mehrere Datenelemente, die in Feldern oder Strukturen
zusammengefasst sind. Es kann viele Begründungen für die Anwendung von Multielement-
Variablen in Anwenderprogrammen geben. Ein einfacher Grund ist dabei, den Rückgabewert
einer Funktion FC als Multielementwert aus mehreren, aber zusammenhängenden Einzelwer-
ten bilden zu wollen. Einzelne Datenelemente von Multielement-Variablen lassen sich bei
Bedarf nach festgelegten Vorschriften ansprechen.
Felder:
Ein Feld ist eine Sammlung von Datenelementen des gleichen Datentyps, die sich durch einen
oder mehrere in eckigen Klammern [ ] angegebenen Feldindizes ansprechen lassen. Als Feld-
index dürfen in AWL-Sprache nur Einzelelement-Variablen oder ganzzahlige Literale verwen-
det werden. Bei Verwendung einer Variablen als Feldindex kann deren Wert zur Laufzeit des
Programms verändert werden (bei STEP 7-AWL nicht möglich, aber bei CoDeSys).
Ein Feld als Multielement-Variable wird mit einem Namen (Bezeichner) und der Konstruktion
ARRAY [Feldindex] OF <Datentyp der Datenelemente> und ggf. mit passenden Initialisie-
rungswerten deklariert, wie in Beispiel 3.6 gezeigt wird. Durch den Feldindex werden die
untere und obere Feldgrenze festgelegt. Es gibt ein- und mehrdimensionale Felder.
Beispiel 3.6: Eindimensionales Feld in FB-Baustein
Deklaration
VAR
Tabelle: ARRAY [0..3] OF BYTE:= 16#00, 16#0F, 16#80, 16#FF; (* Tabelle ist Feldvariable*)
END_VAR
VAR_INPUT
Zeiger: INT; (*Zeiger für Feldindex*)
END_VAR
VAR_OUTPUT
Wert: BYTE; (*Wert ist Ausgangsvariable*)
END_VAR
(*Abfrage in AWL-Sprache*)
LD Tabelle[Zeiger]
ST Wert (*Wert = 16#80, wenn Zeiger = 2*)
26 3 Grundzüge der Programmiernorm DIN EN 61131-3
Strukturen:
Eine Struktur ist eine mit einem Namen (Bezeichner) versehene Sammlung von Datenelemen-
ten mit zumeist unterschiedlichen Datentypen, die als gemeinsamer Datensatz gespeichert
werden sollen. Die einzelnen Datenelemente der Struktur sind als Variablen oder Konstanten
mit eigenem Namen (Bezeichner) und festgelegten Datentypen deklariert.
Die Strukturdeklaration erfolgt durch folgende Konstruktion:
TYPE <Strukturname>:
STRUCT
<Variablendeklaration 1>
...
<Variablendeklaration n>
END_STRUCT
END_TYPE
<Strukturname> ist ein durch Deklaration entstandener Datentyp, der im gesamten Projekt
bekannt ist und wie ein Standard Datentyp (elementarer Datentyp) benutzt werden kann.
Anwendungsfall 1: Der neue, selbstdefinierte Strukturdatentyp MOTORDAT kann in einem Baustein bei
der Deklaration einer Variablen als deren Datentyp verwendet werden. Die Norm IEC 61131-3 bezeich-
net eine solche Variable als strukturierte Variable und ordnet sie den Multielement-Variablen zu.
Der Zugriff auf Variablen von Strukturen erfolgt durch Nennung des Namens der strukturier-
ten Variablen - und, getrennt durch einen Punkt, des betreffenden Komponentennamens:
< Strukturvariablenname > . < Komponentenname >
Anwendungsfall 2: Der neue selbstdeklarierte Strukturdatentyp kann bei der Deklaration einer Funktion
FC als deren Datentyp verwendet werden, wodurch sie einen Multielement-Rückgabewert erhält.
Der Zugriff auf den Multielement-Rückgabewert einer Funktion erfolgt durch Nennung des Funktions-
namens – und, getrennt durch einen Punkt, des betreffenden Komponentennamens:
< Funktionsnname > . < Komponentenname >
Deklaration einer Funktion mit dem Namen FC 10 und dem Strukturdatentyp MOTORDAT
FUNCTION FC10: MOTORDAT (*FC10 ist der Name der Funktion*)
VAR_INPUT
Drehz: INT; (*„Drehz“ und „Strom“ sind Eingangsvariablen des FC10*)
Strom: REAL;
END_VAR
(*AWL-Programm*)
LD 400.0
ST FC10.Spg (*Komponente „Spg“ erhält den Wert 400.0 zugewiesen *)
LD Drehz
ST FC10.Freq (*Komponente „Freq“ erhält den Wert von „Drehz“ zugewiesen*)
Wird bei der Variablendeklaration keine Vorbelegung der Speicherplätze mit Datenwerten
vorgenommen, so ist der Anfangswert standardmäßig null. Mit einer Initialisierung können
andere Vorbelegungswerte zugewiesen werden. Zur Initialisierung wird der Zuweisungsopera-
tor „ := “ verwendet, z. B.:
Variable XY : INT := 10 (* Integer-Variable mit Anfangswert 10 *)
3.6 Programmstrukturen und Datenaustausch zwischen Bausteinen 29
Bild 3.2:
Lineares Programm
30 3 Grundzüge der Programmiernorm DIN EN 61131-3
Im Bild 3.4 ist ein strukturiertes Programm mit zwei Instanz-Aufrufen desselben Funktions-
bausteins FB 10 dargestellt. Die Aufrufe können in der Programmiersprache AWL bedingt
oder unbedingt mit dem Operator CAL ausgeführt werden. Mit CAL lassen sich Eingangsvari-
ablen und Ausgangsvariablen des Funktionsbausteins mit Variablenwerte versorgen. In umge-
kehrter Richtung kann das Auslesen einer Ausgangsvariablen des Funktionsbausteins nur mit
der Konstruktion <Instanz.Variablenname> erfolgen, wie in Bild 3.4 zu erkennen ist.
Bild 3.4:
Das Steuerungsprogramm besteht aus dem
Aufruf von zwei Instanzen eines FB 10.
Die Variablen Var1 bzw. Var7 und Var2
bzw. Var8 werden an die Eingangsvariablen
A bzw. B der Instanzen 1 bzw. 2 des Funk-
tionsbausteins FB 10 übergeben.
Die Ausgangsvariable X des FB 10 wird in
das Programm <PRG> mit der Konstruktion
<Instanz.Variablenname> eingelesen.
CAL INSTANZ (
E0 := Wert1,
E1 := Wert2,
E2 := Wer3)
LD INSTANZ.A4
ST Wert4
END_PROGRAM END_PROGRAM
32 3 Grundzüge der Programmiernorm DIN EN 61131-3
Beschreibung:
1. Mit CAL INSTANZ erfolgt die Über- 2. Mit dem nichtformalen Auf- 3. Die Funktion FB 1 führt
gabe von WERT1 ... WERT4 an die ruf der Funktion FB 1 werden die Berechnung des
Eingangsvariablen X, Y, Z, W der die Werte der Variablen X, Y Terms A * B / C mit den
Instanz des FB 1. und Z der Instanz des FB 1 in Variablenwerten aus und
Anschließend wird die Programm- dieser Reihenfolge an die speichert das Funktions-
weiterführung an den aufgerufenen Eingangsvariablen A, B und ergebnis im Ergebnis-
FB 1 übergeben, der mit den Werten C des FB 1 übergeben. Die register (VKE) der CPU
seiner Instanz fortfährt. Programmfortsetzung erfolgt als Zwischenergebnis ab.
im aufgerufenen FB 1. Die Programmausfüh-
rung wird danach an den
5. Das Hauptprogramm PRG setzt die 4. Der FB 1 berechnet aus dem aufrufenden FB 1 zurück-
Programmbearbeitung mit dem Rückgabewert des FB 1 und gegeben.
Ladebefehl auf die Konstruktion der Addition der Variablen M
INSTANZ . ERGEBNIS fort. Mit seiner Instanz das Ergebnis
diesem Befehl liest das Programm und speichert es in der Aus-
PRG das ERGEBNIS aus dem gangsvariablen ERGEBNIS
Funktionsbaustein ein und speichert ab.
es in seiner Variablen „Ausgabe“ ab, Die Programmweiterführung
womit ein Berechnungszyklus abge- wird an das Hauptprogramm
schlossen ist. PRG übergeben.
34 3 Grundzüge der Programmiernorm DIN EN 61131-3
3.7 Programmiersysteme
Die DIN EN 61131-3 ist die Programmiernorm für <Speicherprogrammierbare Steuerungen>
und richtet sich in erster Linie an die Hersteller von SPS-Programmiersystemen. Für den An-
wendungsprogrammierer ist die Norm eher ein Dokument im Hintergrund, denn zur Program-
mierung benötigt er ein reales Programmiersystem. Nur durch dieses Programmiersystem wird
er normgerecht oder nicht ganz normkonform programmieren. Für die Programmausführung in
einer SPS ist dies beides unerheblich, denn jedes SPS-Programm muss in die zum SPS-
Prozessor passende Maschinensprache übersetzt werden und wird dort genau die Funktionen
ausführen, die der Programmierer mit einem fehlerfreien Programm beabsichtigt hat.
Zwei derzeit weit verbreitete Entwicklungsumgebungen für industrielle Steuerungen (SPS)
sind CoDeSys und STEP 7, zu deren Handhabung eine kurz gefasste Einführung folgt, zur
Vorbereitung auf die Programmbeispiele der nachfolgenden Kapitel. Für nicht erwähnte Ge-
sichtspunkte gelten die Ausführungen zur SPS-Norm IEC 61131-3.
Bild 3.5: Struktur eines STEP 7 Projekts in der Darstellung des SIMATIC-Managers
Für reine Programmierübungen, deren Lösungen durch Simulation geprüft werden, genügt
auch eine gekürzte Projektstruktur ohne SPS-Hardware, allein mit dem S7-Programm-Ordner.
S7-Programme können in Baustein- oder Quellenform erzeugt werden. Quellen dienen bei der
S7-Programmierung allerdings nur als Basis zur Erzeugung von Bausteinen. Es steht ein Um-
wandlungsmechanismus in jeder Richtung zur Verfügung, das sind <Quelle generieren> und
3.7 Programmiersysteme 35
<Übersetzen>. Nur Bausteine können in eine S7-CPU geladen werden. Ob beim Programmie-
ren Bausteine oder Quellen erzeugt werden, hängt von der gewählten Programmiersprache
bzw. vom verwendeten Spracheditor ab. Dabei sind zwei Eingabeverfahren zu unterscheiden:
Inkrementelle Eingabe bei AWL, FUP, KOP und S7-GRAPH: Jede Zeile bzw. jedes Element
wird nach der Eingabe sofort auf syntaktische Fehler untersucht. Fehler werden angezeigt und
müssen vor dem Abspeichern verbessert werden.
Quellorientierte Eingabe bei AWL-Quelle und SCL-Programm wird in einer Textdatei editiert
und anschließend compiliert, wobei Fehler erst bei der Übersetzung angezeigt werden. Bei
vielen Beispielen in diesem Buch sind Programmausdrucke in AWL-Quelle angegeben. In
dieser Darstellungsform sind AWL-Programme in STEP 7 auch normgerecht.
Bild 3.6:
Hardware-Projektierung
einer S7-300 SPS im
HW-Konfig-Editor:
PS = Power Supply
CPU = Zentralbaugruppe
DI = 16 Digitaleingänge
DO = 16 Digitalausgänge
CP = Kommunikations-
prozessor für Profibus
Adressbereiche:
Eingänge E 0.0 bis E 1.7
Ausgänge A 4.0 bis A 5.7
3.7.1.2 Bausteintypen
STEP 7 hat eine andere Bausteinsystematik als die Norm IEC 61131-3. Es sind Organisations-
und Datenbausteine vorhanden und einige Besonderheiten bei FBs und FCs zu beachten.
Bausteine in STEP 7
Code-Bausteintypen Datenbausteintypen
(Programm) (Daten)
gehören zusammen
36 3 Grundzüge der Programmiernorm DIN EN 61131-3
Aufruf: Organisationsbausteine können nicht von anderen Bausteinen aufgerufen werden, son-
dern nur durch das Betriebssystem bei Eintreten bestimmter Situationen, die sofort eine Unter-
brechung des sonst endlos ausgeführten OB 1 veranlassen. Der OB 1 organisiert durch den
Aufruf anderer Code-Bausteine (FBs, FCs) das zyklische Programm.
Priorität: Organisationsbausteine werden entsprechend der ihnen zugeordneten Priorität im
Aufruf-Fall bearbeitet (1 = niedrigste und 29 = höchste Priorität). Der OB 1 hat die niedrigste
Priorität 1. Jeder andere OB kann daher das Hauptprogramm kurzzeitig unterbrechen und sein
eigenes Programm bearbeiten.
Funktionsbausteine mit Instanz-DB: Die SPS-Norm IEC 61131-3 verlangt für den Aufruf
eines Funktionsbausteins die Deklaration einer Instanz des FB. Das wird in STEP 7 im Prinzip
auch gemacht, es heißt aber nicht so. Verlangt wird, dass jedem aufgerufenem Funktionsbau-
stein FB ein Instanz-Datenbaustein zugeordnet und mit einem Namen versehen werden muss.
Der Instanz-DB wird dann automatisch generiert, er erscheint aber nicht in der Deklarations-
tabelle, sondern im Bausteinordner. Deshalb ist der Instanz-Datenbaustein für den Program-
mierer auch direkt zugänglich, während die normgerechte FB-Instanz irgendwo im Speicher-
bereich der CPU abgelegt und verwaltet wird.
3.7 Programmiersysteme 37
Funktion mit Ausgangsvariablen: In STEP 7 ist es normal, eine Funktion mit Ausgangs-
variablen zu deklarieren, die auch verschiedene Datentypen haben dürfen. In der SPS-Norm ist
dies erst seit der 2. Ausgabe (2004) als Ergänzung zulässig. Vorherrschend ist in der Norm
jedoch die Auffassung, dass eine Funktion nur ein Datenelement als Ergebnis (Rückgabewert)
liefern sollte, aber auch ein Multiwert in Form eines Feldes oder einer Struktur sein kann. In
STEP 7 ist diese Methode auch möglich, indem man in der Deklarations-Schnittstelle bei
<RETURN> für RET_VAL den Datentyp UDT (anwenderdefinierter Datentyp) markiert. Das
Anweisungsergebnis ist dann an den Ausgangsparameter <RET_VAL> zu übergeben. Soll die
Funktion ohne Funktionswert verwendet werden, ist bei <RETURN> als Ersatz für einen Da-
tentyp „VOID“ (typlos) anzugeben.
Der Code-Bausteintyp Funktion hat folgende Eigenschaften:
x Parametrierbarkeit, d. h., er verfügt über Bausteinparameter, die als Schnittstellen nach
außen zur Übergabe von Daten verwendet werden können.
x Grundsätzlich ohne Gedächtnis, also keine Speicherfähigkeit für bausteininterne Variablen
über den aktuellen Bausteinaufruf hinaus.
x Temporäre Lokaldatenverwendung, d. h., es können temporäre Variablen deklariert wer-
den, die nur bausteinintern gültig sind. Temporär bedeutet hier die Eigenschaft, dass diese
Daten nur innerhalb eines Bausteinaufrufes erhalten bleiben und deshalb nur zur Speiche-
rung von Zwischenergebnissen genutzt werden können.
Systemfunktionen: Systemfunktionsbausteine SFB und Systemfunktionen SFC sind fertige,
im Betriebssystem der CPU integrierte Code-Bausteine.
Datenbausteine: Datenbausteine sind Datenbereiche zur Speicherung von Anwenderdaten mit
denen das Anwenderprogramm arbeitet. Auf die gespeicherten Daten eines Datenbausteines
kann über Bit-, Byte-, Wort- und Doppelwortoperationen zugegriffen werden. Der Zugriff
kann symbolisch oder absolut erfolgen. Man unterscheidet zwei Arten von Datenbausteinen:
Global-Datenbausteine enthalten z. B. Tabellenwerte, auf die von allen Code-Bausteinen aus
zugegriffen werden kann. Global-DBs müssen vom Anwender programmiert werden.
Instanz-Datenbausteine sind, wie bereits erwähnt, Funktionsbausteinen FB fest zugeordnet. In
den Instanz-DBs stehen die Daten der statischen Lokalvariablen und Ausgangsvariablen des
aufgerufenen FBs. Für jeden Aufruf eines Funktionsbausteines ist ein eigener Instanz-DB
durch Bestätigung der Anfrage anzulegen.
Bausteinaufrufe in AWL mit CALL: In STEP 7-AWL werden sowohl Funktionsbausteine
als auch Funktionen mit dem Befehl <CALL> ohne runde Klammern und ohne Semikolons an
den Zeilenenden aufgerufen. Nach IEC 61131-3 ist der Befehl <CAL> mit Argumenten in
runden Klammern sowie Semikolons nur für Aufrufe von Funktionsbausteinen zu verwenden.
Funktionsbaustein FB: Funktion FC:
CALL FB 1, DB1 CALL FC 1
A := E 0.0 X := E 0.0
B := 1.000000e+001 Y := A 2.0
C := AW 4 Z := AW 6
Globale Symbole: In der Symboltabelle können für Eingänge, Ausgänge, Merker, Zeitglieder,
Zähler, Datenbausteine u. a., die alle ohne Deklaration in STEP 7 Programmen bekannt sind,
auch globale Symbole vereinbart werden. Nicht möglich ist die Deklaration globaler Variablen
im Sinne der SPS-Norm. Ersatzweise lassen sich temporäre Variablen im OB 1 bilden.
38 3 Grundzüge der Programmiernorm DIN EN 61131-3
3.7.1.4 Deklarations-Schnittstelle
Deklaration IN: Ein Eingangsparameter ist eine Eingangsvariable und kann innerhalb des
Code-Bausteins (FB und FC) nur abgefragt werden.
Deklaration OUT: Ein Ausgangsparameter ist eine Ausgangsvariable und soll innerhalb des
Code-Bausteins (FB und FC) nur beschrieben werden.
Deklaration IN_OUT: Ein Durchgangsparameter ist eine Durchgangsvariable und kann innerhalb
des Code-Bausteins (FB und FC) abgefragt und beschrieben werden.
Deklaration STAT: Eine interne Zustandsvariable ist zum Abspeichern von Daten über den
(*nur bei FBs*) Zyklus einer Bausteinbearbeitung hinaus vorgesehen (Gedächtnisfunktion).
Eine solche Variable heißt statische Lokalvariable, sie kann nur in einem
Funktionsbaustein FB deklariert werden.
Deklaration TEMP: Eine interne temporäre Variable dient zum Zwischenspeichern von Ergeb-
nissen innerhalb eines Zyklus der Bausteinbearbeitung und zur Datenüber-
gabe zwischen den im OB 1 aufgerufenen Bausteinen. Sie heißen temporäre
Lokalvariablen und sind deklarierbar in FB- und FC-Bausteinen.
Deklaration RETURN Beinhaltet den Rückgabewert (RET_VAL) einer Funktion FC.
(*nur bei FCs*)
3.7 Programmiersysteme 39
Deklarationsbereich
Programmbereich
hier für Funktionsplan-
eingabe, Umschalten auf
AWL bei Ansicht
Die Liste der Eingangs-Parameter kann erweitert werden. Zur Deklaration von Ausgangs-Para-
metern wird der Deklarationstyp OUT markiert und entsprechend verfahren.
Beim Aufruf des Bausteins FC 1 in Funktionsplandarstellung im OB 1 erscheinen die dekla-
rierten Eingangs- und Ausgangs-Parameter innerhalb des Bausteins auf der linken bzw. rech-
ten Seite und können mit entsprechenden SPS-Operanden versorgt werden.
40 3 Grundzüge der Programmiernorm DIN EN 61131-3
#SRO = Schrittoperand
3.7.1.8 IEC-Bibliotheken
In den STEP 7 Bibliotheken lassen sich in der Standard Library bei <System Function Blocks>
die IEC-Zähler und IEC-Zeitglieder finden. Die Einbindung dieser Funktionsbausteine erfolgt
in FUP-Darstellung mit ihren Symbolen und in Anweisungsliste AWL mit den Siemens-
Bausteinaufruf <CALL>. Für diese FBs müssen Instanz-Datenbausteine gebildet werden.
3.7.1.9 Programmtest durch Simulation (PLCSIM)
Zum Testen eines STEP 7 Programms kann eine S7-SPS durch Simulation mit PLCSIM ersetzt
werden. Dazu kann in folgenden Schritten vorgegangen werden:
1. In der Menüleiste des SIMATIC Managers <Simulation ein/aus> anklicken, es öffnet sich
S7-PLCSIM und zeigt eine CPU im Betriebszustand STOP.
3.7.2.1 Projektstruktur
Das Programmiersystem wird über Start Æ Programme Æ 3S Software Æ CoDeSys V2.3
Æ CoDeSys V2.3 gestartet. Mit Datei/Neu wird ein neues Projekt begonnen. Zuerst müssen
die Zielsystem Einstellungen für eine Steuerung ausgewählt werden. Da CoDeSys nicht von
vornherein auf eine spezielle Hardware-SPS ausgerichtet ist, muss in der auf dem Bildschirm
erscheinenden Combobox eine Auswahl getroffen werden. Im einfachsten Fall verwendet man
CoDeSys als Soft-SPS auf dem eigenen PC und markiert <3S CoDeSys SP PLCWinNT>. Zum
Betrieb auf einer Hardware-SPS müsste ein zugehöriges Laufzeitsystem installiert sein und in
den Zielsystem Einstellungen ausgewählt werden. Die Auswahl <None> entspricht der Ein-
stellung für den Simulationsmodus in CoDeSys.
In der Folge wird der erste Baustein, der im neuen Projekt anzulegen ist, von CoDeSys vorge-
schlagen und trägt automatisch den Namen PLC_PRG. Dort startet die zyklische Programm-
ausführung und von hier aus können Funktionsblöcke FB und Funktionen FC aufgerufen wer-
den. Der Baustein PLC_PRG wird bei CoDeSys im laufenden Betrieb vom Laufzeitsystem
abgerufen und abgearbeitet, ist also vergleichbar mit dem OB 1 bei STEP 7.
Ausgewählt werden kann eine Programmiersprache. Zur Auswahl stehen die fünf in der SPS-
Norm vorgesehen Sprachen und CFC (Continuous Function Chart). CFC arbeitet nicht mit
Netzwerken wie der Funktionsplan FUP, sondern mit frei platzierbaren Elementen, deren An-
schlüsse sich verbinden lassen. Dadurch sind auch Rückführungen möglich.
3.7 Programmiersysteme 43
Das Projekt kann nun mit einem Namen versehen und gespeichert werden. Die Datei trägt den
Namen des Projekts.
Deklarationen
Programm
Object Organizer
Zu einem CoDeSys Projekt gehören verschiedene Arten von Objekten, die im nachfolgenden
Bild als Registerkarten im Object Organizer zu sehen sind.
Programm
Fehlermeldungen,
Warnungen
3.7.2.2 Bibliotheken
Zu CoDeSys gehört eine Standardbibliothek (Standard.LIB), die alle von der IEC 61131-3
geforderten Funktionsbausteine enthält. Diese betreffen:
x Bistabile Elemente,
x Zähler,
x Zeitgeber und
x Flankenerkennung.
44 3 Grundzüge der Programmiernorm DIN EN 61131-3
Die Einbindung dieser Elemente in Projekt-Bausteine ist entsprechend der gewählten Pro-
grammiersprache in grafischer oder textueller Form möglich.
Die Bibliothek Standard.LIB ist jedoch nur verfügbar, wenn sie über den Bibliotheksverwalter,
den man unter Ressource im Object Organizer findet, in das Projekt eingebunden wird.
Bibliotheksverwalter
Die in der SPS-Norm ebenfalls aufgeführten <Standardfunktionen> sind bei CoDeSys bereits
im Programmiersystem fest eingebunden und daher für alle Projekte unmittelbar verfügbar.
Dabei handelt es sich hauptsächlich um:
x Bitverknüpfungs- und Bitfolgefunktionen,
x Auswahl- und Vergleichsfunktionen,
x Arithmetische- und nummerische Funktionen,
x Typumwandlungen,
x Funktionen für Zeichenfolgen.
Für grafische Sprachen sind die IEC-Standardfunktionen als <FUP-Operatoren> verfügbar. In
textuellen Sprachen werden sie als AWL-Operatoren bzw. ST-Operatoren bezeichnet und
aufgelistet.
Das Zugangsverfahren zu den Elementen der Standard.LIB und der Standardfunktionen ist bei
CoDeSys davon abhängig, ob das Anwenderprogramm in einer Text- oder Grafik-Sprache
erstellt wird.
Für die Textsprachen Anweisungsliste (AWL) und Strukturierter Text (ST) erfolgt der Zugang
über die Menüleiste bei <Einfügen> unter <Operator> für die IEC-Standardfunktionen oder
unter <Funktionsblock> für die IEC-Standard-Funktionsbausteine, wie im nachfolgenden Bild
veranschaulicht wird.
3.7 Programmiersysteme 45
IEC-Standardfunktionen
(AWL-Operatoren)
IEC-Standard-Funktions-
bausteine
IEC-Standardfunktionen (FUP-Operatoren)
Die bei den IEC-Standardfunktionen schon erwähnten Typumwandlungen sind in der Eingabe-
hilfe unter <Konvertierungen> zu finden. In STEP 7 sind solche Typumwandlungen standard-
mäßig nicht vorhanden. Im Programmierteil des Lehrbuches werden aber wichtige Typum-
wandlungen beispielhaft für die eigene Bausteinbibliothek entwickelt.
Typumwandlungen
Benutzerdefinierte Bibliotheken
Es ist in CoDeSys auch möglich eine eigene Bibliothek mit selbsterzeugten FC- und FB-
Bausteinen anzulegen, um sie in anderen Projekten wieder verwenden zu können. Dazu spei-
chert man das Projekt mit den wieder verwendbaren Bausteinen unter dem Projektnamen mit
der Standarderweiterung *.lib über <Datei> und <Speichen unter..> als Interne Bibliothek im
Verzeichnis Programme/3S Software/CoDeSys/Library ab. Von dort kann diese selbsterzeugte
Bibliothek in neue Projekte über deren Bibliotheksverwalter eingebunden werden.
3.7 Programmiersysteme 47
Ob es gelungen ist, ein Programm frei von formalen Fehler zu erstellen, zeigt sich erst, wenn
in der Menüleiste bei <Projekt> auf <Alles Übersetzen> geklickt wird. Im Meldefeld werden
eventuelle Fehler rot angezeigt und Fehlerhinweise gegeben, die allerdings auf Grund von
Fehlerfortpflanzungen irreführend sein können. Es ist daher ratsam, auch schon Programmteile
durch <Übersetzen> prüfen zu lassen.
48 3 Grundzüge der Programmiernorm DIN EN 61131-3
3.7.2.4 Simulation
Bei der Simulation wird das Anwenderprogramm nicht auf einer Hardware-SPS, sondern auf
dem PC, auf dem auch CoDeSys läuft, abgearbeitet. Damit ist es möglich, die logische Kor-
rektheit des Programms ohne Steuerungs-Hardware zu testen, allerdings erst dann, wenn zuvor
für das Steuerungsprogramm 0 Fehler und möglichst auch 0 Warnungen angezeigt wurden.
Im CoDeSys Menü kann unter <Online> der Simulationsmodus gewählt werden, der auch
schon zu Projektbeginn bei <Zielsystem Einstellung> durch die Konfiguration <None> vor-
eingestellt sein kann. Mit dem Befehl <Einloggen> verbindet sich das Programmiersystem mit
dem Simulationsprogramm und wechselt in den Online-Modus (siehe Statuszeile rechts unten).
Enthält das Programm PLC_PRG eine FB-Instanz, dann muss für die Ergebnisanzeige noch
<Instanz öffnen> über das Kontextmenü mit der rechten Maustaste eingegeben werden.
Programmdarstellung:
Simulationsdarstellung:
Werte schreiben:
Der Befehl <Werte schreiben> ermöglicht den Programmtest mit verschieden Werten, hier für
die Variable <Zeiger>. Nach Eingabe von <2> ist noch <Werte schreiben> zu bestätigen. Es
wird dann der Wert =143 angezeigt. Zuvor war natürlich eine Programmabänderung nötig auf:
CAL Instanz (Zeiger:= ). Die Rückkehr in den Offline-Modus erfolgt durch <Ausloggen>.
3.8 Exkurs: Zahlendarstellung 49
Zahlenwert = 32 + 0 + 0 + 0 + 2 + 1 = 35
Der darstellbare Zahlenumfang ist abhängig von der Wortlänge der Dualzahlen:
1. Dualzahlen im Format 4 Bit 2. Dualzahlen im Format 8 Bit = 1 Byte
3.8.2 Zweierkomplement
Die Zweierkomplement-Methode ist ein besonderes Verfahren zur Darstellung negativer Zah-
len im Dualzahlensystem. Die Grundidee besteht darin, eine negative Zahl so zu notieren, dass
sie in Addition mit der betragsgleichen positiven Zahl null ergibt.
dezimal dual
(+7) 00000111
+(–7) +????????? Wie muss diese negative Zahl dargestellt werden?
0 00000000
Für die Zweierkomplement-Arithmetik gelten folgende Regeln:
Regel 1: Das höchstwertige Bit kennzeichnet das Vorzeichen der Dualzahl.
VZ-Bit 0 ˆ positive Zahl
VZ-Bit 1 ˆ negative Zahl
Regel 2: Positive Dualzahlen werden entsprechend dem Dualcode notiert. Die größte dar-
stellbare positive Zahl ist erreicht, wenn alle nachrangigen Stellenwertigkeiten mit
Einsen besetzt sind, z. B. für 8 Bit-Zahlen die Zahl 0111 1111 ( ˆ +127):
Bit 7(VZ) 0
= Zahlenwert +1
0000 0001 = Zahlenwert 0
0000 0000
Regel 3: Negative Dualzahlen werden entsprechend ihrem Zweierkomplement notiert. Die
größte darstellbare negative Zahl ist erreicht, wenn alle nachrangigen Stellenwertig-
keiten mit Nullen besetzt sind, z. B. für 8-Bit-Zahlen die Zahl 1000 0000 ( ˆ –128):
Bit 7(VZ) 0
= Zahlenwert –127
1000 0001
= Zahlenwert –128
1000 0000
Die nachstehende Tabelle zeigt die Darstellung positiver und negativer Zahlenwerte im Dual-
zahlensystem für 4-stellige Dualzahlen:
Dezimalzahlen 0 +1 +2 +3 +4 +5 +6 +7
Dualzahlen 0000 0001 0010 0011 0100 0101 0110 0111
Dezimalzahlen –8 –7 –6 –5 –4 –3 –2 –1
Dualzahlen 1000 1001 1010 1011 1100 1101 1110 1111
Zahlenbeispiel: Zweierkomplement
Es sind die Bitmuster zur Darstellung der Zahlenwerte +7 und –7 für eine 8-stellige Dualzahl
gesucht.
Lösung:
Dualzahl Y = 0000 0111 = +7 dezimal
Y*= 1111 1001 = –7 dezimal
ermittelt
durch
Rechnung Regel Y* = Y 1
1 0000 0000 Y 0000 0111
– 0000 0111 Y 1111 1000 Invertierung
Entlehnung 1 1111 111 +1 Addition +1
1111 1001 Y* 1111 1001
Die Anwendung der Regel ist der
günstigere Weg für den Computer.
Wir probieren, ob Y* = Y 1 = 0 mit Übertrag = 1 ist.
+7 = 0000 0111
(–7) = + 1111 1001
1 1111 111 Übertrag
1 0000 0000
3.8.3 Zahlenformate
3.8.3.1 Ganzzahlen
Ganzzahlen sind ganze, mit Vorzeichen versehene Dualzahlen.
Man unterscheidet:
x Ganzzahlen mit dem Datentyp INTEGER (INT) und einer Bitkettenlänge von 16 Bits =
1 Wort, wobei das Bit Nr. 15 das Vorzeichen VZ enthält.
Bit 15 14 0
VZ 214 20
MSB LSB
Der Zahlenbereich liegt zwischen:
Z max (215 1) 32 767
positiver Zahlenbereich
0
–1
negativer Zahlenbereich
Z min (215 ) 32 768
x Ganzzahlen mit dem Datentyp DOPPELINTEGER (DINT) und einer Bitkettenlänge von
32 Bits = 1 Doppelwort = 2 Worte, wobei das Bit Nr. 31 das Vorzeichen VZ enthält.
Bit 31 30 16 15 0
31 16 15
VZ 2 2 2 20
MSB LSB
Der Zahlenbereich liegt zwischen
Z max (231 1) 2147 483 647
positiver Zahlenbereich
0
–1
negativer Zahlenbereich
Z min (231 ) 2147 483 648
2. Negative Ganzzahl
Höchster Stellenwert gleich „1“ bedeutet negative Zahl. Der Betrag der Zahl ist gleich der
Summe aller Stellenwerte, die den Signalzustand „0“ führen, vermehrt um + 1.
Bitmuster der Ganzzahl 11111111 11010100
Zahlenwert der Ganzzahl –[(32+8+2+1)+1] = – 44
Bit 31 30 23 22 0
VZ 27 20 2–1 2–23
Exponent Mantisse
Obwohl betragsmäßig kein Unterschied zwischen den Zahlen 3 und 3.0 besteht, liegen voll-
kommen verschiedene Zahlenformate vor. Die Zahl 3 ist eine Ganzzahl mit dem Datentyp
INTEGER und die Zahl 3.0 ist eine Gleitpunktzahl mit dem Datentyp REAL. Man darf die
beiden Zahlen auch nicht addieren, ohne den Datentyp einer Zahlen umzuwandeln.
Zahlenbeispiel
Wie lautet der Zahlenwert, wenn die Bitmuster-Darstellung einer Gleitpunktzahl wie folgt
gegeben ist?
VZ
P
0 0111111
01000000
00000000
00000000
Exponent Mantisse
Lösung
VZ = 0 bedeutet Vorzeichen +
Exponent: 01111110 bedeutet Exp =126
Mantisse: Bit 22 = 1 bedeutet, dass dieser Stellenwert 2–1 = 0,5 zählt,
die anderen Stellenwerte zählen nicht, da Null.
3.8.3.3 BCD-Zahlen
x Grundlagen
Um den dezimalen Wert einer Dualzahl zu erfassen, ist man besonders bei großen Zahlen auf
umständliche Berechnungen oder die Benutzung des Taschenrechners angewiesen.
Eine geschicktere Methode der Zahlendarstellung besteht darin, ein Binärwort so aufzubauen,
dass man den dezimalen Wert ziffernweise ablesen kann. Bei der nachfolgend beschriebenen
Zahlendarstellung wird unterstellt, dass man die Dualzahlen von 0000 ... 1111 direkt lesen und
verstehen kann.
Binär-codierte Dezimalzahlen werden abgekürzt als BCD-Zahlen bezeichnet. Eine vorliegende
Dezimalzahl wird ziffernweise codiert, wobei nur der binäre Zeichenvorrat (0, 1) verwendet
wird. Für die Darstellung der 10 Dezimalziffern werden mindestens 4 Binärstellen (1 Tetrade)
benötigt.
Es gibt mehrere BCD-Codes, der bekannteste ist der BCD-8421-Code. Die Ziffernfolge 8421
benennt die Stellenwertigkeit der Binärstellen innerhalb einer Tetrade. Nachfolgend werden
Zahlen, die im BCD-8421-Code codiert sind, auch einfach als BCD-Zahlen bezeichnet.
Dezimalzahlen BCD-8421-Zahlen
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
1010
1011
Nicht verwendete Kombinationen 1100
(so genannte Pseudotetraden) 1101
1110
1111
Mit 4 Tetraden = 16 Bit lässt sich ein Zahlenumfang von 0 bis 104 – 1 = 9999 darstellen.
Zahlenbeispiel: Ziffernanzeige
Eine BCD-codierte Ziffernanzeige zeigt die Zahl 80 an.
a) Welches Bitmuster weist das anliegende Binärwort auf?
b) Welche Zahl würde eine geeignete dual-codierte Ziffernanzeige beim gleichen Bitmuster
wie bei a) anzeigen?
c) Welches Ergebnis würden eine BCD-codierte Ziffernanzeige ausgeben, wenn sie mit dem
Bitmuster 0111 1111 angesteuert werden würden?
d) Welche Zahl würde eine geeignete dual-codierte Ziffernanzeige beim gleichen Bitmuster
wie bei c) anzeigen?
Lösung
Eingabe einer vorzeichenlosen 16-Bit-BCD-Zahl, die auch als solche im Programm verarbeitet
wird.
Zahlenbeispiel: Dezimalzahl 1234
Im Programm als Konstante: W # 16 # 1234
Mit BCD-Zahleneinsteller:
Bitmuster: 0001 0010 0011 0100
Eingabe einer vorzeichenbehafteten 16-Bit-BCD-Zahl, die auch als solche im Programm ver-
arbeitet wird, z. B. bei der Umwandlungsfunktion 16-Bit-BCD TO INT. Diese Funktion wertet
die links außen stehende Dekade als Vorzeichenstelle und hat dann nur noch 3 Dekaden für
den Betrag:
0xxx = positiv
1xxx = negativ
3.5.3.4 Hexadezimalzahlen
x Grundlagen
Kennzeichen der Hexadezimalzahlen ist, dass die aufsteigenden Stellenwerte Potenzen der
Basis 16 sind und ein Zeichenvorrat von 16 Zeichen zur Verfügung steht. Da 16 verschiedene
einstellige Ziffern unterschieden werden müssen, reicht der Vorrat der Ziffern 0 ... 9 nicht aus
und muss durch die „Ziffern“ A ... F ergänzt werden.
Zeichenvorrat: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Zahlenbeispiel: Hexadezimalzahl
Wie heißt die Dezimalzahl für das Hexadezimal-Zahlwort Z = 12C?
Hex-Zahlwort Z = Z2 + Z1 + Z0
Hex-Zahlwort Z 1 16 2 16 12 16 0
2 1
Die Bedeutung der hexadezimalen Darstellung von Zahlen in der Steuerungstechnik besteht
darin, dass sie eine weitverbreitete Kurzschreibweise für Dualzahlen der Wortlänge 4, 8, 16
3.8 Exkurs: Zahlendarstellung 57
und 32 Bit sind. Das ist möglich bei Kenntnis der 1-stelligen Hexadezimalzahlen, wie sie in
der nachfolgenden Tabelle gezeigt werden.
Die hexadezimale Zahlendarstellung verändert nicht den mit 16 Bit erreichbaren Zahlenum-
fang des Dualsystems, sondern bringt lediglich eine strukturierte Lesart hervor, indem man
immer 4 Bit zu einer Einheit zusammenzieht und dafür die hexadezimale Ziffer setzt, begin-
nend links vom Komma.
Zahlenbeispiel: Hexzahl
Eine 16-Bit-Dualzahl wird strukturiert geschrieben 0011 1111 1100 0101,
Für jede 4-Bit-Einheit wird gemäß Tabelle eine Hex-Ziffer gesetzt: 3 F C 5
Die Darstellungsart 3FC5 ist weniger fehleranfällig als die Schreibweise der Dualzahl.