Objekt Schnittstelle

Symbol: Objekt Schnittstelle 1:

Schlüsselwort: INTERFACE

Eine Schnittstelle ist ein Mittel der objektorientierten Programmierung. Das Objekt Schnittstelle 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.

Dem Objekt Schnittstelle können Sie die Objekte Schnittstelleneigenschaft und Schnittstellenmethode hinzufügen.

Objekt Schnittstelle anlegen

1. Selektieren Sie im Projektmappen-Explorer im SPS-Projektbaum einen Ordner.
2. Wählen Sie im Kontextmenü den Befehl Hinzufügen > Schnittstelle…
Der Dialog Schnittstelle hinzufügen öffnet sich.
3. Geben Sie einen Namen ein und wählen Sie optional eine Schnittstelle aus, welche erweitert werden soll.
4. Klicken Sie auf Öffnen.
Die Schnittstelle wird zum SPS-Projektbaum hinzugefügt und im Editor geöffnet.

Dialog Schnittstelle hinzufügen

Name

Schnittstellenname

Vererbung

Erweitert

Objekt Schnittstelle 2:: Erweitert die Schnittstelle, die Sie im Eingabefeld eingeben oder über die Eingabehilfe Objekt Schnittstelle 3: auswählen. Dies bedeutet, dass alle Methoden der Schnittstelle, die die neue Schnittstelle erweitert, auch in der neuen Schnittstelle verfügbar sind.

Anwendungsfälle einer Schnittstelle

1. Prüfung der Schnittstellenvereinbarung mittels Compiler

 

2. Aufruf von Methoden und Eigenschaften einer Funktionsbausteininstanz über eine Schnittstellenvariable

Neben der automatischen Prüfung der Schnittstellenvereinbarung mittels Compiler können Sie Schnittstellen verwenden, um über eine Schnittstellenvariable eine Schnittstellenmethode oder Schnittstelleneigenschaft einer Funktionsbausteininstanz aufzurufen.

Objekt Schnittstelle 4:

Einer Variablen vom Typ einer Schnittstelle müssen Sie die Instanz eines Funktionsbausteins zuweisen, bevor eine Methode oder Eigenschaft über die Schnittstellenvariable aufgerufen werden kann.

Hinweise

Schnittstellenreferenzen und Online-Change

Prüfen von Schnittstellenvariablen

Erweitertes Monitoring einer Schnittstellenvariablen

Beispiel 1

Objekt Schnittstelle 5:

Deklaration der Schnittstelle:

INTERFACE I_Sample

Methode I_Sample.GetType:

METHOD GetType : STRING

 

Implementierung der Schnittstelle:

FUNCTION_BLOCK FB_A IMPLEMENTS I_Sample
FUNCTION_BLOCK FB_B IMPLEMENTS I_Sample

Methode FB_A.GetType:

METHOD GetType : STRING
GetType := 'FB_A';

Methode FB_B.GetType:

METHOD GetType : STRING
GetType := 'FB_B';

 

Verwendung der Schnittstelle:

FUNCTION F_DeliverType : STRING
VAR_INPUT
    iSample : I_Sample;
END_VAR

F_DeliverType := iSample.GetType();
PROGRAM MAIN
VAR
    fbA       : FB_A;
    fbB       : FB_B;
    sResultA  : STRING;
    sResultB  : STRING;
END_VAR

sResultA := F_DeliverType(iSample := fbA); // call with instance of type FB_A
sResultB := F_DeliverType(iSample := fbB); // call with instance of type FB_B

Beispiel 2

Objekt Schnittstelle 6:

Deklaration der Schnittstelle:

INTERFACE I_Name

Eigenschaft I_Name.Name:

PROPERTY Name : STRING

 

Implementierung der Schnittstelle:

FUNCTION_BLOCK FB_SampleA IMPLEMENTS I_Name
VAR
    sVar1 : STRING := 'My name is A.';
END_VAR

FUNCTION_BLOCK FB_SampleB IMPLEMENTS I_Name
VAR
    sVar2 : STRING := 'My name is B.';
END_VAR

FB_SampleA.Name.Get:

Name := sVar1;

FB_SampleA.Name.Set:

sVar1 := Name;

FB_SampleB.Name.Get:

Name := sVar2;

FB_SampleB.Name.Set:

sVar2 := Name;

 

Verwendung der Schnittstelle:

PROGRAM MAIN
VAR
    iName     : I_Name;

    fbSampleA : FB_SampleA;
    sNameA    : STRING;       // will be 'My name is A.'

    fbSampleB : FB_SampleB;
    sNameB    : STRING;       // will be 'My name is B.' after first cycle
                              // and will be 'New name' afterwards
END_VAR

// assign FB instance fbSample1 to interface variable
iName := fbSampleA;
 
// access to name property of fbSample1 via interface variable (Get)
sNameA := iName.Name;
 
// access to name property of fbSample2 via FB instance (Get and Set)
sNameB := fbSampleB.Name;
fbSampleB.Name := 'New name';

Siehe auch: