Die Norm IEC 61131

Aufbau der Norm

Die internationale Norm IEC 61131 (europäische Norm EN 61131) ist für speicher­programmierbare Steuerungen bestimmt. Sie ist in verschiedene Teile gegliedert und soll Mindeststandards normieren.

  • Teil 1   Allgemeine ­Informationen
  • Teil 2   Betriebsmittel­anforderungen
  • Teil 3   Programmier­sprachen
  • Teil 4   Anwender­richtlinien
  • Teil 5   Kommunikation
  • Teil 6   Funktionale ­Sicherheit
  • Teil 7   Fuzzy-Control-­Prorammierung

Im Zuge der Digitalisierung wird die Norm natürlich ständig erweitert oder ergänzt. Zum Verständnis der Syntax einer SPS behandeln wir hier nur Teil 3 der Norm über die Programmiersprachen ausführlicher, also IEC 61131-3.

IEC 61131-1

In Teil 1 der Norm sind allgemeine Informationen für Speicher­programmierbare Steuerungen in Nieder­spannungsanlagen bis zu 1000V AC (50/60Hz) oder bis zu 1500V DC** . Hier werden die Begriffe zur Verwendung in den anderen Teilen dieser Norm definiert.
AC = Wechselspannung  **  DC = Gleichspannung

IEC 61131-2

Teil 2 spezifiziert die elektrischen, mechanischen und funktionellen Anforderungen für Speicher­programmierbare Steuerungen und zugehörige Peripherie­geräte, Informationen, die vom Hersteller mitgeliefert werden müssen und anwendbare Prüfmethoden bzw.­Verfahrensweisen.

IEC 61131-3

Teil 3 behandelt die Programmier­sprachen für eine SPS, wie sie in Teil 1 definiert sind. Zur Darstellung auf Drucker und Bildschirm ist der Zeichensatz ISO 646[1]  anzuwenden. Die am meisten genutzten Programmier­sprachen AWL, KOP, FBS, AS und ST wurden harmonisiert.

IEC 61131-4

Teil 4 beschreibt die Anwender­richtlinien von SPS-Systemen. Es werden Hinweise für alle Phasen eines Projektes, von der System­analyse über Spezifikation und Auswahl der Geräte bis zur Anwendung und Wartung der Geräte gegeben.

IEC 61131-5

Dieser Teil legt Kommunikations­aspekte einer SPS fest. Im Prinzip ist die Kopplung mit PCs über definierte Schnitt­stellen beschrieben.

IEC 61131-6

Teil 6 legt die Anforderungen an eine SPS und die zugehörigen Peripherie­geräte als sicherheits­bezogenes System fest.

IEC 61131-7

Dieser Teil definiert eine Sprache für die Programmierung von Fuzzy-Control-Anwendungen für eine SPS.

IEC 61131-3
Programme

IEC 61131 definiert ein Programm als „eine logische Anordnung aller Programm-Sprachelemente und Programm-Konstrukte, die für die beabsichtigte Signalverarbeitung zur Steuerung einer Maschine bzw. eines Prozesses mit einer SPS erforderlich sind.“

Zur Erfüllung der Norm darf ein Programm
  • nur Eigenschaften benutzen, die in diesem Teil zum Gebrauch der jeweiligen Sprache festgelegt sind
  • keine Eigenschaften benutzen, die als Erweiterungen der Sprache gelten
  • von keiner bestimmten Interpretation implementierungs­abhängiger Eigenschaften abhängen
Normgerechte Programme müssen auf jeder normgerechten SPS die gleichen Ergebnisse liefern. Ausnahmen bilden nur Programme die Abhängig sind
  • vom Zeitverhalten der Programmausführung, der Anwendung
  • von implementierungs­abhängigen Eigenschaften im Programm
  • von der Ausführung von Prozeduren**  zur Fehlerbehandlung
