Skip to main content

Implementieren einer Schnittstelle

Implementieren einer Schnittstelle

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

Ein Funktionsbaustein, der eine Schnittstelle implementiert, muss alle Methoden und Eigenschaften enthalten, die in dieser Schnittstelle definiert sind (Schnittstellen-Methoden und Schnittstellen-Eigenschaften). Das bedeutet: Name, Eingänge und Ausgang der jeweiligen Methode oder Eigenschaft müssen exakt gleich sein.

Wenn Sie einen neuen Funktionsbausteins anlegen, der eine Schnittstelle implementiert, fügt CODESYS automatisch alle Methoden und Eigenschaften dieser Schnittstelle unterhalb des neuen Funktionsbausteins im Baum ein.

Wichtig

Wenn Sie danach weitere Methoden der Schnittstelle hinzufügen, fügt CODESYS diese Methoden nicht automatisch auch in den betreffenden Funktionsbausteinen hinzu. Für die Aktualisierung müssen Sie explizit den Befehl Schnittstellen implementieren auswählen.

Bei abgeleiteten Funktionsbausteinen müssen Sie darauf achten, dass Methoden oder Eigenschaften, die durch „Vererbung“ einer Schnittstelle übernommen wurden, die gewünschte Implementierung erhalten oder gelöscht werden, falls die in der Basis vorliegende Implementierung verwendet werden soll. Sie erhalten entsprechende Übersetzungsfehlermeldungen oder Warnungen, provoziert durch automatisch eingefügte Pragmaattribute. Sehen Sie bitte die Hilfeseite zum Befehl Schnittstellen implementieren.

Wichtig

  • Einer Variablen vom Typ einer Schnittstelle müssen Sie die Schnittstelle eines Funktionsbausteins zuweisen, bevor eine Methode über die Variable aufgerufen werden kann.

  • Eine Variable vom Typ einer Schnittstelle ist immer eine Referenz der zugewiesenen Funktionsbausteininstanz.

Eine Variable vom Typ einer Schnittstelle ist eine Referenz auf Instanzen von Funktionsbausteinen. Eine solche Variable kann auf jeden Funktionsbaustein verweisen, der die Schnittstelle implementiert. Wenn keine Zuweisung auf die Variable erfolgt ist, dann enthält die Variable im Onlinebetrieb den Wert 0.

Beispiel 30. Beispiele

Die Schnittstelle I1 enthält die Methode GetName.

METHOD GetName : STRING

Die Funktionsbausteine A und B implementieren jeweils die Schnittstelle I1:

FUNCTION_BLOCK A IMPLEMENTS I1
FUNCTION_BLOCK B IMPLEMENTS I1

Beide Funktionsbausteine müssen deswegen eine Methode mit dem Namen GetName und dem Rückgabetyp STRING enthalten. Ansonsten meldet der Compiler einen Fehler.

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 besitzt mindestens ein Schnittstellen-Objekt.

  1. Selektieren Sie Application im Gerätebaum und wählen Sie den Menübefehl Projekt → Objekt 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, zum Beispiel POU_Im.

  3. Wählen Sie Funktionsbaustein.

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

  5. Wählen Sie in der Eingabehilfe aus der Kategorie Schnittstellen die Schnittstelle zum Beispiel ITF1 und klicken Sie auf OK.

  6. Um eine weitere Schnittstellen einzufügen, klicken Sie erneut auf _cds_icon_input_assistent.png und wählen Sie eine weitere 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 Implementierungsprache zum Beispiel Strukturierter Text(ST) aus.

  9. 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_Im IMPLEMENTS ITF1

    Die Schnittstelle und ihre Methoden und Eigenschaften sind jetzt im Gerätebaum unter dem Funktionsbaustein eingefügt und 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 besitzt 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.