Strukturierter Text

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

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 in ST übersichtlicher und schneller programmieren. [1]

Beispiel 1 (IF-Statement)[Bearbeiten | Quelltext bearbeiten]

IF (MASCHINE_EINGESCHALTET = TRUE) THEN
  AUSGANG1 := EINGANG1 AND EINGANG2;
ELSE
  AUSGANG1 := FALSE;
END_IF;

Alternativ ist auch folgende Programmierung möglich:

AUSGANG1 := MASCHINE_EINGESCHALTET AND EINGANG1 AND EINGANG2;

Das Resultat beider Varianten ist identisch (nicht jedoch die interne Umsetzung in die Anweisungsliste).

Beispiel 2 (CASE-Statement)[Bearbeiten | Quelltext bearbeiten]

if Cmd = 2 then
  case Slot of (* Aufnehmen *)
    1 : T_Dicke[3*i] := dint_to_int((RB_Ist[RB_Ist[0]]+499)/1000);
    2 : T_Dicke[3*i] := dint_to_int((Z1_Ist[Z1_Ist[0]]+499)/1000);
    3 : T_Dicke[3*i] := dint_to_int((FB_Ist+499)/1000);
    else T_Dicke[3*i] := dint_to_int((Z2_Ist+499)/1000);
  end_case;
else T_Dicke[3*i] := dint_to_int((T_Ist[i]+499)/1000);
end_if;

Beispiel 3 (FOR-Statement)[Bearbeiten | Quelltext bearbeiten]

for i := 0 to 499 by 1 do
  D := D1[i];
  D1[i] := D2[i];
  D2[i] := D;
end_for;

Beispiel 4 (REPEAT-Statement)[Bearbeiten | Quelltext bearbeiten]

if RB_Ist[0] = 0
then Daten[X[i]] := Daten[X[i]] + 1;
else
  repeat
    Daten[X[i]] := Daten[X[i]] + 1;
    k := uint_to_int(Daten[X[i]]); (* Index des Kanals *)
  until Daten[X[i]+k] = 69 or Daten[X[i]+k] = 99
  end_repeat;
end_if;

Beispiel 5 (WHILE-Statement)[Bearbeiten | Quelltext bearbeiten]

If RST_Tisch then
  M[15] := false;
  k := 1;
  while Daten[X[2]+k] <> 60 and Daten[X[2]+k] <> 99 and k < 49 do
    k := k+1;
  end_while;
  Daten[X[2]] := int_to_uint(k); (* neu setzen für 2. Vorgang *)
  Wait := false;
end_if;

Literatur[Bearbeiten | Quelltext bearbeiten]

  • Dr. Ulrich Becker: Grundlagen der Automatisierungstechnik, Kapitel 13: Einführung in die Programmiersprache Strukturierter Text (ST): http://www.ipsta.de/download/automationstechnik/Kap13_ST%20.pdf (abgerufen am 6. Februar 2017)
  • Karl Schmitt: SPS-Programmierung mit ST: nach IEC 6113 mit CoDeSys und mit Hinweisen zu STEP 7 im TIA-Portal. Vogel Business Media 2015, ISBN 978-3-8343-3369-8
  • Ulrich Kanngießer: Programmierung mit Strukturierter Text: Steuerungs-Funktionsbausteine mit ST oder SCL einfach und schnell erstellen. Für Ein- und AWL-Umsteiger. VDE VERLAG 2014, ISBN 978-3800734634

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Dr. Ulrich Becker: Einführung in die Programmiersprache Strukturierter Text (ST). Abgerufen am 7. Februar 2017 (PDF).