Symbol:
Schlüsselwort: INTERFACE
Eine Schnittstelle ist ein Mittel der objektorientierten Programmierung. Das Objekt
ITF
beschreibt ein Set von Methoden- und Eigenschaft-Prototypen. Prototyp bedeutet in
diesem Zusammenhang, dass die Methoden und Eigenschaften nur Deklarationen und keine
Implementierung enthalten.
Auf diese Weise können Sie verschiedene Funktionsbausteine, die gemeinsame Eigenschaften haben, gleichartig nutzen. Ein Objekt „ITF“ fügen Sie der Applikation oder dem Projekt mit dem Befehl „Projekt Objekt hinzufügen Schnittstelle “ hinzu.
„Vererbung“ |
|
„Name“ |
Schnittstellenname |
„Erweitert“ |
|
Dem Objekt „ITF“ können Sie die Objekte „Schnittstelleneigenschaft“ und „Schnittstellenmethode“ hinzufügen. Schnittstellenmethoden dürfen nur die Deklarationen von Eingabe-, Ausgabe-, und VAR_IN_OUT-Variablen, aber keine Implementierung enthalten.
Damit Sie eine Schnittstelle auch im Programm verwenden können, muss es einen Funktionsbaustein geben, der diese Schnittstelle implementiert.
Das bedeutet:
-
der Funktionsbaustein enthält in seinem Deklarationsteil die Schnittstelle in seiner IMPLEMENTS-Liste
-
der Funktionsbaustein enthält für alle Methoden und Eigenschaften-Prototypen der Schnittstelle eine Implementierung
Ein Funktionsbaustein kann eine oder mehrere Schnittstellen implementieren. Sie können die gleiche Methode mit identischen Parametern, aber unterschiedlichem Implementierungscode in verschiedenen Funktionsbausteinen verwenden.
Beachten Sie Folgendes
-
Sie dürfen keine Variablen innerhalb einer Schnittstelle deklarieren. Eine Schnittstelle hat keinen Implementierungsteil und keine Aktionen. Nur eine Sammlung von Methoden ist definiert und in diesen dürfen Sie nur Eingabe-, Ausgabe- und VAR_IN_OUT-Variablen definieren.
-
CODESYS behandelt Variablen, die mit dem Typ einer Schnittstelle deklariert sind, immer als Referenzen.
-
Ein Funktionsbaustein, der eine Schnittstelle implementiert, muss Implementierungs-Code für die Methoden der Schnittstelle enthalten. Die Methoden haben Sie genauso benannt wie in der Schnittstelle und die Methoden enthalten dieselben Eingabe-, Ausgabe- und VAR_IN_OUT-Variablen wie in der Schnittstelle.




HINWEIS

Schnittstellenreferenzen und Online-Change
Mit Compiler-Version < 3.4.1.0 kann Folgendes passieren: Wenn ein Funktionsbaustein seine Daten ändert, weil Variablen hinzugefügt oder gelöscht werden, oder weil sich der Typ von Variablen ändert, dann kopiert CODESYS alle Instanzen des Funktionsbausteins an einen neuen Speicherplatz. In diesem Fall verweist eine Schnittstellenreferenz aber nicht auf den neuen Speicherplatz, sondern immer noch auf den alten.
Mit Compiler-Versionen >= 3.4.1.0 adressiert CODESYS die Schnittstellen-Referenzen automatisch um, so dass CODESYS auch im Falle eines Online-Change die korrekte Schnittstelle referenziert. Dafür benötigt CODESYS zusätzlichen Code und mehr Zeit, sodass abhängig von der Anzahl der betroffenen Objekte Jitter-Probleme auftreten können. Deshalb zeigt CODESYS vor Ausführung des Online-Change die Anzahl der betroffenen Variablen und Schnittstellen-Referenzen an und Sie entscheiden, ob der Online-Change durchgeführt oder abgebrochen wird.
Beispiel
Definition einer Schnittstelle und Verwendung in einem Funktionsbaustein
Sie haben die Schnittstelle „ITF“ unterhalb der Applikation eingefügt. Die Schnittstelle enthält die Methoden „Method1“ und „Method2“. „ITF“, „Method1“ und „Method2“ enthalten keinen Implementierungscode. Nur im Deklarationsteil der Methoden fügen Sie die benötigten Variablendeklarationen ein.
Wenn Sie anschließend einen Funktionsbaustein im Gerätebaum einfügen der die Schnittstelle „ITF“ implementiert, fügt CODESYS automatisch auch die Methoden „Method1“ und „Method2“ unter dem Funktionsbaustein ein. Hier können Sie in den Methoden funktionsbaustein-spezifischen Code implementieren.
