Erweitern eines Funktionsbausteins

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 („erbt“) dadurch prinzipiell die Eigenschaften und Funktionalitäten des Basis-Funktionsbausteins – zusätzlich zu seinen eigenen Eigenschaften und Funktionalitäten.

Die Bezeichnung „Funktionsbaustein“ kann in TwinCAT synonym zur Bezeichnung „Klasse“ verwendet werden. Der abgeleitete Funktionsbaustein kann somit auch als „Unterklasse“ und der Basis-Funktionsbaustein als „Basisklasse“ bezeichnet werden.

Beachten Sie unbedingt die folgenden Informationen:

 

Erweitern eines Funktionsbausteins 1:

Anzahl der Erweiterungen pro Basis-Funktionsbaustein

Die Anzahl der Erweiterungen pro Basis-Funktionsbaustein ist nicht beschränkt. Sie können also einen Funktionsbaustein durch mehrere andere Funktionsbausteine erweitern und dadurch auf verschiedene Arten spezialisieren.

  • Möglich:
    FUNCTION_BLOCK FB_Sub1 EXTENDS FB_Base
    FUNCTION_BLOCK FB_Sub2 EXTENDS FB_Base
    FUNCTION_BLOCK FB_Sub3 EXTENDS FB_Base
Erweitern eines Funktionsbausteins 2:

Anzahl der Vererbungsebenen

Die Anzahl der Vererbungsebenen ist nicht beschränkt. Sie können also einen Funktionsbaustein, der einen anderen Funktionsbaustein erweitert, in einem weiteren Funktionsbaustein spezialisieren etc.

  • Möglich:
    FUNCTION_BLOCK FB_Sub EXTENDS FB_Base
    FUNCTION_BLOCK FB_SubSub EXTENDS FB_Sub
    FUNCTION_BLOCK FB_SubSubSub EXTENDS FB_SubSub
Erweitern eines Funktionsbausteins 3:

Mehrfachvererbung nicht erlaubt

Bei Funktionsbausteinen ist Mehrfachvererbung nicht erlaubt. Es ist nicht möglich, dass ein Funktionsbaustein mehr als einen anderen Funktionsbaustein erweitert.

Ausnahme: Ein Funktionsbaustein kann mehrere Schnittstellen implementieren und eine Schnittstelle kann mehrere andere Schnittstellen erweitern.

  • Nicht möglich:
    FUNCTION_BLOCK FB_Sub EXTENDS FB_Base1, FB_Base2
  • Möglich:
    FUNCTION_BLOCK FB_Sample IMPLEMENTS I_Sample1, I_Sample2
  • Möglich:
    INTERFACE I_Sub EXTENDS I_Base_1, I_Base_2
Erweitern eines Funktionsbausteins 4:

Überladen

Das Überladen von Methoden ist nicht möglich. Wenn Sie in einer Unterklasse also eine Methode der Basisklasse überschreiben oder erweitern (gleicher Methodenname), muss die Methodendeklaration der Deklaration in der Basisklasse entsprechen (Zugriffsmodifizierer, Rückgabetyp, Variablenschnittstelle).

Erweitern eines Basis-Funktionsbausteins durch einen neuen Funktionsbaustein

Das aktuell geöffnete Projekt besitzt einen Basis-Funktionsbaustein, zum Beispiel FB_Sample, der durch einen neuen Funktionsbaustein erweitert werden soll.
1. Selektieren Sie das SPS-Projektobjekt oder einen Unterordner im SPS-Projektbaum und wählen Sie im Kontextmenü den Befehl Hinzufügen > POU…
Der Dialog POU hinzufügen öffnet sich.
2. Geben Sie einen Namen für den neuen Funktionsbaustein in das Eingabefeld Name ein, beispielsweise FB_SampleEx.
3. Wählen Sie Funktionsbaustein.
4. Wählen Sie Erweitert und klicken Sie auf die Schaltfläche Erweitern eines Funktionsbausteins 5:.
5. Wählen Sie in der Eingabehilfe aus der Kategorie Funktionsbausteine unter dem Projekt die POU(FB) aus, die als Basis-Funktionsbaustein dienen soll, zum Beispiel „FB_Sample“ und klicken Sie auf OK.
6. Optional können Sie einen Zugriffsmodifizierer für den neuen Funktionsbaustein aus der Combobox auswählen.
7. Wählen Sie aus der Combobox Implementierungsprache zum Beispiel „Strukturierter Text (ST)“ aus.
8. Klicken Sie auf Öffnen.
TwinCAT fügt den Funktionsbaustein FB_SampleEx in den SPS-Projektbaum ein und der Editor öffnet sich. In der ersten Zeile steht:
FUNCTION_BLOCK FB_SampleEx EXTENDS FB_Sample
Der Funktionsbaustein FB_SampleEx erweitert den Basis-Funktionsbaustein FB_Sample.

Erweitern eines Basis-Funktionsbausteins durch einen bestehenden Funktionsbaustein

Das aktuell geöffnete Projekt besitzt einen Basis-Funktionsbaustein, zum Beispiel „FB_Sample“, und einen weiteren Funktionsbaustein, zum Beispiel „FB_SampleEx“, der noch nicht vom Basis-Funktionsbaustein abgeleitet ist. Der Funktionsbaustein FB_SampleEx soll den Basis-Funktionsbaustein erweitern, das bedeutet: FB_SampleEx soll FB_Sample erweitern.
1. Doppelklicken Sie im SPS-Projektbaum auf den Funktionsbaustein FB_SampleEx.
Der Editor der POU öffnet sich.
2. Erweitern Sie den bestehenden Eintrag der obersten Zeile FUNCTION_BLOCK FB_SampleEx mit EXTENDS FB_Sample.
Der Funktionsbaustein FB_SampleEx erweitert den Basis-Funktionsbaustein FB_Sample.

Siehe auch: