Strukturierter Text

Programmiersprache für Speicherprogrammierbare Steuerungen
Dies ist die gesichtete Version, die am 25. Juni 2024 markiert wurde. Es existiert 1 ausstehende Änderung, die noch gesichtet werden muss.

Der strukturierte Text (engl. Structured Text, Abkürzung: ST; in Siemens S7 auch engl. Structured Control Language, Abkürzung SCL) ist eine Programmiersprache für Speicherprogrammierbare Steuerungen (SPS). Die Norm EN 61131-3 legt neben anderen auch den Sprachumfang von ST fest. Dabei ist die Syntax der Sprachelemente ähnlich denen der Hochsprache Pascal und es wird wie bei allen Sprachen der EN 61131-3 bei Schlüsselwörtern keine Unterscheidung zwischen Groß- und Kleinschreibung gemacht (Case Insensitive).

ST bietet mehr Strukturierungsmöglichkeiten als AWL und löst diese daher immer mehr ab. Komplexe Algorithmen und mathematische Funktionen lassen sich in ST übersichtlicher und schneller programmieren.[1]

Sprachelemente Strukturierter Text

Bearbeiten

Zuweisung

Bearbeiten

Als Zuweisungsoperator wird im Strukturierten Text „:=“ verwendet.

 Wert := Wert1 + Wert2;

Dem Operanden auf der linken Seite, wird der Wert des Ausdruckes auf der rechten Seite zugewiesen. Der Zuweisungsoperator ist nicht mit dem Vergleichsoperator „=“ zu verwechseln. Jede Anweisung wird mit einem Semikolon abgeschlossen.

IF-Statement

Bearbeiten

Mit IF-Anweisungen lassen sich Anweisungen programmieren, die von Bedingungen abhängig sind. Die Bedingungen werden der Reihe nach geprüft. Ist Bedingung1 der IF-Anweisung wahr, wird die Bedingung des ELSIF-Zweiges nicht mehr überprüft.

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

CASE-Statement

Bearbeiten

Mit einem CASE-Statement lassen sich mehrere bedingte Anweisungen programmieren, die alle von der gleichen Bedingungsvariable abhängig sind.[2] Nimmt die Bedingungsvariable keinen der angegebenen Werte an, wird der ELSE-Zweig ausgeführt.

  CASE Bedingungsvariable OF
    1 : Anweisung1;
    2 : Anweisung2;
    3 : Anweisung3;
    ELSE Anweisung4;
  END_CASE;

FOR-Statement

Bearbeiten

Mit Hilfe von For-Schleifen lassen sich wiederholende Vorgänge programmieren.[1] Dabei wird die Anweisung in der Schleife so oft wiederholt, bis die Variable i den Endwert überschreitet. Bei jedem Schleifendurchlauf wird die Variable um eine Schrittweite erhöht.

FOR i := 0 TO 499 BY 1 DO
  Zahl := Zahl +1;
  D[i] := Zahl;
END_FOR;

Im Codebeispiel wird ein Array mit 500 Plätzen beschrieben.

WHILE-Statement

Bearbeiten

Mit WHILE Schleifen lassen sich Vorgänge programmieren, die oft wiederholt werden müssen. Die Anweisung in der Schleife wird wiederholt, solange die Bedingung erfüllt ist. Ist die Anzahl der Schleifendurchläufe bekannt, wird meistens eine FOR Schleife verwendet. Bei einer WHILE Schleife sollte man beachten, dass die Bedingung nicht dauerhaft erfüllt ist. Ansonsten entstehen Endlosschleifen.[1]

  WHILE Bedingung DO
    Anweisung;
  END_WHILE;

REPEAT-Statement

Bearbeiten

Das REPEAT Statement ist einem WHILE Statement sehr ähnlich. Der Unterschied zu einer WHILE Schleife liegt darin, dass die Abbruchbedingung erst nach dem Ausführen der Schleife überprüft wird (C++: do{}/while()).[2]

  REPEAT
    Anweisung;
  UNTIL Bedingung
  END_REPEAT;

Im vorliegenden Beispiel wird die Anweisung so lange ausgeführt, bis die Bedingung erfüllt ist. Die Anweisung wird mindestens ein Mal ausgeführt, da die Abbruchbedingung erst nach dem Durchlaufen der Anweisung abgefragt wird.

EXIT Anweisung

Bearbeiten

Eine FOR, WHILE, oder REPEAT Schleife kann vorzeitig mit einer EXIT Anweisung verlassen werden.

Pointer enthalten die Adressen des Speicherplatzes von Variablen. Die Adresse einer Variable wird durch den Adressoperator ADR ermittelt. Die Dereferenzierung eines Pointers erfolgt mit Hilfe des Inhaltsoperators „^“.[3]

  pAdresse  := ADR(Wert1);
  Wert2     := pAdresse^;

In diesem Beispiel wird der Variable Wert2 der Inhalt der Variable Wert1 mit Hilfe eines Pointers zugewiesen. Die Zuweisung erfolgt über die Dereferenzierung des Pointers pAdresse.

Literatur

Bearbeiten

Einzelnachweise

Bearbeiten
  1. a b c Ulrich Becker: Einführung in die Programmiersprache Strukturierter Text (ST). (PDF) Abgerufen am 9. August 2018.
  2. a b Handbuch für SPS Programmierung mit CoDeSys 2.3. (PDF) Abgerufen am 21. Juni 2017.
  3. Beckhoff Information System - German. Abgerufen am 22. Mai 2017.