2 Einfache Maschine
Dieses „UML Class Diagram“-Beispiel zeigt die grundlegende Funktionalität vom UML-Klassendiagramm am Beispiel einer exemplarischen, objektorientiert programmierten Maschine.
![]() | Beachten Sie, dass die Module nicht funktional implementiert wurden. Das Beispiel soll dazu dienen, die Funktionalitäten vom UML Klassendiagramm kennenzulernen und an einer beispielhaften Programmstruktur nachzuvollziehen. |
Mithilfe des Klassendiagramms kann die Struktur eines SPS-Programms erzeugt, erweitert und verändert werden.
Zusätzlich, wie in diesem Beispiel, kann die Struktur eines SPS-Programms Mithilfe des Klassendiagramms dokumentiert und auf Basis dieser Grafik einfach nachvollzogen werden.
Beispielprojekt: TF1910_UmlCD_Sample2_SimpleMachine.zip
Maschinenmodule
Die Applikation verfügt über die folgenden Ebenen und Module.
Maschinenebene: Maschine (FB_Machine)
Subsystem-Ebene: Ausschleusung (FB_Ejector)
Submodul-Ebene: Zylinder ohne bzw. mit Hardware-Feedback-Signal (FB_Cylinder, FB_CylinderFeedback)
Vererbung
Da alle diese genannten Funktionsbausteine Gemeinsamkeiten besitzen (gemeinsame Daten und Funktionalitäten), gibt es eine Basisklasse, in der diese Gemeinsamkeiten einmal implementiert werden. Über den Vererbungsmechanismus der objektorientierten Programmierung werden diese Implementierungen an die Unterklassen vererbt.
- Die vier Maschinenmodule erweitern FB_ModuleRoot.
Des Weiteren stellt der Zylinder mit Feedback-Funktionalität eine Erweiterung des Zylinders ohne diese Funktionalität dar. Daher wird auch an dieser Stelle die Vererbung verwendet.
- FB_CylinderFeedback erweitert FB_Cylinder.
Schnittstelle
Um die Anforderungen an unterschiedliche Zylinderarten zu definieren, werden die grundlegenden Methoden und Eigenschaften, die ein Zylinder bereitstellen muss, in einer Schnittstelle festgelegt.
- I_Cylinder definiert die Zylinderanforderungen.
- FB_Cylinder implementiert I_Cylinder.
Instanziierung
- MAIN instanziiert FB_Machine.
- FB_Machine instanziiert FB_Ejector zweimal, da die Maschine über zwei Ausschleusungsmodule verfügt.
- FB_Ejector instanziiert I_Cylinder, FB_Cylinder und FB_CylinderFeedback. Als Beispiel ist immer nur ein Zylinder gleichzeitig aktiv, entweder der Zylinder mit Feedback-Funktionalität oder der Zylinder ohne Feedback-Funktionalität. Der Interfacevariablen iCylinder wird der aktuell aktive Zylinderinstanz zugewiesen. Dadurch kann der aktive Zylinder generalisiert über die Interfacevariable angesteuert werden.
- FB_ModuleRoot instanziiert ST_Error.