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

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

Bestandteile eines Projekts

Hinweis:

Wenn Sie in Ihrem Projekt eine Funktion mit Namen CheckBounds definieren, können Sie damit Bereichsüberschreitungen in Arrays automatisch überprüfen (siehe unter Anhang B der Hilfedateien, Datentypen).

Wenn Sie die Funktionen CheckDivByte, CheckDivWord,

CheckDivDWord und CheckDivReal definieren, können Sie damit bei Verwendung des Operators DIV den Wert des Divisors überprüfen, beispielsweise um eine Division durch 0 zu verhindern (siehe Anhang C der Hilfedateien, IEC Operatoren).

Wenn Sie die Funktionen CheckRangeSigned und CheckRangeUnsigned definieren, können Sie damit im online-Betrieb automatisch Bereichsüberschreitungen bei Variablen, die mit Unterbereichstypen (siehe Anhang B der Hilfedateien, Datentypen) deklariert sind, abfangen.

Die genannten Funktionsnamen sind aufgrund der hier beschriebenen

Einsatzmöglichkeit reserviert.

2.3.4Funktionsblock

Ein Funktionsblock ist ein Baustein der bei der Ausführung einen oder mehrere Werte liefert. Ein Funktionsblock liefert keinen Rückgabewert im Gegensatz zu einer Funktion.

Eine Funktionsblockdeklaration beginnt mit dem Schlüsselwort

FUNCTION_BLOCK.

Es können Vervielfältigungen, genannt Instanzen (Kopien) eines

Funktionsblocks geschaffen werden.

x Beispiel eines Funktionsblocks in AWL

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

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

15

Bestandteile eines Projekts

 

 

 

Beispiel in AWL für einen Funktionsblock mit zwei Eingabevariablen und zwei Ausgabevariablen. Eine Ausgabe ist das Produkt der beiden Eingaben, die andere ein Vergleich auf Gleichheit:

2.3.4.1Instanzen von Funktionsblöcken

Es können Vervielfältigungen, genannt Instanzen (Kopien) eines

Funktionsblocks geschaffen werden.

Jede Instanz besitzt einen zugehörigen Bezeichner (den Instanznamen), und eine Datenstruktur, die ihre Eingaben, Ausgaben und internen Variablen beinhaltet. Instanzen werden wie Variablen lokal oder global deklariert, indem als Typ eines Bezeichners der Name des Funktionsblocks angegeben wird.

Beispiel für eine Instanz mit Namen INSTANZ des Funktionsblocks FUB:

INSTANZ: FUB;

Aufrufe von Funktionsblöcken geschehen stets über die oben beschriebenen Instanzen.

Nur auf die Ein-und Ausgabeparameter kann von außerhalb einer Instanz eines Funktionsblocks zugegriffen werden, nicht auf dessen interne Variablen.

Die Deklarationsteile von Funktionsblöcken und Programmen können Instanzdeklarationen beinhalten. Instanzdeklarationen in Funktionen sind nicht zulässig.

Der Zugriff auf die Instanz eines Funktionsblocks ist auf den Baustein beschränkt, in dem sie instanziert wurde, es sei denn, sie wurde global deklariert.

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

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

Bestandteile eines Projekts

Der Instanzname einer Instanz eines Funktionsblocks kann als Eingabe einer Funktion oder eines Funktionsblocks benutzt werden.

Hinweis:

Alle Werte bleiben von einer Ausführung des Funktionsblocks bis zur nächsten erhalten. Daher liefern Aufrufe eines Funktionsblocks mit denselben Argumenten nicht immer dieselben Ausgabewerte!

Hinweis:

Enthält der Funktionsblock mindestens eine Retain-Variable, wird die gesamte Instanz im Retainbereich gespeichert.

Der Funktionsblock FUB hat eine Eingabevariable in1 vom Typ int.

Deklaration:

PROGRAM prog

VAR

inst:FUB; END_VAR

Programmteil in AWL:

LD 17

ST inst.in1

CAL inst

Programmteil in ST:

inst(in1:=17);

2.3.4.2Aufruf eines Funktionsblocks

Man kann die Eingabeund Ausgabevariablen eines Funktionsblocks von einem anderen Baustein aus ansprechen, indem man eine Instanz des Funktionsblocks anlegt und über folgende Syntax die gewünschte Variable angibt:

<Instanzname>.<Variablenname>

Wenn man die Eingabeparameter, also Werte der Inputvariablen, beim Aufruf setzen will, dann geschieht das bei den Textsprachen AWL und ST, indem man nach dem Instanznamen des Funktionsblocks in Klammer den Parametern Werte zuweist. (Die Zuweisung geschieht durch ":=" wie bei der Initialisierung von Variablen an der Deklarationsstelle).

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

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

17

Bestandteile eines Projekts

 

 

 

Beachten Sie, daß EinAusgabevariablen (VAR_IN_OUT) eines Funktionsblocks als Pointer übergeben werden. Ihnen können deshalb beim Aufruf keine Konstanten zugewiesen werden und es kann nicht lesend oder schreibend von außen auf sie zugegriffen werden. Beispiel für den Aufruf einer VAR_IN_OUT Variable inout1 des Funktionsblocks fubo in einem STBaustein:

VAR

inst:fubo;

var1:int;

END_VAR var1:=2;

inst(inout1:=var1);

Nicht zulässig wäre:

inst(inout1:=2);

bzw.

inst.inout1:=2;

Beispiele für den Aufruf des Funktionsblocks FUB. Das Multiplikationsergebnis wird in der Variablen ERG abgelegt, das Ergebnis des Vergleichs wird in QUAD gespeichert. Es sei eine Instanz von FUB mit dem Namen INSTANZ deklariert.

x So wird die Instanz eines Funktionsblocks in AWL aufgerufen

x So wird die Instanz eines Funktionsblocks in ST aufgerufen (Deklarationsteil wie bei AWL

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

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