Go to OOP
Der logische Weg vom funktionalen zum
objektorientierten Programmieren - Teil 1
Die Beschreibung von Ablufen mit Hilfe von Programmen ist nichts Neues. Schon Grabinschriften der alten
gypter enthielten einen Programmcode, z.B. fr die Fortbewegung einer Statue. Zugegeben: Deren Pro-
grammiersprache ist weder standardisiert, noch leicht zu verstehen. Im Vergleich dazu ist es fr Program-
mierer von Industriesteuerungen ein Leichtes, ihr Anliegen zu kodieren - die funktionale Programmierung
in grafischen bzw. textuellen Sprachen der IEC61131-3 ist sauber standardisiert.
D
ennoch findet eine stetige wurden so erfolgreich realisiert. Pro- setzen erste Forderungen zur struk-
Weiterentwicklung der Pro- blematisch wird es, wenn Fehler in turierten Programmierung um, wie
grammierung statt - meist in einem solchen Programmcode ge- sie der niederlndische Informatiker
logischen Schritten, die den Workflow sucht werden mssen, oder wenn die Edsger Dijkstra (1930-2002) aufge-
bei der Applikationsprogrammierung Applikation angepasst werden soll. stellt hat (Go To Statement Conside-
optimieren. Im Rahmen dieser Be- Auch ist es mhsam, Teile des Pro- red Harmfulm, 1968 sowie Structu-
trachtung wird Ihnen am Beispiel grammcodes fr andere Applikatio- red Programming, 1972). Im Beispiel
einer einfachen Timer-Applikation er- nen wiederzuverwenden. Sptestens unserer Aufgabe werden dazu ver-
lutert, wie dabei der natrliche dann beginnen SPS-Programmierer schiedene Timer als Instanz einer
Weg von der funktionalen zur objekt- darber nachzudenken, wie sie Ihre Struktur deklariert. Darber hinaus
orientierten Programmierung fhrt. Applikation verbessern knnen. erfolgt die Bearbeitung mit Hilfe von
speziellen Funktionen, wie z.B. My-
Der Einstieg - oder Wie wir 1. Verbesserungsschritt: ClockGetTime, MyClockSetTime, My-
(fast) alle mal begonnen haben Strukturierung der Daten ClockStartTime, MyClockStopTime.
und deren Verwendung Damit wird die Verwendung unter-
Alle Daten in einer groen globalen schiedlicher Timer bereits deutlich
Variablen-Liste deklarieren, im Pro- Die IEC61131-3 definiert mchtige vereinfacht, weil jeder Funktionsauf-
grammcode munter darauf zugreifen, Hilfsmittel zur Strukturierung: z.B. ruf seine eigenen Daten bergeben
vielleicht sogar aus einem einzigen Funktionen (Fun), die der Program- bekommt bzw. zurckliefert. Aller-
Programmbaustein - das ist ein Pro- mierer fr abgegrenzte Aufgaben mit dings muss die Datenbergabe mit
grammierstil, der pragmatisch zum einem Rckgabe-Wert von Hauptrou- dem exakten Datentyp erfolgen.
Ziel fhrt und deswegen auch heute tinen beliebig aufrufen kann. Oder Auch ist es nicht mglich, alternati-
nicht vollstndig ausgestorben ist. Strukturen (Struct) zum Zusammen- ven Code whrend der Ausfhrung
Dafr spricht: Viele SPS-Applikationen fassen von Variablen. Diese Mittel zu verwenden.
2. Verbesserungsschritt:
Zusammenfassung von Daten und Code in
Funktionsbausteinen (FB)
Aktionen von FBs beseitigen einen Teil dieser Nachteile. Sie wurden
von den Vtern der IEC61131-3 zwar eigentlich fr Objekte vorge-
sehen, die in Ablaufsprache erstellt werden. Deren Erweiterung auf
alle FBs hat sich im IEC61131-3 Programmiersystem CoDeSys aber
seit vielen Jahren bewhrt: Zustzlich zu den oben beschriebenen
Standard-Eigenschaften von FBs kann die Applikation diese Aktionen
vom FB oder aber bergeordneten Bausteinen direkt aufrufen. Das
heit: Der Aktions-code wird auf den Daten der FB-Instanz ausge-
fhrt, allerdings unabhngig von anderen Aktionen oder dem Code
im Rumpf des FB. Mit den verfgbaren Aktionen knnen somit un-
terschiedliche Ausfhrungsvarianten eines Objekts definiert werden.
Mit dem Aufruf wird somit entschieden, welche Aktion und damit
welche Variante ausgefhrt werden soll. Verzweigungen fr unter-
schiedliche Aufgaben sind in der Aktion nicht mehr erforderlich. Al-
lerdings ermglichen Aktionen keine Eingangsdaten (VAR_Input).
Auch ist es nicht mglich, identischen Code innerhalb von Aktionen
fr unterschiedliche FBs zu verwenden.