Implementierung = Einbau, Einarbeitung, Integration, also eine Erweiterung oder ein Unterprogramm in ein bestehendes Programm einfügen, ins­besondere um den Funktions­umfang des über­geordneten Programms zu erweitern
** Unter Prozedur versteht man bei der Programmierung Programm­teile mit Anweisungen, die über ihren Namen aufgerufen und dadurch innerhalb eines Programmes mehrfach verwendet werden können. Dies kann z.B. ein Unter­programm sein.
Programmiersprachen

IEC 61131-3 legt die Syntax und Semantik**  einer vereinheit­lichten Reihe von Programmier­sprachen für eine SPS fest.

Die am meisten genutzten Programmiersprachen sind

  • AWL   = Anweisungsliste
  • KOP    = Kontaktplan
  • FBS     = Funktionsbaustein-Sprache (FUP)
  • AS      = Ablaufsprache
  • ST      = Strukturierter Text

Je nach SPS, Programmiergerät oder wie die heutzutage übliche Programmier-Software auf einem Notebook oder PC müssen nicht unbedingt alle Programmier­sprachen zur Verfügung stehen. Der Einsatz oder die Umwandlung zwischen den einzelnen Sprachen ist herstellerabhängig.

Der Begriff Syntax ist ein Teilgebiet der Grammatik und bezeichnet die Lehre vom Satzaufbau. Beim Programmieren werden formale Regeln über zulässige Sprach­elemente einer Programmier­sprache festgelegt. Weiterhin wird festgelegt, inwieweit diese Sprach­elemente in einem Programm verwendet werden dürfen.
**  Die Semantik wird auch Bedeutungs­lehre genannt und befasst sich mit den Bedeutungen sprachlicher Zeichen und Zeichen­folgen. Auf eine SPS bezogen also auf die Bedeutungen der Programm­befehle.
Steuerungsanweisung

Damit eine SPS überhaupt richtig arbeiten kann sind eindeutige Befehle unerlässlich. Ein Befehl oder auch eine (Steuerungs-)Anweisung besteht aus einem Operationsteil, einem Operandenteil und einer eindeutigen Adresse.
Die Mnemonik[2]   kann bei Siemens Step7 oder TIA-Portal zwischen IEC oder Step7 umgeschaltet werden. Einige andere Hersteller bieten diese Umschaltung auch, einige andere verwenden jedoch nur die Mnemonik nach IEC 61131.
Eine Adresse kann ein Bit, Byte, Wort oder Doppelwort sein, wobei einer Adresse auch noch verschiedene Datentypen wie z.B. Bool, Byte, Char, Int oder Real zugewiesen bzw. zugeordnet werden.
Hier an dieser Stelle ist nur ein kleiner Auszug möglicher Operationen und Operanden.

Operationsteil
Was soll gemacht werden?
IEC Step7 Bedeutung
AND U Und
OR O Oder
N N Nicht
ST = Zuweisen
S S Setzen
R R Rücksetzen
XOR XOR exklusives OR
Operandenteil
Womit soll etwas gemacht werden?
IEC Step7 Bedeutung
I E Eingang
Q A Ausgang
M M Merker
TR T Timer
CT C Counter
X X Einzelbit
B B Byte
Elementare Datentypen

In der Norm 61131 werden verschiedene Aufgaben Datentypen anhand von Schlüsselbegriffen zugewiesen. Jeder Datentyp hat eigene Aufgaben, Wertebereiche und Eigenschaften. Dadurch kann ein SPS-Programm strukturiert, gut lesbar und verständlich erstellt werden.
Die hier angegebenen Datenlängen in Bits sind nicht verbindlich für jede SPS. Sie sind systemabhängig und können je nach SPS bei Zeit, Datum und String varieren. Für die Siemens S7-1200 oder S7-1500 sollten sie aber passen.

