Skip to main content

Implementieren einer Schnittstelle

Die Implementierung von Schnittstellen basiert auf dem Konzept der objektorientierten Programmierung. Über gemeinsame Schnittstellen können Sie verschiedene aber gleichartige Funktionsbausteine gleichartig implementieren.

Ein Funktionsbaustein, der eine Schnittstelle implementiert, muss für alle mit dieser Schnittstelle definierten Methoden und Eigenschaften einen eigenen Code implementieren.

Wenn Sie einen neuen Funktionsbaustein definieren, der eine Schnittstelle implementiert, werden die Methoden und Eigenschaften dieser Schnittstelle automatisch unterhalb des neuen Funktionsbausteins im Objektbaum eingefügt. Es werden jedoch nicht alle, sondern nur die Methoden und Eigenschaften eingefügt, die für eine fehlerfreie Kompilierung benötigt werden.

Wenn Sie einer Schnittstelle nachträglich weitere Methoden hinzufügen, werden diese Methoden nicht automatisch in die Deklaration der die Schnittstelle implementierenden Funktionsbausteine übernommen. Um dort die Implementierung zu aktualisieren, müssen Sie den Befehl Schnittstellen implementieren aufrufen. Wenn Sie einzelnen Methoden überschreiben wollen, wählen Sie den Befehl Objekt hinzufügenMethode. Im sich öffnenden Dialog sind dann alle überschreibbaren Methoden aufgelistet. Klicken Sie für eine Auswahl in die Auswahlliste Name.

Bei abgeleiteten Funktionsbausteinen müssen Sie sicherstellen, dass Methoden oder Eigenschaften, die über EXTENDS aus einer Schnittstelle geerbt werden, korrekt implementiert sind. Wird keine eigene Implementierung bereitgestellt, verwendet der Funktionsbaustein automatisch die Basisimplementierung des übergeordneten oder eines verwandten Funktionsbausteins.

Für weitere Informatinen siehe: Schnittstelle aktualisieren, Methode

Schnittstellenvariable verwenden

Wichtig

Einer Variable, die mit dem Typ Schnittstelle definiert wurde, muss eine Funktionsbaustein-Instanz mit typkonformer Schnittstelle zugewiesen werden. Erst dann können Sie Methoden über diese Variable aufrufen.

Eine Variable vom Typ einer Schnittstelle ist immer eine Referenz auf die zugewiesenen Funktionsbaustein-Instanz.

Beispiel 29. Beispiel

Eine Schnittstellenvariable dient als eine Referenz auf eine Funktionsbaustein-Instanz. Sie kann auf jede Instanz verweisen, die diese Schnittstelle implementiert. Welche konkrete Instanz zugewiesen ist, kann zur Laufzeit variieren. Bis zur ersten Zuweisung enthält die Variable den Wert 0.

Die Schnittstelle I1 enthält die Methode GetName.

Die Funktionsbausteine A und B implementieren jeweils die Schnittstelle I1:

METHOD GetName : STRING
FUNCTION_BLOCK A IMPLEMENTS I1
FUNCTION_BLOCK B IMPLEMENTS I1

Beide Funktionsbausteine können eine Methode mit dem Namen GetName und dem Rückgabetyp STRING enthalten.

Eine Funktion enthält die Deklaration einer Variablen vom Typ der Schnittstelle I1.

FUNCTION DeliverName : STRING
VAR_INPUT
    l_i : I1;
END_VAR

Funktionsbausteine, die die Schnittstelle I1 implementieren, können dieser Eingangsvariablen zugewiesen werden.

Beispiele für Funktionsaufrufe:

DeliverName(l_i := A_instance); // call with instance of type A
DeliverName(l_i := B_instance); // call with instance of type B

Aufruf der Schnittstellen-Methode:

In diesem Falle hängt es vom tatsächlichen Typ von l_i ab, ob die Applikation A.GetName oder B.GetName aufruft.

DeliverName := l_i.GetName();


