+1 500 000 Produkte im Angebot
6000 Pakete jeden Tag
+300 000 Kunden aus 150 Ländern
Datum der Veröffentlichung: 14-03-2025 🕒 6 Min. Lesezeit
PLC-Steuerungen werden in der Industrie weit verbreitet eingesetzt, überall dort, wo die Kontrolle von Parametern und die Steuerung von Prozessen erforderlich sind. Die Entwicklung der eingebetteten Elektronik hat dazu geführt, dass es sich um Geräte mit hohen Leistungsparametern handelt, die unempfindlich gegenüber EMI-Störungen und Umgebungsbedingungen sind und gleichzeitig benutzerfreundlich sind. Anders als früher sind die Umgebungen zur Erstellung von Programmen sehr ähnlich und in den meisten von ihnen kann man eine Programmausführung finden, die einem zusagt. Wie programmiert man also eine PLC-Steuerung?
Die Programmiersprachen von PLC-Steuerungen wurden Gegenstand der Norm IEC 61131, die 2013 veröffentlicht wurde. Im Teil 3 dieser Norm sind Empfehlungen zu den Sprachen und Methoden der Programmierung von PLC-Steuerungen enthalten. Neben Datentypen, Variablen, Konfiguration und deren Beschreibung, Programmeinheiten und objektorientierten Programmierregeln werden fünf grundlegende Programmiersprachen für PLC-Steuerungen aufgeführt und Anforderungen an deren Funktionalität definiert. Aufgrund dieser Norm sind die grundlegenden Programmiersprachen, die von PLC-Programmierern verwendet werden:
Die am weitesten verbreitete und in allen Umgebungen zur Erstellung von Programmen für PLC verfügbare Sprache ist das Ladder Diagram LD (oder LAD). Es handelt sich um eine grafische Sprache, die jedoch einfache Symbole verwendet, sodass in älteren Lösungen Semigrafiken mit Standard-ASCII-Zeichen verwendet wurden. Diese Zeichen ließen sich auch auf dem PLC-Bildschirm leicht darstellen, was die Erstellung einfacher Ad-hoc-Programme ohne Verwendung eines PCs ermöglichte. In dieser Sprache wird das Programmschema mit Symbolen erstellt, die den in elektrischen Schaltplänen verwendeten – Spulen und Kontakten – ähneln. Kontakte können normalerweise offen (NO) oder normalerweise geschlossen (NC) sein, und Spulen können verschiedene Funktionen haben, wie Einstellen, Rücksetzen oder Negieren. Hier können auch Funktionen und ganze Funktionsblöcke eingefügt werden, wie Timer, Zähler oder Flip-Flops. Die Ladder-Sprache ist auch für einen unerfahrenen Programmierer verständlich.
Abbildung 1. Fragment eines Programms in der Ladder-Sprache LD (LAD)
Eine weitere sehr intuitive Programmiermethode, insbesondere für Personen, die mit der digitalen Technik vertraut sind, ist das Funktionsblockdiagramm FBD. Ein Beispiel eines mit FBD erstellten „Codes“ ist in Abbildung 2 dargestellt. Die einzelnen Eingänge, Ausgänge und Operationen werden durch Funktionsblöcke und Gatter dargestellt, die nicht nur logische Funktionen ausführen, sondern auch Signale gemäß einem vorgegebenen Algorithmus verarbeiten können. Zu den Funktionsblöcken gehören PID-Regler, eine breite Palette von Signalgeneratoren, Zählern und andere. Einige Entwicklungsumgebungen ermöglichen auch die Definition eigener Blöcke mit der erforderlichen Funktionalität. FBD ist eine grafische Sprache. Die einzelnen Blöcke werden auf dem Schema angeordnet und miteinander verbunden, was dem Zeichnen von logischen Schaltungen ähnelt. Einige Entwicklungsumgebungen ermöglichen nicht nur das Verbinden von Ein- und Ausgängen, sondern auch das Erstellen von Bussen und Referenzen, die eine Reihe von Parametern übertragen (in Abbildung 2 werden Busse durch fettgedruckte Linien dargestellt – hier übertragen sie mehrbitige Konstanten und Variablen).
Abbildung 2. Beispiel eines mit FBD erstellten Programms
Der strukturierte Text ST ist eine Hochsprache, die an die einst sehr beliebte Sprache Pascal erinnert. Sie ermöglicht komplexere Operationen, deren Darstellung nicht durch ein Gewirr von Linien auf dem Bildschirm und deren Durchführung wie bei FBD begrenzt ist, was oft einen großen Monitor mit guter Auflösung erfordert. Das Programmieren in ST ähnelt dem Erstellen von Code in traditionellen Programmiersprachen für PCs. Unterstützt werden komplexe Anweisungen wie repeat…until-Schleifen, do…while, bedingte Anweisungen if…then…else, case und mathematische Funktionen sqrt(), sin(). Wichtig ist, dass unabhängig vom Hersteller der Hardware oder der Umgebung die Funktionen der Sprache ST für sie gemeinsam sind und in der Norm IEC 61131 definiert wurden. Da die erwähnte Norm die Kombination der darin aufgeführten Sprachen erlaubt, kann ST auch verwendet werden, um „Einschübe“ oder benutzerdefinierte FBD-Blöcke zu erstellen.
Listing 1. Beispiel einer Funktion in der Sprache ST
//=======================================================================
// Function Block Timed Counter : Incremental count of the timed interval
//=======================================================================
FUNCTION_BLOCK FB_Timed_Counter
VAR_INPUT
//Trigger signal to begin Timed Counting
Execute : BOOL := FALSE;
//Enter Cycle Time (Seconds) between counts
Time_Increment : REAL := 1.25;
//Number of Desired Count Cycles
Count_Cycles : INT := 20;
END_VAR
VAR_OUTPUT
//One Shot Bit indicating Timer Cycle Done
Timer_Done_Bit : BOOL := FALSE;
//Output Bit indicating the Count is complete
Count_Complete : BOOL := FALSE;
//Accumulating Value of Counter
Current_Count : INT := 0;
END_VAR
VAR
//Timer FB from Command Library
CycleTimer : TON;
//Counter FB from Command Library
CycleCounter : CTU;
//Converted Time_Increment in Seconds to MS
TimerPreset : TIME;
END_VAR
// Start of Function Block programming
TimerPreset := REAL_TO_TIME(in := Time_Increment) * 1000;
CycleTimer(
in := Execute AND NOT CycleTimer.Q,
pt := TimerPreset);
Timer_Done_Bit := CycleTimer.Q;
CycleCounter(
cu := CycleTimer.Q,
r := NOT Execute,
pv := Count_Cycles);
Current_Count := CycleCounter.cv;
Count_Complete := CycleCounter.q;
END_FUNCTION_BLOCK
Das sequenzielle Funktionsdiagramm ist eine weitere der grafischen Programmiersprachen. Sein Vorläufer war die Sprache GRAFCET, die auf binären Petri-Netzen basiert. Sie ermöglicht die Beschreibung von Schrittfolgen (Aktionen), die in einer genau festgelegten Reihenfolge ausgeführt werden sollen. Sie ist besonders nützlich für die Erstellung von Programmen zur Steuerung von Prozessen, die Synchronisation erfordern, oder von Prozessen, die in Phasen unterteilt werden können. Die Hauptbestandteile eines Programms in SFC sind: Schritte (Phasen) verbunden mit Aktionen, Übergänge verbunden mit logischen Bedingungen, direkte Verbindungen zwischen Schritten und Übergängen.
Häufig wird die Sprache SFC mit einer anderen Programmiersprache kombiniert, zum Beispiel mit der Ladder LD. SFC ist von Natur aus eine parallele Programmiersprache, in der gleichzeitig viele POU (Program Organization Units), d.h. Einheiten zur Steuerung des Flusses, aktiv sein können. Einige Umgebungen ermöglichen auch die Erstellung von Makroaktionen, d.h. Aktionen innerhalb von POU, die den Zustand eines anderen POU beeinflussen. Auf diese Weise kann ein POU über die aktiven Schritte entscheiden, die von einem anderen POU unternommen werden.
Abbildung 3. Beispiel eines Programms in der Sprache SFC
Die Anweisungsliste wird bereits als veraltete Programmiermethode angesehen. Diese Sprache ähnelt etwas dem Assembler, aber trotz der Implementierung für verschiedene PLC-Steuerungen mit unterschiedlichen Prozessoren ist die Sprache IL unabhängig vom verwendeten Prozessortyp. Ähnlich wie Assembler besteht sie aus sehr einfachen Anweisungen, und komplexere Operationen erfordern die Verwendung vieler davon. Die Steuerung der Programmausführung erfolgt durch Sprunganweisungen und Unterprogrammaufrufe.
Viele Hersteller von Steuerungen bieten, trotz vollständiger Übereinstimmung der angebotenen Hardware und Software mit der Norm IEC 61131-3, zusätzliche Aufrufe/Funktionsblöcke an, die spezifisch für den jeweiligen Anbieter sind und an die von ihm angebotene Hardware angepasst sind, wie das Lesen oder Schreiben von Ein- und Ausgängen. Zum Beispiel wurde die für Siemens PLC-Steuerungen vorgesehene IL-Sprache im Englischen „Statement List“ oder „STL“ und im Deutschen „Anweisungs-Liste“ oder „AWL“ genannt. Der deutsche Name wurde auch in die nationalen Versionen der Laufzeitumgebung in italienischer und spanischer Sprache übernommen. Der Benutzer des Simatic-Pakets kann zwischen deutschen und internationalen Mnemoniken zur Darstellung von Anweisungen wählen. Zum Beispiel bedeutet „A“ „AND“ oder „U“ bedeutet „UND“, „I“ bedeutet „Eingang“ oder „E“ bedeutet „Eingang“ usw.
Listing 2. Beispiel eines Programms in der Sprache IL
LD Speed
GT 2000
JMPCN VOLTS_OK
LD Volts
VOLTS_OK LD 1
ST %Q75
Ziel dieses Textes ist es nicht, das Programmieren von PLC-Steuerungen zu lehren, sondern bestimmte Möglichkeiten und Optionen aufzuzeigen. Jeder PLC-Programmierer sollte die Methode wählen, die am besten zu seinen Bedürfnissen passt, oder sie je nach Anwendung kombinieren. Zum Beispiel wird das FBD-Diagramm wahrscheinlich Benutzern gefallen, die logische Schaltungen kennen und verstehen, während das Ladder LD zur Programmierung einfacher Steuersequenzen nützlich sein wird. ST und SFC eignen sich hingegen zur Programmierung komplexer Prozesse, obwohl z.B. die Sprache ST im Mikro-PLC Easy von Eaton implementiert wurde, der sich eher zur Realisierung einfacher, weniger anspruchsvoller Steuer- und Kontrollfunktionen eignet. Andererseits gibt es keine Empfehlungen, die besagen, welche Sprache für was verwendet werden darf oder geeignet ist. Mit mehr oder weniger Aufwand kann mit jeder der besprochenen Methoden die entsprechende Software erstellt werden. Die beste Option scheint die Kombination von Sprachen je nach Bedarf und zur Erzielung der größtmöglichen Lesbarkeit der Anwendung zu sein.
Transfer Multisort Elektronik (TME) gehört zu den weltweit größten Distributoren für elektronische Komponenten, elektrotechnische Bauteile, Werkstattausrüstung und industrielle Automatisierung. Der Katalog umfasst über 1.500.000 Produkte von 1.300 führenden Herstellern. Moderne Logistikzentren von TME in Łódź und Rzgów (Polen) mit einer Gesamtfläche von über 40.000 m² versenden täglich fast 6.000 Pakete an Kunden in mehr als 150 Ländern.
TME engagiert sich zudem für die Förderung der Kenntnisse und Fähigkeiten junger Ingenieure und Elektronikbegeisterter durch das Projekt TME Education und unterstützt die Tech-Community mit der Veranstaltungsreihe TechMasterEvent, die Innovation und Erfahrungsaustausch fördert.