Die Erweiterung eines Funktionsbausteins basiert auf dem Konzept der Vererbung in der objektorientierten Programmierung. Ein abgeleiteter Funktionsbaustein "erweitert" zu diesem Zweck einen Basis-Funktionsbaustein und erhält dadurch die Eigenschaften des Basis-Funktionsbausteins zusätzlich zu seinen eigenen Eigenschaften.
Die Erweiterung eines Funktionsbausteins bedeutet:
-
Der abgeleitete Funktionsbaustein enthält alle Daten und Methoden, die vom Basis-Funktionsbaustein definiert sind. Eine Instanz des Basis-Funktionsbausteins können Sie in jedem Kontext verwenden, in dem CODESYS einen Funktionsbaustein vom Typ des Basis-Funktionsbausteins erwartet.
-
Der abgeleitete Funktionsbaustein darf die Methoden überschreiben, die Sie im Basis-Funktionsbaustein definiert haben. Das bedeutet: Der abgeleitete Funktionsbaustein kann eine Methode mit demselben Namen, denselben Eingängen und demselben Ausgang definieren, wie vom Basis-Funktionsbaustein definiert ist.
Tipp: Für dieses Überschreiben der vom Basisbaustein geerbten Methoden, Aktionen, Eigenschaften, Transitionen erhalten Sie folgendermaßen Unterstützung: Wenn Sie eine Methode, Aktion etc. unterhalb des abgeleiteten Bausteins einfügen, erhalten Sie im Dialog „Objekt hinzufügen“ eine Combobox mit einer Auswahl der im Basisbaustein verwendeten Methoden, Aktionen etc. und können diese übernehmen, um sie dann nur noch entsprechend anzupassen.
-
Der abgeleitete Funktionsbaustein darf keine Funktionsbaustein-Variable mit denselben Namen enthalten, wie Sie der Basis-Funktionsbaustein verwendet. Dies meldet der Compiler als Fehler.
Einzige Ausnahme: Wenn Sie eine Variable im Basis-Funktionsbaustein als
VAR_TEMP
deklariert haben, dann darf der abgeleitete Funktionsbaustein eine Variable mit demselben Namen definieren. In diesem Fall kann der abgeleitete Funktionsbaustein auf die Variable des Basis-Funktionsbausteins nicht mehr zugreifen. -
Sie können die Variablen und Methoden des Basis-Funktionsbausteins innerhalb des Gültigkeitsbereichs des abgeleiteten Funktionsbausteins durch die Verwendung des
SUPER
-Pointers direkt ansprechen.




HINWEIS

Mehrfache Vererbung ist nicht erlaubt.
Ausnahme: Ein Funktionsbaustein kann mehrere Schnittstellen implementieren und eine Schnittestelle kann andere Schnittstellen erweitern.
Erweitern eines Basis-Funktionsbausteins durch einen neuen Funktionsbaustein
Voraussetzung: Das aktuell geöffnete Projekt besitzt einen Basis-Funktionsbaustein, zum Beispiel „POU_1(FB)“, der durch einen neuen Funktionsbaustein erweitert werden soll.
-
Selektieren Sie das Objekt „Application“ im Gerätebaum und wählen Sie den Menübefehl „Projekt Objekt hinzufügen POU“.
Der Dialog „POU hinzufügen“ öffnet sich.
-
Geben Sie einen Namen für den neuen Funktionsbaustein in das Eingabefeld „Name“ ein, beispielsweise „POU_Ex“.
-
Wählen Sie „Funktionsbaustein“.
-
Wählen Sie „Erweitert:“ und klicken Sie auf die Schaltfläche
.
-
Wählen Sie in der Eingabehilfe aus der Kategorie „Funktionsbausteine“ unter „Application“ die POU(FB) aus, die als Basis-Funktionsbaustein dienen soll, zum Beispiel
POU_1
und klicken Sie auf „OK“. -
Optional können Sie einen „Zugriffsmodifizierer“ für den neuen Funktionsbaustein aus der Combobox auswählen.
-
Wählen Sie aus der Combobox „Implementierungsprache“ zum Beispiel „Strukturierter Text(ST)“ aus.
-
Klicken Sie auf „Hinzufügen“.
CODESYS fügt den Funktionsbaustein
POU_Ex
in den Gerätebaum ein und der Editor öffnet sich. In der ersten Zeile steht:FUNCTION_BLOCK POU_Ex EXTENDS POU_1
Der Funktionsbaustein
POU_Ex
erweitert den Basis-FunktionsbausteinPOU_1
.
Erweitern eines Basis-Funktionsbausteins durch einen bestehenden Funktionsbaustein
Voraussetzung: Das aktuell geöffnete Projekt besitzt einen Basis-Funktionsbaustein,
beispielsweise POU_1(FB)
, und einen weiteren Funktionsbaustein, beispielsweise POU_Ex(FB)
. Der Funktionsbaustein POU_Ex(FB)
soll auch die Eigenschaften des Basis-Funktionsbausteins erhalten. Das bedeutet:
POU_Ex(FB)
soll POU_1(FB)
erweitern.
-
Doppelklicken Sie im Gerätebaum auf den Funktionsbaustein
POU_Ex(FB)
.Der Editor des Funktionsbausteins öffnet sich.
-
Erweitern Sie den bestehenden Eintrag der obersten Zeile
FUNCTION_BLOCK POU_Ex
mitEXTENDS POU_1
.Der Funktionsbaustein POU_Ex erweitert den Basis-Funktionsbaustein
POU_1
.