Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
11.10.2020
Размер:
3.68 Mб
Скачать

WAGO-I/O-PRO 32 V2.2 Übersicht

29

Die Sprachen

 

 

 

Andernfalls werden die Boolschen Ausdrücke, beginnend mit <Boolscher_Ausdruck2> der Reihe nach ausgewertet, bis einer der Ausdrücke TRUE ergibt. Dann werden nur die Anweisungen nach diesem Boolschen Ausdruck und vor dem nächsten ELSE oder ELSIF ausgewertet.

Wenn keine der Boolschen Ausdrücke TRUE ergibt, dann werden ausschließlich die <ELSE_Anweisungen> ausgewertet.

Beispiel:

IF temp<17

THEN heizung_an := TRUE;

ELSE heizung_an := FALSE;

END_IF;

Hier wird die Heizung angemacht, wenn die Temperatur unter 17 Grad sinkt, ansonsten bleibt sie aus.

2.4.2.7CASE-Anweisung

Mit der CASE-Anweisung kann man mehrere bedingte Anweisungen mit derselben Bedingungsvariablen in ein Konstrukt zusammenfassen.

Syntax:

CASE <Var1> OF

<Wert 1>: <Anweisung 1> <Wert 2>: <Anweisung 2>

<Wert3, Wert4, Wert5: <Anweisung 3>

<Wert6 .. Wert10 : <Anweisung 4>

...

<Wert n>: <Anweisung n>

ELSE <ELSE-Anweisung>

END_CASE;

Eine CASE-Anweisung wird nach folgendem Schema abgearbeitet:

Wenn die Variable in <Var1> den Wert <Wert i> hat, dann wird die Anweisung <Anweisung i> ausgeführt.

Hat <Var 1> keinen der angegebenen Werte, dann wird die <ELSEAnweisung> ausgeführt.

WAGO-I/O-SYSTEM 759 WAGO-I/O-PRO 32

30WAGO-I/O-PRO 32 V2.2 Übersicht

Die Sprachen

Wenn für mehrere Werte der Variablen, dieselbe Anweisung auszuführen ist, dann kann man diese Werte mit Kommatas getrennt hintereinanderschreiben, und damit die gemeinsame Anweisung bedingen.

Wenn für einen Wertebereich der Variablen, dieselbe Anweisung auszuführen ist, dann kann man den Anfangsund Endwert getrennt durch zwei Punkte hintereinanderschreiben, und damit die gemeinsame Anweisung bedingen.

Beispiel.:

CASE INT1 OF

1, 5: BOOL1 := TRUE; BOOL3 := FALSE;

2:BOOL2 := FALSE; BOOL3 := TRUE;

10..20: BOOL1 := TRUE;

BOOL3:= TRUE;

ELSE

BOOL1 := NOT BOOL1;

BOOL2 := BOOL1 OR BOOL2;

END_CASE;

2.4.2.8FOR-Schleife

Mit der FOR-Schleife kann man wiederholte Vorgänge programmieren.

Syntax:

INT_Var :INT;

FOR <INT_Var> := <INIT_WERT> TO <END_WERT> {BY

<Schrittgröße>} DO

<Anweisungen>

END_FOR;

Der Teil in geschweiften Klammern {} ist optional.

Die <Anweisungen> werden solange ausgeführt, solange der Zähler <INT_Var> nicht größer als der <END_WERT> ist. Dies wird vor der Ausführung der <Anweisungen> überprüft, so daß die <Anweisungen> niemals ausgeführt werden, wenn <INIT_WERT> größer als <END_WERT> ist.

WAGO-I/O-SYSTEM 759 WAGO-I/O-PRO 32

WAGO-I/O-PRO 32 V2.2 Übersicht

31

Die Sprachen

 

 

 

Immer, wenn <Anweisungen> ausgeführt worden ist, wird <INT_Var> um <Schrittgröße> erhöht. Die Schrittgröße kann jeden Integerwert haben. Fehlt sie wird diese auf 1 gesetzt. Die Schleife muß also terminieren, da <INT_Var> nur größer wird.