Schlüsselwort Datentyp Bits
BOOL boolescher Wert 1
BYTE Dual- und
Hexadezimalzahlen
8
WORD Dual- und
Hexadezimalzahlen
16
DWORD Dual- und
Hexadezimalzahlen
32
LWORD Dual- und
Hexadezimalzahlen
64
REAL reelle Zahl 32
LREAL lange reelle Zahl 64
CHAR Character
ASCII-Zeichen
8
WCHAR Character
ASCII-Zeichen
16
Schlüsselwort Datentyp Bits
SINT short integer
kurze ganze Zahl
mit Vorzeichen
8
INT integer - ganze Zahl
mit Vorzeichen
16
DINT double integer
doppelte ganze Zahl
mit Vorzeichen
32
LINT long integer
lange ganze Zahl
mit Vorzeichen
64
USINT short integer
kurze ganze Zahl
ohne Vorzeichen
8
UINT integer - ganze Zahl
ohne Vorzeichen
16
Schlüsselwort Datentyp Bits
UDINT double integer
doppelte ganze Zahl
ohne Vorzeichen
32
ULINT long integer
lange ganze Zahl
ohne Vorzeichen
64
TIME Zeitdauer (IEC)
32
LTIME Zeitdauer (IEC)
64
S5TIME Zeitdauer Siemens
S5T# Format
16
TOD TIME_OF_DAY
Uhrzeit / Tageszeit
32
DT DATE_AND_TIME
Datum und Uhrzeit
64
STRING variabel-lange
Zeichenfolge
Die Anweisungsliste (AWL)

Die Anweisungsliste ist eine Reihenfolge von Anweisungen. Hier sind einige Konventionen einzuhalten:

  • Jede Anweisung muss in einer neuen Zeile beginnen
  • Jede Anweisung muss aus Operationsteil, Operandenteil und eindeutigen Adresse bestehen
  • Mehrere Operanden sind durch Komma zu trennen
  • Der Anweisung kann eine identifizierende Marke gefolgt von einem Doppelpunkt vorangehen
  • Leerzeilen können/dürfen vorhanden sein
  • Ein Kommentar ist das letzte Element einer Zeile

Eine einfache „Motor ein/aus“ Schaltung soll hier als Beispiel dienen. Taster „S1“ schaltet das Hauptschütz„Q1“ ein. „Q1“ zieht an und hält sich selbst über den Hilfskontakt „Q1 13|14“ Mit Taster „S2“ wird der Motor wieder aus­geschaltet. Im Beispiel wurde bewusst auf ein Motor­schutz verzichtet! Für die Steuerung mit SPS wurden im Beispiel die Taster „S1“ auf SPS-Eingang 1.0 und „S2“ auf Eingang 1.1 an­geschlossen. Das Motor­schütz „Q1“ wird vom SPS-Ausgang 2.0 angesteuert. Mit den Ein­gängen „1.0“, „1.1“ und dem Aus­gang „2.0“ wurden ein­deutige Adressen vom Typ BOOL zugewiesen.

Motorschaltung ein/aus mit Schütz<
"Motorschaltung ein/aus" mit Schütz
Motorschaltung ein/aus mit SPS
"Motorschaltung ein/aus" mit SPS

Die Anweisungsliste verdeutlicht sichtbar die Vorgaben der IEC 61131, dass eine Anweisung aus Operationsteil O (Oder), Operandenteil E (Eingang) und eindeutiger Adresse 1.0 (Byte 1, Bit 0) besteht.
Oder Ausgang 2.0 (Byte 2, Bit 0)
Und Eingang 1.1 (Byte 1, Bit 1)
= Zuweisung, gleich Ausgang 2.0 (Byte 2, Bit 0).
Ist das Verknüpfungs­ergebnis (VKE) „1“ ist, wechselt der Ausgang 2.0 seinen Zustand von logisch „0“ auf logisch „1“ und der Motor „läuft“.

Anweisungsliste mit Step7-Software
AWL mit Step7
Anweisungsliste mit TIA-Portal Software
AWL mit TIA-Portal

Von der Logik her sieht die Anweisungsliste dem Schaltplan mit Schützen verdammt ähnlich. Eine Besonderheit in dem angeführten Beispiel sind die Programmzeilen „U(“ und „)“. Die Klammern legen, wie in der Mathematik, fest, in welcher Reihenfolge der Programmcode abgearbeitet wird. Im Beispiel wird die ODER-Verknüpfung innerhalb der Klammern vor der einleitenden UND-Verknüpfung abgearbeitet.
Im gezeigten Beispiel ist noch etwas auffällig: Der Programm­code mit der TIA-Portal-Software unterscheidet sich durch das zusätzliche Prozent­zeichen „%“ vor jeder Adresse von der (veralteten) Step7-Software. IEC 61131 setzt für Einzelelement-Variablen zwingend das Prozent­zeichen an den Anfang der Variablen voraus. Zu Einzel­element-Variablen zählen z.B. auch Merker, Ein- oder Ausgänge.

Der Kontaktplan (KOP)

Auch ein KOP-Netzwerk ist in der Norm ziemlich umfangreich definiert. An dieser Stelle nur die wichtigsten Regeln:

  • Ein KOP-Netzwerk wird links und rechts durch jeweils eine senkrechte „Stromschiene“ begrenzt
  • Der Zustand der linken „Strom­schiene“ ist immer „EIN“
  • Der Zustand der rechten „Stromschiene“ ist undefiniert
  • Das waagerechte Verbindungs­element überträgt den Zustand der unmittelbaren linken Seite auf die unmittelbare rechte Seite des Elements
  • Der Zustand des Verbindungs­elementes wird gemäß dem Stromfluss als „EIN“ oder „AUS“ bezeichnet. Dies entspricht den booleschen Werten „0“ und „1“

Wenn man den Kontakt­plan wie einen „normalen“ elektrischen Schalt­plan liest, ist man immer auf der richtigen Seite. Das Verbindungs­element —| |— entspricht einem Schließer­kontakt, dieses Zeichen —|⁄|— einem Öffner­kontakt und —( )— z.B. einer Spule oder Lampe.

Kontaktplan mit Step7-Software
KOP mit Step7
Kontaktplan mit TIA-Portal Software
KOP mit TIA-Portal
Der Funktionsplan (FBS)

Dank Siemens Step7 hat sich die Bezeichnung FUP (Funktionsplan) gegenüber der IEC-Bezeichnung Funktionsbaustein-Sprache (FBS) durchgesetzt. Nichtsdestotrotz ist aber auch ein FUP-Netzwerk definiert:

  • Elemente der Sprache FUP/FBS müssen durch Signalfluss-Linien begrenzt werden
  • Ausgänge von Funktionsbausteinen dürfen nicht miteinander verbunden werden
  • Die Auswertung eines Netzwerkes muss vollendet sein, bevor die Auswertung eines folgenden Netzwerkes beginnen darf, wenn das folgende Netzwerk Ausgänge des vorherigen Netzwerkes benutzt

Funktionsplan mit Step7-Software
FUP mit Step7
Funktionsplan mit TIA-Portal Software
FUP mit TIA-Portal
Die Ablaufsprache (AS)

Die Ablaufsprache[3]   ist eine grafische Schrittketten-Sprache, die bei Step7 unter dem Namen S7-GRAPH bekannt ist.

  • Ein Schritt ist grafisch durch einen Block darzustellen und muss einen Schrittnamen haben
  • Zu einem Schritt gehört eine oder mehrere Aktionen, z.B. das Setzen eines Ausgangs
  • In Transitionen werden die Weiter­schalt­bedingungen definiert
  • Der nächste Schritt wird freigegeben, wenn die Transitions­bedingung des voran­gegangenen Schrittes erfüllt ist

S7-GRAPH Schrittkette
S7-GRAPH Schrittkette
S7-GRAPH Aktion und Transition
S7-GRAPH Aktion und Transition

Fortsetzung folgt irgendwann..
irgendwann...