Entwerfen und Entwickeln
Wenn Sie im Klassendiagramm grafisch programmieren, führen Ihre Änderungen bei den Objekten in der Ansicht POUs und Geräte automatisch zu Anpassungen. Neue Objekte werden in ihrer Grundstruktur eingefügt, bestehende Objekte werden geändert. Beispielsweise können Sie über das Klassendiagramm in Programmierbausteinen Deklarationen einfügen.
So können Sie in einem Klassendiagramm die Architektur ihrer Applikation entwerfen und erhalten synchron die dazu passenden Programmierbausteine. Danach ergänzen Sie die Implementierungen in den Programmierbausteinen.
Im Folgenden sehen Sie die einzelnen Schritte zum Erstellen eines Klassendiagramms für eine Applikation.
1. Projekt erstellen
Öffnen Sie CODESYS.
Wählen Sie den Befehl .
Bestimmen Sie einen Namen und einen Ort und wählen Sie als Vorlage Standardprojekt.
Der Dialog Standardprojekt öffnet sich.
Wählen Sie in PLC_PRG in als Implementierungssprache ST.
Das Projekt wird erstellt.
Selektieren sie den Knoten Applikation und wählen Sie den Befehl .
Der Dialog UML Klassendiagramm hinzufügen erscheint.
Geben Sie als Objektname
CD_Simpleein.Aktivieren Sie die Option Projektstruktur in aktives Klassendiagramm importieren.
Wählen sie Hinzufügen.

