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.




HINWEIS

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“.




HINWEIS

-
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 Online-Betrieb
den Wert 0
.
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.
-
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.
-
Geben Sie einen Namen für den neuen Funktionsbaustein in das Eingabefeld „Name“ ein, zum Beispiel „POU_Im“.
-
Wählen Sie „Funktionsbaustein“.
-
Wählen Sie „Implementiert:“ und klicken Sie auf die Schaltfläche
.
-
Wählen Sie in der Eingabehilfe aus der Kategorie „Schnittstellen“ die Schnittstelle zum Beispiel
ITF1
und klicken Sie auf „OK“. -
Um eine weitere Schnittstellen einzufügen, klicken Sie erneut auf
und wählen Sie eine weitere Schnittstelle aus.
-
Optional können Sie einen „Zugriffsmodifizierer“ für den neuen Funktionsbaustein aus der Auswahlliste auswählen.
-
Wählen Sie aus der Auswahlliste „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_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“.
-
Doppelklicken Sie im Gerätebaum auf die POU „POU_Ex(FB)“.
Der Editor der POU öffnet sich.
-
Erweitern Sie den bestehenden Eintrag der obersten Zeile
FUNCTION_BLOCK POU_Im
mitIMPLEMENTS ITF1
.Der Funktionsbaustein „POU_Im“ implementiert die Schnittstelle „ITF1“.
Siehe auch