Reproduktionen oder Instanzen (Kopien) eines Funktionsbausteins können erstellt werden⮫ „Funktionsbaustein“.
Jede Instanz verfügt über einen eigenen Bezeichner (den Instanznamen) und eine Datenstruktur, die ihre Eingänge, Ausgänge und internen Variablen enthält. Instanzen werden lokal oder global als Variablen deklariert, während der Name des Funktionsbausteins als Typ eines Bezeichners angegeben wird.
Beachten Sie die Empfehlungen zur Namensgebung ⮫ „Empfehlungen für die Benennung von Identifikatoren“.
Beispiel
Beispiel für eine Instanz mit dem Namen INSTANCE des Funktionsbausteins FUB:
fubInstance: FUB;
Funktionsbausteine werden immer über die oben beschriebenen Instanzen aufgerufen.
Von außerhalb einer Funktionsbausteininstanz kann nur auf die Eingangs- und Ausgangsparameter zugegriffen werden, nicht aber auf die internen Variablen.
Beispiel für den Zugriff auf eine Eingangsvariable
Der Funktionsbaustein FB hat eine Eingangsvariable in1 vom Typ INT.
PROGRAM prog VAR fbinst1:fb; END_VAR LD 17 ST fbinst1.in1 CAL fbinst1 END_PROGRAM
Die Deklarationsteile von Funktionsbausteinen und Programmen können Instanzdeklarationen enthalten⮫ „Funktionsbaustein“. Instanzdeklarationen sind in Funktionen⮫ „Funktion“ nicht erlaubt.
Der Zugriff auf eine Funktionsbausteininstanz ist auf die POU beschränkt, in der sie deklariert wurde, es sei denn, sie wurde global deklariert.
Der Instanzname einer Funktionsbausteininstanz kann als Eingabe für eine Funktion oder einen Funktionsblock verwendet werden.
Nach der Bearbeitung eines Funktionsbausteins bleiben alle Werte bis zur nächsten Bearbeitung erhalten. Daher liefern Funktionsbausteinaufrufe mit denselben Argumenten nicht immer dieselben Ausgangswerte!
Wenn mindestens eine der Funktionsbausteinvariablen eine Retain-Variable ist, wird die gesamte Instanz im Retain-Bereich gespeichert.