Code wiederverwenden: Objektorientierte

Code wiederverwenden: Objektorientierte
Programmierung (OOP) sinnvoll nutzen
Roland Wagner
Automatisierungstreff IT & Automation 2015
CODESYS® a trademark of 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Agenda
2
1
Warum Steuerungen objektorientiert programmieren?
2
Umsetzung von OOP innerhalb eines IEC 61131-3-Tools
3
Beispiel
4
Typische Anwendungsgebiete
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
OOP für Steuerungen?
Was ist objektorientiertes Programmieren (OOP)?
 Ein auf dem Konzept der Objektorientierung basierendes
Programmierparadigma. Es fördert
 Flexibilität
 Wiederverwendbarkeit von Programmen
 Grundidee der objektorientierten Programmierung:
Daten und Funktionen, die auf diese Daten angewendet werden können
 möglichst eng in einem sogenannten Objekt zusammenzufassen
 nach außen hin zu kapseln, so dass Methoden fremder Objekte diese Daten
nicht versehentlich manipulieren können.
3
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
OOP für Steuerungen?
Warum OOP in der Steuerungstechnik?
 Flexibel für Veränderungen und Erweiterungen (bessere Wartbarkeit)
 Leichter wiederverwendbar
 Bessere Kapselung
 Gängige Lehrmethode bei der Hochsprachenprogrammierung
 In der Office-Welt millionenfach bewährt

4
OOP ist eine zunehmende Forderung von
Steuerungsprogrammierern.
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
OOP für Steuerungen?
Warum nicht gleich C++ / C#?
 Debugging und Inbetriebnahme erfordern komplette
Entwicklungsumgebungen.
 Vermischung der Applikation mit Systemsoftware möglich
 Zugriff auf E/A-Ebene nur über Bibliotheksaufrufe
 IEC 61131-3 ist der gängige Standard für Industrie-Steuerungen.


5
Spezifische Editoren für
Applikationsprogrammierung
Zyklische Abarbeitung fester
Teil der „Denke“
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Agenda
6
1
Warum Steuerungen objektorientiert programmieren?
2
Umsetzung von OOP innerhalb eines IEC 61131-3-Tools
3
Beispiel
4
Typische Anwendungsgebiete
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Realisierung von OOP in IEC 61131-3
Begriffe
 Interface
Gibt einem Ding einen Namen und legt fest, welche Funktionen Objekte
dieser Art bieten müssen.
 Klasse
Legt ein (oder mehrere) Interfaces sowie die Daten fest, die zu
Objekten dieser Klasse gehören.
 Objekte
Tatsächliche Daten mit den dazugehörigen Funktionen, wie sie in einer
Klasse beschrieben sind.
 Methode
Eine im Interface beschriebene Funktion. Methoden können mit
<Objektname>.<Methodenname>() aufgerufen werden.
7
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Realisierung von OOP in IEC 61131-3
Integration in IEC 61131-3
 Objektorientiertes Programmieren war in den früheren Versionen der
Norm nicht enthalten.

Normerweiterung mit OOP ist mittlerweile erfolgt (2013)
 Erweitert die IEC 61131-3 um Java-Sprachmittel
 Das Konzept basiert auf Funktionsbausteinen.
 In CODESYS V3:
 Von Anfang implementiert
 Optionale Erweiterung, d. h. kein Zwang zum objektorientierten Programmieren!
8
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Realisierung von OOP in IEC 61131-3
Integration in CODESYS
 Interface: neuer Objekttyp
(wie globale Variablenliste, POU etc.)
 Klasse: Ein Funktionsbaustein ist eine Klasse mit genau einer
Methode. Ein FB wir auf volle Klassenfunktionalität erweitert.
 Objekte: Instanzen von Funktionsbausteinen
 Methoden: Funktionen zu Interfaces und Funktionsbausteinen, die
 mit dem Interface/ dem Funktionsbaustein fest verbunden sind,
 auf den Daten des Funktionsbausteins arbeiten,
 wie eine Funktion Eingänge, einen Rückgabewert und lokale Variablen haben
können.
9
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Realisierung von OOP in IEC 61131-3
Neue Schlüsselwörter
 IMPLEMENTS