Beispiel:

FOR Zaehler:=1 TO 5 BY 1 DO

Var1:=Var1*2;

END_FOR;

Erg:=Var1;

Nehmen wir an, daß die Variable Var1 mit dem Wert 1 vorbelegt wurde, dann wird sie nach der FOR-Schleife den Wert 32 haben.

Hinweis:

Der <END_WERT> darf nicht der Grenzwert des Zählers <INT_VAR> sein. Z.B. wenn die Variable Zaehler vom Typ SINT ist, darf der <END_WERT> nicht 127 sein, sonst erfolgt eine Endlosschleife.

2.4.2.9WHILE-Schleife

Die WHILE-Schleife kann benutzt werden wie die FOR-Schleife, mit dem Unterschied, daß die Abbruchbedingung ein beliebiger boolscher Ausdruck sein kann. Das heißt, man gibt eine Bedingung an, die, wenn sie zutrifft, die Ausführung der Schleife zur Folge hat.

Syntax:

WHILE <Boolscher Ausdruck> DO

<Anweisungen>

END_WHILE;

Die <Anweisungen> werden solange wiederholt ausgeführt, wie <Boolscher_Ausdruck> TRUE ergibt. Wenn <Boolscher_Ausdruck> bereits bei der ersten Auswertung FALSE ist, dann werden die <Anweisungen> niemals ausgeführt. Wenn <Boolscher_Ausdruck> niemals den Wert FALSE annimmt, dann werden die <Anweisungen> endlos wiederholt, wodurch ein Laufzeitfehler entsteht.

Hinweis:

Der Programmierer muß selbst dafür sorgen, daß keine Endlosschleife entsteht, indem er im Anweisungsteil der Schleife die Bedingung verändert, also zum Beispiel einen Zähler hochoder runterzählt.

Beispiel:

WAGO-I/O-SYSTEM 759 WAGO-I/O-PRO 32

32WAGO-I/O-PRO 32 V2.2 Übersicht

Die Sprachen

WHILE Zaehler<>0 DO

Var1 := Var1*2;

Zaehler := Zaehler-1;

END_WHILE

Die WHILEund die REPEAT-Schleife sind in gewissem Sinne mächtiger als die FOR-Schleife, da man nicht bereits vor der Ausführung der Schleife die Anzahl der Schleifendurchläufe wissen muß. In manchen Fällen wird man also nur mit diesen beiden Schleifenarten arbeiten können. Wenn jedoch die Anzahl der Schleifendurchläufe klar ist, dann ist eine FORSchleife zu bevorzugen, da sie keine endlosen Schleifen ermöglicht.

2.4.2.10REPEAT-Schleife

Die REPEAT-Schleife unterscheidet sich von den WHILE-Schleifen dadurch, daß die Abbruchbedingung erst nach dem Ausführen der Schleife überprüft wird. Das hat zur Folge, daß die Schleife mindestens einmal durchlaufen wird, egal wie die Abbruchbedingung lautet.

Syntax:

REPEAT

<Anweisungen>

UNTIL <Boolscher Ausdruck>

END_REPEAT;

Die <Anweisungen> werden solange ausgeführt, bis <Boolscher Ausdruck> TRUE ergibt.

Wenn <Boolscher Ausdruck> bereits bei der ersten Auswertung TRUE ergibt, dann werden <Anweisungen> genau einmal ausgeführt. Wenn <Boolscher_Ausdruck> niemals den Wert TRUE annimmt, dann werden die <Anweisungen> endlos wiederholt, wodurch ein Laufzeitfehler entsteht.

Hinweis:

Der Programmierer muß selbst dafür sorgen, daß keine Endlosschleife entsteht, indem er im Anweisungsteil der Schleife die Bedingung verändert, also zum Beispiel einen Zähler hochoder runterzählt.

Beispiel:

REPEAT

Var1 := Var1*2;

Zaehler := Zaehler-1;

WAGO-I/O-SYSTEM 759 WAGO-I/O-PRO 32

Соседние файлы в папке 759-332