Speichern Sie das Projekt unter dem Namen
SimpleMachine.project.
2. Schnittstellen identifizieren
Schnittstellen bestimmen öffentlich sichtbare Methoden und Eigenschaften, um damit Klassen zu realisieren.
Öffnen Sie den Editor des Klassendiagramms
CD_Simple.Selektieren Sie in der Ansicht Werkzeuge eine Schnittstelle.
Ziehen Sie die Schnittstelle in den Editor.
Der Dialog Schnittstelle hinzufügen öffnet sich.
Geben Sie als Namen
IBaseMachineein. Schließen Sie den Dialog mit Hinzufügen.Selektieren Sie in der Ansicht Werkzeuge eine Methode.
Ziehen Sie die Methode auf die Schnittstelle
Der Dialog Schnittstellenmethode hinzufügen öffnet sich.
Geben Sie als Namen
DoItein.Geben Sie als Rückgabetyp
BOOLein. Schließen Sie den Dialog mit Hinzufügen.Selektieren Sie in der Ansicht Werkzeuge eine Eigenschaft.
Ziehen Sie die Eigenschaft auf die Schnittstelle
Der Dialog Schnittstelleneigenschaft hinzufügen öffnet sich.
Geben Sie als Namen
StateNumberein.Geben Sie als Rückgabetyp
INTein. Schließen Sie den Dialog mit Hinzufügen.
Tipp
Weitere Informationen zu Schnittstellen finden Sie unter Objekt Schnittstelle und Objekt Schnittstelleneigenschaft
3. Klassen identifizieren und Schnittstelle realisieren
Verschiedene Klassen, die dieselbe Schnittstelle realisieren, enthalten die gleichen Methoden und Eigenschaften. Wenn später die Schnittstelle geändert oder ergänzt wird, wirkt sich das auf alle realisierenden Klassen aus.
Öffnen Sie den Editor des Klassendiagramms
CD_Simple.Selektieren Sie in der Ansicht Werkzeuge eine Klasse.
Ziehen Sie die Klasse in den Editor.
Der Dialog POU hinzufügen öffnet sich.
Geben Sie als Namen
FB_Machineein.Aktivieren Sie die Option Funktionsbaustein.
Wählen Sie als Implementierungssprache UML - Zustandsdiagramm (Statechart SC) ein. Schließen Sie den Dialog mit Hinzufügen.
Im Klassendiagramm wird die Klasse
FB_Machinehinzugefügt.Selektieren Sie die Klasse.
Über der Klasse erscheinen Befehlssymbole.
Wählen Sie das Befehlssymbol
Realisierung (IMPLEMENTS) und klicken Sie auf die SchnittstelleIMachine.Der Dialog Implementierungssprache auswählen erscheint.
Wählen Sie Strukturierter Text (ST).
Die Klasse
FB_Machineerbt die Eigenschaften und Methoden der Schnittstelle und realisiert damit die SchnittstelleIMachine.
4. Generalisieren
Bei der Generalisierung erbt eine Klasse die Eigenschaften und Methoden von einer anderen Klasse.
Öffnen Sie den Editor des Klassendiagramms
CD_Simple.Selektieren Sie in der Ansicht Werkzeuge eine Klasse.
Ziehen Sie eine Klasse in den Editor.
Der Dialog POU hinzufügen öffnet sich.
Geben Sie als Namen
FB_Machine_Aein.Aktivieren Sie die Option Erweitert und geben Sie im Eingabefeld daneben
FB_Machinean.Der Funktionsbaustein
FB_Machinewird erweitert und ist deshalb eine Generalisierung vonFB_Machine_A.Wählen Sie als Implementierungssprache UML - Zustandsdiagramm (Statechart SC). Schließen Sie den Dialog mit Hinzufügen.
Im Klassendiagramm ist die Klasse
FBMachine_Aangelegt. Zwischen den KlassenFB_MachineundFB_Machine_Aist eine Generalisierung.FB_Machine_Aerbt vonFB_Machinederen Eigenschaften und Methoden.Wählen Sie in der Ansicht Werkzeuge das Element Variablendeklaration und ziehen Sie es auf die Klasse
FB_Machine_A.Der Dialog Variable deklarieren öffnet sich.
Geben Sie bei Name
iCounterund bei DatentypINTein. Schließen Sie den Dialog mit OK.Die Klasse
FB_Machine_Ahat nun außer den geerbten Eigenschaften und Methoden eigene Variablen.Selektieren Sie in der Klasse
FBMachine_Adie MethodeDoIt()und drücken Sie Entf.Die Methode wird im Diagramm entfernt, ebenso wie das Objekt in der Ansicht Geräte. Der erbende Funktionsbaustein
FBMachine_Abenötigt für die Methode keine spezielle eigene Implementierung, sondern ruft bei Bedarf die MethodeDoItdes BasisfunktionsbausteinsFBMachineauf.Anmerkung
Verwenden Sie bei Aufrufen von Methoden, die einem Basisfunktionsbaustein zugeordnet und geerbt sind, den Pointer
SUPER.
Tipp
Weitere Informationen finden Sie unter Erweitern eines Funktionsbausteins und Pointer SUPER.
5. Instanziieren
Öffnen Sie den Editor des Klassendiagramms
CD_Simple.Selektieren Sie das Programm
PLC_PRG.Über dem Programm erscheinen Befehlssymbole.
Wählen Sie das Befehlssymbol
Komposition (VAR) und klicken Sie auf die KlasseFB_Machine_A.Der Dialog Variablendeklaration erscheint.
Geben Sie als Namen
fb_Aein.Das Objekt
fb_Ader KlasseFBMachine_Aist instanziiert. Nun wird während der Laufzeit die Instanz der Klasse in seiner konkreten Ausprägung erzeugt.
Das Klassendiagramm stellt alle Objekte dar, die für die Generierung des Applikationscode relevant sind. Vor allem aber visualisiert das Klassendiagramm die Beziehungen unter den Objekten: Wer realisiert wen? Wer erbt von wem? Wer instanziiert was? Diese Information ist sonst in der Deklaration verborgen und beispielsweise in der Ansicht Geräte nicht ersichtlich.
6. Implementieren
Öffnen Sie den Funktionsbaustein
FBMachine.Deklarieren Sie die Funktionsbausteinvariablen.
FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine VAR iState: INT; iMachine : INT; END_VARImplementieren Sie den Funktionsbaustein.
iState := iState + 1; // Dummy for control ID
Implementieren Sie dessen Methode
DoIt.METHOD PUBLIC DoIt : BOOL iMachine := iMachine + 1; // Dummy
Implementieren Sie die Get-Methode der Eigenschaft
StateNumbervonFBMachine.StateNumber := iState;
Implementieren Sie die Set-Methode der Eigenschaft
StateNumbervonFBMachine.iState := StateNumber;
Öffnen Sie den Funktionsbaustein
FBMachine_A.Deklarieren Sie die Funktionsbausteinvariablen.
FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine VAR iCounter: INT; END_VAR
Implementieren Sie den Funktionsbaustein.
iCounter := iCounter + 1;
Implementieren Sie die Get-Methode der Eigenschaft
StateNumbervonFBMachine_A.StateNumber := iCounter;
Implementieren Sie die Set-Methode der Eigenschaft
StateNumbervonFBMachine_A.iCounter := StateNumber;
Wählen Sie den Befehl .
Die Applikation wird fehlerfrei kompiliert.

Laden und starten Sie die Applikation.
Sie können die Funktionsbaustein-Instanz
fb_Amonitoren.