Implementieren einer Schnittstelle in einen neuen Funktionsbaustein

Voraussetzung: Das aktuell geöffnete Projekt hat mindestens ein Schnittstellen-Objekt.

  1. Selektieren Sie das Objekt Applikation im Gerätebaum und wählen Sie den Menübefehl ProjektObjekt hinzufügenPOU.

    Der Dialog POU hinzufügen öffnet sich.

  2. Geben Sie einen Namen für den neuen Funktionsbaustein in das Eingabefeld Name ein, zum Beispiel POU_Im.

  3. Wählen Sie den Typ Funktionsbaustein.

  4. Wählen Sie die Eigenschaft Implementiert und klicken Sie auf die Schaltfläche _cds_icon_input_assistent.png.

  5. Wählen Sie in der Eingabehilfe die Kategorie Schnittstellen aus und dann beispielsweise die Schnittstelle ITF1. Klicken Sie anschließend auf OK.

  6. Wenn Sie eine weitere Schnittstelle einfügen möchten, klicken Sie erneut auf _cds_icon_input_assistent.png. Wählen Sie anschließend die gewünschte Schnittstelle aus.

  7. Optional können Sie einen Zugriffsmodifizierer für den neuen Funktionsbaustein aus der Auswahlliste auswählen.

  8. Wählen Sie aus der Auswahlliste Implementierungssprache zum Beispiel Strukturierter Text(ST) aus.

  9. Klicken Sie auf Hinzufügen.

    CODESYS fügt den Funktionsbaustein POU_Ex mit den Schnittstellen in den Gerätebaum ein und der Editor öffnet sich.

    In der ersten Zeile steht:

    FUNCTION_BLOCK POU_Im IMPLEMENTS ITF1

    Die Schnittstelle und ihre Methoden und Eigenschaften sind nun im Gerätebaum unter dem Funktionsbaustein eingefügt. Sie können nun Programmcode im Implementierungsteil der Schnittstelle und ihrer Methoden eingeben.

Implementieren einer Schnittstelle in einen bestehenden Funktionsbaustein

Voraussetzung: Das aktuell geöffnete Projekt hat einen Funktionsbaustein, zum Beispiel POU_Im, und mindestens ein Schnittstellen-Objekt, zum Beispiel ITF1.

  1. Doppelklicken Sie im Gerätebaum auf die POU POU_Ex(FB).

    Der Editor der POU öffnet sich.

  2. Erweitern Sie den bestehenden Eintrag der obersten Zeile FUNCTION_BLOCK POU_Im mit IMPLEMENTS ITF1.

    Der Funktionsbaustein POU_Im implementiert die Schnittstelle ITF1.

Schnittstelle aktualisieren

Wenn Sie einer bereits definierten Schnittstelle später weitere Methoden und Eigenschaften hinzufügen, werden die Funktionsbausteine, die diese Schnittstelle implementieren, nicht automatisch um die neuen Methoden erweitert. Sie müssen die Funktionsbausteine, die eine Schnittstellenimplementierung erhalten sollen, manuell aktualisieren.

Wählen Sie dazu den Befehl Schnittstellen implementieren, um die neuen Objekte einzufügen.

Für weitere Informationen siehe: Schnittstellen implementieren

Methode überschreiben

In Szenarien mit IMPLEMENTS (Schnittstellen) und EXTENDS (Vererbung) kann es nötig sein, Methoden, die in der Schnittstelle schon deklariert sind, in abgeleiteten Funktionsbausteinen erneut zu implementieren, um sie anzupassen oder zu überschreiben.

Wenn Sie einzelne Methoden überschreiben möchten, wählen Sie den Befehl Objekt hinzufügenMethode. Der sich öffnende Dialog listet alle überschreibbaren Methoden auf, sodass Sie die gewünschte Methode, die eine eigene Implementierung erhalten soll, auswählen können. Diese wird hinzugefügt und Sie können die Implementierung ergänzen.

Für weitere Informationen siehe: Dialog Methode hinzufügen