Objektorientiert programmieren in der SPS?


Wiederverwendung von existierendem Code

In IEC61131-3-Entwicklungssystemen wie Codesys ist eine komfortable Bibliotheksverwaltung seit jeher verfügbar. So kann der Anwender FBs oder Funktionen zur späteren Verwendung in einer Bibliothek abspeichern und diese in anderen Projekten einbinden. Folgende Funktionen ermöglichen dem Anwender beispielsweise eine flexible und einfache Verwendung von solchen Bausteinen in beliebigen Projekten:

  • • Versionierung von Bibliotheken
  • • Bindung von dedizierten Versionen auf

bestimmte Geräte oder Profile

  • • Dokumentation der Funktionalität innerhalb des Quellcodes
  • • Nachladen von fehlenden Bibliotheken von Online-Ablageorten
  • • Zugriff über Platzhalter

Was ist mit einem Code, der nicht vollständig in einen FB ausgelagert und in eine Bibliothek verpackt werden kann? Zum Beispiel, weil er sich auf spezifische Teile der Applikation bezieht, aber dennoch wiederverwendet werden könnte? Für solche Fälle bietet die OOP wiederum ein mächtiges Mittel: die Vererbung! Im oben genannten Beispiel von den unterschiedlichen Heizaggregaten könnte der Anwender z.B. den ‚Prototyp‘ eines Aggregats in Form eines Funktionsbausteins mit sämtlichen Funktionen bzw. Methoden codieren, die in allen real verwendeten Aggregaten verfügbar sind. Er erstellt damit eine Basisklasse. Ausgehend von solch einer Klasse kann er jetzt mittels des neuen Keywords ‚Extends‘ ein komplexeres Aggregat definieren und mit Methoden ausprogrammieren, die die Basisfunktionalität erweitern. Dabei stehen ihm ohne weiteres Zutun die in der Basisklasse erstellten Methoden zur Verfügung. Reicht die Funktion einzelner Methoden jedoch nicht, so kann er sie ‚überladen‘, d.h. um Funktionen erweitern, die in der Basisklasse so nicht implementiert waren. Dabei ist der Code des Basistyps jedoch nicht verloren, sondern kann über den Super-Operator bequem wieder aufgerufen werden – auch er wird an die erweiterte Klasse vererbt. Anhand von FBs, die auf andere FBs bzw. auf Schnittstellen zugreifen (‚Aggregation‘), kann der Anwender jetzt die gesamte Applikation hierarchisch aufbauen und dabei bereits codierte Funktionen weiterverwenden.

Effizienz beim Engineering

Wenn einem Anwender die Strukturierung einer gesamten Applikation mit den Mitteln der OOP nicht vertraut ist, so mag ihm schnell der Überblick verloren gehen. Mit ein wenig Übung und Erfahrung gewinnt jedoch eine komplexe Applikation sogar an Übersichtlichkeit und wird deutlich besser beherrschbar. Denn oft kann das gesamte Projekt durch Aufruf weniger Bausteine komplett beschrieben werden. Diese Bausteine verzweigen ihrerseits in die Tiefe und führen die codierten bzw. vererbten Funktionen aus. Die weite Verbreitung der OOP in anderen Bereichen der Software-Entwicklung beweist eindrucksvoll, dass ihre Vorteile überwiegen. Eine Umstellung von Applikationen darf aber nicht ‚mit der Brechstange‘ erfolgen, sondern sollte im Takt der natürlichen Weiterentwicklung von Anwendung und Programmierern erfolgen. Codesys wird dieser Forderung gerecht: Objektorientiert programmierte Bausteine werden bereitgestellt, vom Anwender jedoch funktional aufgerufen, ohne dass er von der OOP etwas merkt. Letztlich ermöglicht erst die OOP eine nahtlose, ‚geschmeidige‘ Integration vieler mächtiger Funktionen wie Visualisierung, Motion Control oder Feldbusunterstützung in die IEC61131-3 Oberfläche. Viele Anwender nutzen selbst die Möglichkeiten der OOP für ein effizienteres Engineering, andere profitieren nur implizit davon. Ob explizite Anwendung oder impliziter Nutzen: Von der OOP profitieren alle Anwender!


  • VDMA bestätigt Produktionsprognose für 2024

    In den ersten beiden Monaten des laufenden Jahres sank die Produktion von Maschinen und Anlagen in Deutschland zwar um 4,2%.


  • Engineering-Tool mit Funktionserweiterungen

    Modernisierte Icons, neue Klasse für Steckverbinder, vereinfachte Materialkombinationen: Die Version 2024.1 des AmpereSoft ToolSystems bietet zahlreiche Funktionserweiterungen, die für ein einfacheres, intuitiveres…