Structured Text (ST-Code) ist eine der fünf Programmiersprachen, die in der IEC 61131-3-Norm definiert sind, um Programmierung von speicherprogrammierbaren Steuerungen (SPS) zu standardisieren. Zur Übersicht und Abgrenzung zugleich sind hier alle Programmiersprachen der Norm dargestellt:
- Anweisungsliste (AWL): Textbasierte Sprache, die sich an Assembler-Programmierung anlehnt
- Kontaktplan (KOP): Grafische Sprache, die sich an Schaltplänen anlehnt
- Funktionsbausteinsprache (FBS): Modulare Sprache, die sich an objektorientierter Programmierung anlehnt
- Ablaufsprache (AS): Grafische Sprache, die sich an Flussdiagrammen anlehnt
- Strukturierter Text (ST): Textbasierte Sprache.
In Bild 1 ist eine typische modulare SPS gezeigt, die nach IEC 61131-3 programmiert wird.
Historie von ST-Code
Die Entwicklung von ST-Code begann in den 1980er Jahren, als die IEC 61131-3 als neuer Standard für die Programmierung von speicherprogrammierbaren Steuerungen (SPS) eingeführt wurde. Die Entwicklung von ST-Code wurde von der International Electrotechnical Commission (IEC) in Zusammenarbeit mit verschiedenen Unternehmen und Organisationen aus der Automationsbranche vorangetrieben. Ziel war es, eine Programmiersprache zu schaffen, die sowohl einfach zu lernen als auch effizient in der Anwendung ist.
ST-Code wurde erstmals 1992 in der IEC 61131-3 veröffentlicht. Die erste Version von ST-Code war noch relativ einfach aufgebaut. In den folgenden Jahren wurden jedoch mehrere Erweiterungen und Verbesserungen vorgenommen, um ST-Code zu einer leistungsfähigen und flexiblen Programmiersprache zu machen.
Heute ist ST-Code eine der am weitesten verbreiteten Programmiersprachen für SPSen. Sie wird von einer Vielzahl von Herstellern von SPS-Software unterstützt und wird von vielen Ingenieuren und Programmierern als die bevorzugte Sprache für die SPS-Programmierung angesehen. Die in Deutschland verbreitetsten Entwicklungssysteme für SPSen sind das TIA-Portal von Siemens und Codesys als herstellerunabhängige Entwicklungsumgebung.
Bedeutung von ST-Code in der SPS-Programmierung
- Strukturierte Textverarbeitung: ST-Code ist eine textbasierte Programmiersprache, die auf der Idee der strukturierten Textverarbeitung basiert. Sie ähnelt in gewisser Weise modernen Hochsprachen wie Pascal oder C, was sie für viele Programmierer leicht verständlich macht.
- Klare Struktur: ST-Code verwendet eine klare und strukturierte Syntax, die es ermöglicht, den Code leicht zu lesen und zu verstehen. Dies ist wichtig, da in der industriellen Automatisierung Fehler katastrophale Folgen haben können.
- Leicht wartbar: Die Struktur von ST-Code ermöglicht eine einfache Wartung von SPS-Programmen. Wenn Änderungen oder Aktualisierungen erforderlich sind, können diese relativ problemlos vorgenommen werden.
- Modularität: ST-Code unterstützt die Modularisierung, wodurch Code in übersichtliche Module aufgeteilt werden kann. Dies erleichtert die Wiederverwendung von Code und die Entwicklung komplexer Automatisierungsanwendungen.
- Umfangreiche Funktionalität: ST-Code bietet eine breite Palette von Funktionen und Operatoren, die es Entwicklern ermöglichen, komplexe Logik und Berechnungen in ihren SPS-Programmen zu implementieren. Dies umfasst Arithmetik, logische Operationen, Schleifen, Verzweigungen und mehr.
- Hochsprachenähnlich: Aufgrund seiner Ähnlichkeit zu Hochsprachen können Entwickler mit Programmiererfahrung in anderen Sprachen leicht in ST einsteigen. Dies erleichtert die Anpassung von Softwareentwicklern an die SPS-Programmierung.
- Plattformunabhängigkeit: ST-Code ist in der IEC 61131-3-Norm definiert und daher weitgehend plattformunabhängig. Das bedeutet, dass Programme, die in ST geschrieben sind, auf verschiedenen SPS-Hardwareplattformen ausgeführt werden können, solange diese die Norm unterstützen.
Insgesamt bietet Structured Text eine leistungsstarke und flexible Möglichkeit zur Programmierung von SPS-Systemen. Es ist besonders nützlich für anspruchsvolle Automatisierungsaufgaben, bei denen komplexe Berechnungen, Datenverarbeitung und Steuerungslogik erforderlich sind. Die Verwendung von ST-Code in der Industrie hat dazu beigetragen, die Programmierung von SPS-Systemen zu standardisieren und zu erleichtern, was zu einer höheren Effizienz und Genauigkeit in der industriellen Automatisierung geführt hat. Es ermöglicht Ingenieuren, Automatisierungsprozesse zu entwickeln und zu steuern, die in vielen Branchen von entscheidender Bedeutung sind, wie der Fertigung, dem Transport und der Energieerzeugung.
Aufbau der Serie
Im Rahmen dieser Serie betrachten wir die wichtigsten Befehle und Bausteine zu ST-Code und vertiefen diese in Form von kleinen Praxisbeispielen und Übungen zum selber machen. Die Lösung für die jeweiligen Aufgaben finden Sie dann online unter www.elektro.net. Diese dient lediglich als Orientierung für eine mögliche Lösung, denn eins ist in Bezug auf die Programmierung gewiss: Viele Wege führen nach Rom. Im ersten Schritt werden die Basisthemen behandelt, später folgen die fortgeschrittenen Inhalte. Welche der nachfolgenden Themen zur Basis und welche zum fortgeschrittenen Bereich zählen, sehen Sie in der ausführlichen Übersicht unserer Serie:
- Teil 2 – Variablen und Datentypen: In ST-Code können Variablen deklariert werden, und es stehen verschiedene Datentypen zur Verfügung, wie BOOL (für boolesche Werte), INT (für ganze Zahlen), REAL (für Fließkommazahlen) und mehr. [Basis]
- Teil 3 – if-else-Anweisung: Die if-else-Anweisung wird verwendet, um Entscheidungen in Ihrem Code zu treffen. Sie ermöglicht es, einen Codeblock auszuführen, wenn eine Bedingung wahr ist, andernfalls wird ein alternativer Codeblock ausgeführt. [Basis]
- Teil 4 – while-Schleifen: Mit einer while-Schleife können Sie einen Codeblock wiederholt ausführen, solange eine bestimmte Bedingung erfüllt ist. Dies wird häufig für fortlaufende Prozesse verwendet. [Basis]
- Teil 5 – for-Schleifen: Die for-Schleife ermöglicht die wiederholte Ausführung eines Codeblocks für eine festgelegte Anzahl von Schleifendurchläufen. Dies ist nützlich, wenn Sie genau wissen, wie oft der Code wiederholt werden soll. [Basis]
- Teil 6 – Funktionen und Methoden: In ST-Code können Funktionen und Methoden definiert werden, um bestimmte Aufgaben zu abstrahieren und wiederverwendbaren Code zu erstellen. [Basis]
- Teil 7 – Strukturen (Structs): Mit Strukturen können Sie benutzerdefinierte Datentypen erstellen, die verschiedene Variablen enthalten können. Dies erleichtert die Organisation von Daten. [Fortgeschritten]
- Teil 8 – Pointer: Zeiger (Pointer) ermöglichen den direkten Zugriff auf den Speicher und sind in der Regel in eingebetteten Systemen nützlich, um effizient auf Daten zuzugreifen. [Fortgeschritten]
- Teil 9 – Arithmetische Operationen: ST-Code unterstützt grundlegende arithmetische Operationen wie Addition, Subtraktion, Multiplikation und Division. [Fortgeschritten]
- Teil 10 – Logische Operatoren: Sie können logische Operatoren wie AND, OR und NOT verwenden, um komplexe Bedingungen zu erstellen. [Fortgeschritten]
- Teil 11 – Zykluszeit: In der Automatisierungstechnik ist die Zykluszeit entscheidend. Sie legt fest, wie oft der Code innerhalb eines SPS-Programms pro Sekunde ausgeführt wird. [Fortgeschritten]
Beispielprojekt
Zu guter Letzt folgt ein kleines Beispielprojekt für ST-Code, damit Sie einen Eindruck von der Programmiersprache bekommen. Ziel dieses Projektes ist das Ein- und Ausschalten einer LED mittels eines Tasters:
// Deklaration der Variablen
variable LED := 0; // Status der LED
variable Taster := 0; // Status des Tasters
// Hauptprogramm
while(true) do
begin
// Lesen des Tasterstatus
Taster := digitalRead(2);
// LED einschalten, wenn der Taster gedrückt ist
if (Taster = 1) then
begin
LED := 1;
end;
// LED ausschalten, wenn der Taster nicht gedrückt ist
if (Taster = 0) then
begin
LED := 0;
end;
end;
Beschreibung des Programms
Zu Beginn werden die beiden Variablen »LED« und »Taster« deklariert. Die Variable »LED« speichert den Status der LED, die Variable »Taster« speichert den Status des Tasters.
In der Hauptschleife wird der Tasterstatus in einer Schleife gelesen. Wenn der Taster gedrückt ist, wird die LED eingeschaltet. Wenn der Taster nicht gedrückt ist, wird die LED ausgeschaltet.
Dieses kleine Beispielprojekt soll lediglich einen Überblick geben, die verschiedenen Bausteine, Anweisungen und Fremdwörter werden wir im Rahmen dieser Serie bearbeiten.
(Fortsetzung folgt)