ABSTRACT-Konzept
Das Schlüsselwort ABSTRACT ist für Funktionsbausteine, Methoden und Eigenschaften verfügbar. Es ermöglicht die Implementierung eines SPS-Projektes mit Abstraktionsebenen.
Die Abstraktion ist ein Schlüsselkonzept der Objektorientierten Programmierung. Verschiedene Abstraktionsebenen enthalten dabei allgemeine oder spezifische Implementationsaspekte.
Verfügbar ab TC3.1 Build 4024 |
Anwendung der Abstraktion
Es bietet sich an, Basisfunktionen oder Gemeinsamkeiten verschiedener Klassen in einer abstrakten Basisklasse zu implementieren. Spezifische Aspekte implementieren Sie in nicht-abstrakten Unterklassen.
Das Prinzip ähnelt damit der Verwendung einer Schnittstelle. Schnittstellen entsprechen rein abstrakten Klassen, die nur abstrakte Methoden und Eigenschaften enthalten. Eine abstrakte Klasse kann auch nicht-abstrakte Methoden und Eigenschaften enthalten.
Regeln für die Nutzung des Schlüsselworts ABSTRACT
- Abstrakte Funktionsbausteine können nicht instanziiert werden.
- Abstrakte Funktionsbausteine können abstrakte und nicht-abstrakte Methoden und Eigenschaften enthalten.
- Abstrakte Methoden oder Eigenschaften enthalten keine Implementierung (nur die Deklaration).
- Wenn ein Funktionsbaustein eine abstrakte Methode oder Eigenschaft enthält, muss er selbst auch abstrakt sein.
- Abstrakte Funktionsbausteine müssen erweitert werden, um die abstrakten Methoden oder Eigenschaften implementieren zu können.
- Daraus folgt: Ein abgeleiteter FB muss die Methoden/Eigenschaften seines Basis-FBs implementieren oder er muss ebenfalls als abstrakt definiert werden.
Beispiel
Abstrakte Basisklasse:
FUNCTION_BLOCK ABSTRACT FB_System_Base
In dieser abstrakten Basisklasse werden die Gemeinsamkeiten aller Systemmodule implementiert. Dafür enthält sie die nicht-abstrakte Eigenschaft „nSystemID“ und die abstrakte Methode „Execute“:
PROPERTY nSystemID : UINT
METHOD ABSTRACT Execute
Während die Implementierung von „nSystemID“ für alle Systeme gleich ist, unterscheidet sich die Implementierung der Methode „Execute“ für die einzelnen Systeme.
Nicht-abstrakte Unterklasse:
FUNCTION_BLOCK FB_StackSystem EXTENDS FB_System_Base
Für die spezifischen Systeme werden nicht-abstrakte Klassen implementiert, die von der Basisklasse abgeleitet werden. Diese Unterklasse repräsentiert einen Stack. Da sie nicht abstrakt ist, muss sie die Methode „Execute“ implementieren, die die spezifische Stack-Ausführung definiert:
METHOD Execute