Diese Funktionalität ist nur in bestimmten Ausbaustufen verfügbar.

Interface

In modernen Programmiersprachen (Java, C#) gibt es das Konzept der Interfaces. Ziel ist es, Schnittstellen einer Komponente unabhängig von deren Implementierung formal zu spezifizieren. Komponenten können mehrere Schnittstellen implementieren, wodurch eine Mehrfach-Schnittstellenvererbung realisierbar ist.

Bereits durch das Vererbungskonzept ist es möglich, Parameter von Komponenten zu vereinheitlichen (Die Komponente AbstrakteStation des Pfuderer-Modells definiert beispielsweise die Parameter Stationsnummer, Ort, Anlage und Funktionstext, die den Komponenten Einsetzen, Magazin etc. vererbt werden). Beim Vererben werden jedoch sowohl die Schnittstelle (Auswahl der Parameter) als auch die Implementierung (Formeln, Methoden) an Kindklassen vererbt.

Durch das Interface-Konzept ist es nun möglich, Schnittstellen bzw. Schnittstellenhierarchien unabhängig von deren Implementierung durch Komponenten zu definieren.

Das in der Grafik dargestellte Interface ILocation definiert zunächst neutral von der Implementierung, dass eine Komponente, die dieses Interface implementiert, die Parameter Ort und Stationsnummer haben muss. Dieses Interface kann dann beispielsweise den Komponenten AbstrakteStation und Drehteller zugewiesen werden.

Dieses Beispiel zeigt, dass man mit Interfaces zusätzliche Klassifikationen definieren kann: Mit dem Interface ILocation werden alle Komponenten markiert, die über die für die hinreichende Angabe eines Ortes erforderlichen Parameter Ort und Stationsnummer verfügen.

Nutzung von Interfaces

Der Algorithmus für das Feldbuslinken konnte die Steuerungskomponenten einer Konfiguration bisher nur indirekt dadurch erkennen, dass sie Steuerungshardwarekomponenten einer SPS-Disziplin enthielten.

Die aktualisierte Implementierung des Feldbuslinkings definiert nun Interfaces (IController, ICoupler, ITerminal), mit denen nun Steuerungskomponenten explizit markiert werden können (Marker-Interfaces).

rmos-Anfragen können im Allgemeinen durch das gezielte Suchen nach einem Typ und die Definition eines rmos-Index stark beschleunigt werden.

Oft wird jedoch nicht nach einem bestimmten Typ sondern beispielsweise nach allen Objekten mit den Parametern A und B gesucht. Diese Anfragen wurden bisher mit einer allgemeinen rmos-Anfrage und dann einem select-Statement formuliert, was sehr rechenaufwändig ist.

Interfaces ermöglichen hier ein zusätzliche Klassifikation und damit eine performantere Anfrage: Es wird ein Interface mit den Parametern A und B definiert und allen relevanten Komponentenklassen zugewiesen. Die rmos-Anfrage wird nun mit Hilfe des Interfaces statt eines Typs eingeschränkt. Auch für Interfaces kann ein Index definiert werden!

Interfaces ermöglichen insgesamt eine bessere, ausdrucksstärkere Modellierung. Wie bereits der Screenshot zeigt, können Interfaces erweitert (vererbt) werden, so dass Interface-Hierarchien definierbar sind.

Anmerkung:

In Anlehnung an den Eclipse-Programmierstandard stellen wir den Interfaces zur Kennzeichnung immer ein "I" voran.