Donnerstag, 1. Februar 2018

Blogeintrag Januar 2018

SCL

Wir behandeln im Moment in der Berufsschule das Thema SCL. SCL (Structured Control Language) oder auch ST(Structured Text) ist eine Programmiersprache für speicherprogrammierbare Steuerungen (SPS). Da wir bisher mit FUP gearbeitet haben, ist das ein relativ grosser Schritt.


Anwendung

SCL löst immer mehr AWL (Anweisungsliste) zum Realisieren von automatisierten Aufgaben ab. Ein ausschlaggebender Faktor für die Umstellung ist die S7 1200 von Siemens, welche nur noch FUP, KOP und SCL unterstützt und damit AWL vernachlässigt.

Funktionen

Zuweisung

Wenn eine Variable im Wert geändert werden soll, benötigt man eine Zuweisung ":=". Möchte man nun zum Beispiel die Variable "iWert1" um 10 erhöhen, geschieht das folgendermassen:

#iWert1 := #iWert1 + 10;

Es muss darauf geachtet werden, die Zeile mit einem Semikolon ";" abzuschliessen. Ähnlich funktioniert es auch beim übertragen des Werts einer anderen Variable auf "iWert1":

#iWert1 := #iWert2;

IF-Statement

Bei einem IF-Statement wird eine Ja/Nein Bedingung abgefragt und je nach Antwort ein Befehl ausgeführt.
IF #bRegen Then
     #iWert1 := #iAufDasSofaLiegen;
ELSE
     #iWert1 := #iMotorradStarten;
END_IF;













CASE-Statement

Bei einem CASE-Statement wird eine Bedingungsvariable (zum Beispiel iSchrittkette) generiert. Danach werden einzelne Anweisungen einem Wert der Bedingungsvariable zugewiesen. Wenn die Steuerung gestartet wird, wird die Bedingungsvariable abgefragt und der jeweilige Befehl ausgeführt.

CASE #iSchrittkette OF
     10  :  #iWert1 := #iWert1 + 10;
     20  :  #iWert1 := #iWert1 + 20;
     30  :  #iWert1 := #iWert1 + 30;
     ELSE #iWert1 := #iWert1;
   END_CASE;

FOR-Statement

Ein FOR-Statement beschreibt eine Schleife, die die darin enthaltenen Aufgaben solange macht, bis die dazugehörige Zählervariable einen gewissen Wert erreicht hat. Dieser Wert wird bei jedem abgeschlossenen Durchlaufen um einen festgelegten Wert erhöht, kann aber auch von anderen Befehlen korrigiert werden.

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

WHILE-Statement

Das WHILE-Statement ist eine Schleife, die ausgeführt wird, während eine Bedingung aktiv ist. Sobald diese Bedingung nicht mehr aktiv ist, wird die Schleife beendet.

WHILE #bStartStop DO
     #iWert1 := #iWert1 + 1;
END_WHILE;

REPEAT-Statement

Das REPEAT-Statement ist sehr ähnlich aufgebaut wie das WHILE-Statement. Der Unterschied ist, dass die Bedingung, welche erfüllt werden muss, erst am Ende abgefragt wird. Das hat zur Folge, dass der Befehl mindestens einmal ausgeführt wird.

REPEAT
     #iWert1 := #iWert1 + 1;
UNTILL #bStartStop
END_REPEAT;

Keine Kommentare:

Kommentar veröffentlichen