Ein Funktionsbaustein realisiert (implementiert) ein bestimmtes
Interface. Er muss alle Methoden des Interfaces realisieren.
 EXTENDS
Vererbung: Ein Funktionsbaustein übernimmt Funktionen und Daten
eines anderen Funktionsbausteins und erweitert diesen um eigene
Funktionen und Daten bzw. überschreibt Funktionen.
10
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Realisierung von OOP in IEC 61131-3
Weiterer Begriff
 Polymorphismus
Eine Methode wird aufgerufen. Erst zur Laufzeit kann entschieden
werden, welche Implementierung tatsächlich ausgeführt wird.
11
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Agenda
12
1
Warum Steuerungen objektorientiert programmieren?
2
Umsetzung von OOP innerhalb eines IEC 61131-3-Tools
3
Beispiel
4
Typische Anwendungsgebiete
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Beispiel
Gebäudemanager
Aufgabe:
 In einem Gebäude gibt es verschiedene Raumtypen:
 Den einfachen Raum
 Den erweiterten Raum
 Den Raum mit Klimaanlage
 Tag-Modus:
 Alle Lichter werden ausgemacht.
 Heizung wird hochgedreht.
 Nacht-Modus:
 Alle Lichter werden angemacht.
 Heizung fährt herunter.
13
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Beispiel
Gebäude-Manager
Tagbetrieb
Nachtbetrieb
Tagbetrieb
Nachtbetrieb
14
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Beispiel
Gebäude-Manager
Raumtyp 1
Raumtyp 2
Raumtyp 2
Raumtyp 3
15
Raumtyp 1 Raumtyp 3
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Beispiel
Gebäude-Manager
Raumtyp 1
Raumtyp 2
Überschreiben
Raumtyp 3
Überschreiben
16
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Beispiel
Gebäude-Manager
r1
r3
r5
r7
17
r2
r4
r6
r8
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Beispiel
Gebäude-Manager
Schleife ruft
unterschiedliche
Objekte anhand
des identischen
Interfaces auf
18
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Agenda
19
1
Warum Steuerungen objektorientiert programmieren?
2
Umsetzung von OOP innerhalb eines IEC 61131-3-Tools
3
Beispiel
4
Typische Anwendungsgebiete
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Typische Anwendungsfälle
 Einsatz unterschiedlicher Antriebe mit jeweils gleichen Methoden
 Einsatz unterschiedlicher Kommunikationssysteme mit jeweils
ähnlichen Kommandos
 Einsatz unterschiedlicher Maschinenmodule mit einer
einheitlichen / ähnlichen Kommandoschnittstelle
20
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Fazit
Vorteile
 Applikation kann flexibel verändert und erweitert werden.

Bessere Wartbarkeit des Applikationscodes
 Applikationscode ist leichter wiederverwendbar.
 Bessere Kapselung

OOP wird für viele Bibliotheken innerhalb von CODESYS
bereits eingesetzt, Aufruf dennoch funktional!
21
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Fazit
Nachteile
 Bei kleineren Anwendungen:
schlechtere Performance
 OOP ist derzeit (noch) nicht Teil der Ausbildung von
Steuerungsprogrammierern
22
© 3S-Smart Software Solutions GmbH
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen
Fazit
Die Komplexität von Steuerungsaufgaben steigt
Die Objektorientierung wird einen festen Platz in der
Steuerungswelt finden.
Die Objektorientierung hat bereits einen festen Platz in der
Steuerungswelt gefunden
(wenn auch nur in Bereichen, in den sie sinnvoll ist).
Objektorientierte Programmierung wurde
von Anfang an in CODESYS V3 implementiert
23
© 3S-Smart Software Solutions GmbH
Inspiring Automation Solutions
Vielen Dank für Ihre Aufmerksamkeit!
CODESYS® ist ein eingetragenes Warenzeichen der 3S-Smart Software Solutions GmbH. Druckfehler, Irrtümer und technische Änderungen vorbehalten.
Vervielfältigung (auch nur auszugsweise) und Weitergabe nur nach vorheriger Genehmigung.
24
© 3S-Smart Software Solutions GmbH