Strukturierter Text (ST) – Hochsprache in CODESYS

Programmiersprache - ST

Strukturierter Text – eine Welt voller neuer Möglichkeiten.

Wie schon erwähnt, nutze ich den Strukturierten Text (ST) für die meisten Implementierungen. ST ist eine Hochsprache, die für komplexere Aufgaben, in CODESYS geeignet ist. Gerade bei mächtigen Algorithmen und mathematischen Funktionen oder Anwendungen mit Datenverarbeitung sollte Strukturierter Text eure erste Wahl sein. Solltet Ihr bisher noch keine Erfahrung mit ST gemacht haben, erhaltet Ihr in diesem Beitrag einen kleinen Einblick. Ihr werdet zumindest die gängigsten Sprachelemente kennen und anwenden können. Durch eine Vielzahl von Beispielen und Code-Snippets, aus meinen nächsten Beiträgen, werdet Ihr noch tiefer einsteigen.

Nachfolgend werde ich zunächst einmal die einfachsten Sprachelemente erläutern. Ganz wichtig ist, dass Ihr eure Anweisungen mit einem Semikolon beendet. Der Compiler zeigt euch sonst direkt beim Kompiliervorgang einen Fehler.

Zuweisung

Ergebnis := Zahl1+Zahl2; //Summer aus Zahl1 und Zahl2 der Variablen Ergebnis zuweisen.

Durch den Zuweisungsoperator „:=“ wird dem Ergebnis die Summe aus Zahl1 und Zahl2 zugewiesen.

IF-Anweisung

Logische Programm-Strukturen werden am besten mit einer IF-Anweisung realisiert. Durch den Einsatz der IF-Anweisung könnt Ihr, auf einfachste Weise den Zustand von Variablen abfragen. Die übergebene Bedingung bestimmt, welcher Zweig eurer IF-Anweisung abgearbeitet wird.

IF Bedingung THEN
   Anweisung1;
ELSIF Bedingung2 THEN
   Anweisung2;
ELSE
   Anweisung3;
END_IF;

Hier müsst Ihr beachten, dass die Bedingungen der nach Reihe geprüft werden. Das heißt, wenn Bedingung 1 wahr ist, wird Bedingung 2 nicht mehr überprüft. Sollte keine Bedingung erfüllt sein, wird die Anweisung im ELSE – Zweig abgearbeitet.

CASE-Anweisung

Die CASE-Anweisung ist ähnlich der IF-Anweisung. Allerdings betrachtet dieses Sprachelement nur eine Bedingungsvariable. Wenn keine der angegebenen Bedingungen erfüllt ist, bearbeitet das Laufzeitsystem, wie bei der IF-Anweisung, den ELSE-Zweig.

CASE Bedingungsvariable OF

1 : Anweisung1;

2 : Anweisung2;

3 : Anweisung3;

ELSE Anweisung4;

END_CASE;

In eurer Applikation solltet Ihr zwingend vom Einsatz der ELSE-Anweisung Gebrauch machen. Andernfalls werdet ihr nicht Sinnvoll auf falsche oder ungültige Werte reagieren. Beispielsweise bietet es sich an, dass Ihr beim Abarbeiten des Else-Zweiges hier eine Log-Meldung erstellt. Damit könnt Ihr z.B. die Ursache des Fehlers protokolliert. Den Fehler zu suchen, ist ziemlich Mühsam, wenn sporadisch falsche Bedingungsvariablen aufgerufen werden.

Schleifen (For, While, Repeat)

Beim Einsatz von Schleifen müsst Ihr beachten, dass euer Programm ja schon zyklisch in einem Task aufgerufen wird. Achtet unbedingt darauf, dass Ihr keine Endlosschleife programmiert. Dies passiert sehr gerne beim Einsatz von While-Schleifen. Gerade die Entwickler unter euch, die schon Erfahrungen mit Hochsprachen haben, stolpern gerne (so wie ich auch) über diese Problematik.

In CODESYS stehen euch drei Schleifen zur Verfügung:

  • WHILE
  • REPEAT
  • FOR

Bei der FOR-Schleife müsst Ihr vor der Ausführung angeben, wie oft die Schleife, durchlaufen werden soll. Das ist gerade am Anfang zu bevorzugen, damit Ihr Endlosschleife vermeidet. Im Gegensatz dazu, müssen bei der WHILE- und der REPEAT-Schleife keine Schleifendurchläufe bekannt sein. Hier könnt Ihr mit einer Bedingung bei jedem erneuten Durchgang prüfen ob die Abarbeitung fortgesetzt werden soll.

Beispiel FOR-Schleife:

FOR iCount := 1 TO 10 BY 1 DO
  Ergebnis := Ergebnis+1;
END_FOR;

Hier müsst Ihr natürlich zunächst in der Variablen Deklaration eine Variable „iCount“ und „Ergebnis“ vom Datentyp Integer anlegen.

Pointer

Ein Pointer enthält die Adresse der Variablen auf dem Speicherplatz. Zum Ermitteln der Adresse wird die Funktion ADR() verwenden. Damit könnt Ihr die Adresse in eine Variable speichern. Wenn Ihr den Wert erhalten (dereferenzierung) wollt, müsst Ihr einfach die Adressvariable mit dem Inhaltsoperator „^“ aufrufen und einer anderen Variable zuweisen. Unter CODESYS V3 gibt es einige interessante Konzepte für die Ihr Pointer einsetzten könnt.

Ich möchte allerdings hier in diesem Artikel noch nicht näher auf das Thema Pointer eingehen. Dazu werdet Ihr später mehr lernen.

Kommentare

Guter Code enthält Kommentare! Bitte kommentiert euren Source Code aber nicht für Menschen, die nicht Programmieren können. Solche Kommentare gehören allenfalls in Schulen oder Übungen, aber nicht in ein Produktives Umfeld. Hier könnt Ihr davon ausgehen, dass jeder im Team die Programmiersprache beherrscht.

Kommentare sind dort nützlich, wo Code nicht so gestaltet werden kann, dass andere Entwickler ihn sofort verstehen. Zum Beispiel wenn Ihr, den Zweck eines Funktionsbausteins oder einer Funktion dokumentiert, lohnt sich ein Kommentar. Denn die Funktionsweise lässt sich nämlich nicht immer mit im Funktionsnamen oder im Code unterbringen.

In ST könnt Ihr euren Code folgendermaßen kommentieren:

Code in einer Zeile Beginnt mit // // Meine Kommentarzeile
Code über mehrere Zeilen hinweg Beginnt mit (* und endet mit *) (* Mein mehrzeiliger  Kommentar *)

Fazit

Strukturierter Text bietet, mit seiner Vielzahl an Sprachkonstrukten, eine einfache, überaus schnelle und gut zu strukturierende Programmerstellung. Meistert Ihr diese ersten Hürden mit ST dann stehen euch, mit dieser Sprache, alle Türen offen. Meiner Meinung nach, ist ST die SPS Programmiersprache, mit der Ihr euch auf alle Fälle vertraut machen solltet. Nur so seid Ihr für die Zukunft bestens aufgestellt. Denn eins kann ich mit Sicherheit sagen, die Anwenderprogramme im Automatisierungsbereich werden immer Leistungsfähiger und Umfangreicher. Auch hier werden moderne Sprachelemente, Design Pattern und Cloud-Dienste Ihren Schwerpunkt finden. Ebenso wird eine Vielzahl von Technologien aus dem Industry 4.0 Bereich, die nächsten Jahre hier tolle neue Themengebiete aufzeigen – und Ihr seid Mittendrin.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website benutzt Cookies und Google Analytics. Wenn du die Website weiter nutzt, gehen wir von deinem Einverständnis aus Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen