\’Polymorphie\‘ – was sich für Menschen ohne Kenntnisse der Hochsprachenprogrammierung erst einmal anhört wie eine seltene Erkrankung, ist eine nützliche Eigenschaft der objektorientierten Programmierung. Sie ermöglicht das dynamische Binden von Programmcode. Im ersten Teil der Artikelserie wurde diese Eigenschaft bereits kurz angerissen, deren Nutzen nachfolgend erläutert wird. Liefervarianten einer Maschinenreihe per Interface Ein Applikationsprogrammierer entwickelt ein SPS-Programm, das ohne große Änderungen auf verschiedenen Liefervarianten einer Maschinenserie verwendet werden soll. In allen Varianten werden Antriebe von der SPS angesteuert. Allerdings entscheidet der Endkunde z.B. aufgrund von Leistungsdaten oder Kenntnisstand seines Wartungspersonals, welche Antriebsmodelle letztlich eingesetzt werden. Trotz der Unterschiede verfügen alle Antriebe über Funktionen wie \’HomePosition\‘, \’HasError\‘ oder \’MoveAbsolute\‘. Schreibt der Applikationsprogrammierer sein Programm wie bisher funktional, so muss er für jede Variante der Maschine sämtliche Funktionsaufrufe anpassen, die auf die Antriebe zugreifen. Mit den Möglichkeiten der OOP kann er jedoch Arbeit und Fehlerquellen reduzieren. Dazu definiert er alle einheitlichen Aufruf-Funktionen für die verwendeten Antriebe als Methoden in einem Interface. Das Interface enthält für jede Methode nur dessen Aufrufschnittstelle, also Inputs und Outputs, aber keine lokalen Variablen und keinen Code. Mit spezifischem Programmcode füllen wird der Programmierer die Methoden, wenn er sie in einem Funktionsbaustein mit dem neuen Schlüsselwort Implements einbindet. Der Funktionsbaustein wird damit zur \’Klasse\‘ im Sinne der OOP. Die erforderliche Instanziierung der Funktionsbausteine nimmt der Programmierer typischerweise in einem übergeordneten Baustein vor, der diese Instanzen zentral verwaltet. Dynamisches Binden über ein Array Wie in Bild 1 können mehrere solche Instanzen (\’Objekte\‘) in einem Array zusammengefasst werden. Überraschend dabei: Der Datentyp des Arrays muss nicht mehr BOOL, INT bzw. ein Funktionsbaustein, sondern kann jetzt ein Interface sein – im Beispiel das Interface iDrive. Somit kann das Array faktisch mit ganz unterschiedlichen Inhalten gefüllt werden – je nach instanziiertem Funktionsbaustein. In Bild 1 werden die einzelnen Felder des Arrays gleich bei der Deklaration gefüllt – mit Instanzen unterschiedlicher Funktionsbausteine für die verschiedenen Antriebe. Über das Array kann der Programmierer indiziert per Schleife auf die Methoden in den FB-Instanzen zugreifen. Dabei ist es erst einmal egal, welche Methoden letztlich wirklich aufgerufen werden – die Zuordnung erfolgte über die Füllung des Array. Damit wird der eigentliche Methoden-Aufruf dynamisch gebunden. Verwendet die nächste Maschinenvariante andere Antriebe als die in Bild 1 definierten, so muss der Applikationsprogrammierer im Deklarationsteil des Hauptbausteins nur die verwendeten FB-Instanzen für die neu einzusetzenden Funktionsbausteine deklarieren. Eine Änderung der Methoden-Aufrufe ist nicht mehr erforderlich! Dynamisches Binden über einen Funktionsbaustein Statt die Methoden über ein Array dynamisch aufzurufen, kann der Programmierer auch einen weiteren Funktionsbaustein erstellen. Dieser bekommt als Eingangsparameter ein Interface übergeben. So weiß der FB CheckDriveError in Bild 3, dass er die Methode HasError aufrufen wird. Den gewünschten FB bzw. die Klasse, in der die Methode aufgerufen wird, übergibt der Programmierer als Instanz des Antriebs, z.B. wiederum bei Aufruf aus dem Hauptbaustein. Auch bei dieser Vorgehensweise kann der Programmierer die verwendeten Antriebe zentral an einer Stelle ändern, ohne dass er sämtliche Aufrufe im Projekt mühsam durchforsten muss. Wiederverwenden von Methoden – Vererbung Betrachten wir noch einmal die Funktionsbausteine für die spezifischen Funktionen der Antriebe. Je nach den Antriebseigenschaften muss der Applikationsentwickler alle erforderlichen Methoden einzeln ausprogrammieren. Oftmals haben ähnliche Antriebe vom gleichen Hersteller jedoch identische Basis-Funktionen, z.B. zur Fehlerabfrage oder Homing. Ist das der Fall, so möchte man diese identischen Funktionen auch weiterverwenden. In der OOP wird genau dieser Wunsch durch die Vererbung erfüllt. Dazu legt der Programmierer einen neuen Funktionsbaustein an, der einen bestehenden Baustein (eine \’Basisklasse\‘) mit dem neuen Schlüsselwort Extends erweitert. Dieses neue Objekt verfügt damit sofort über alle Methoden der Basisklasse, ohne dass sie noch einmal im Objektbaum als Kind angezeigt werden. Das Objekt kann seinerseits weitere Interfaces implementieren bzw. eigene Methoden zugewiesen bekommen. Typischerweise werden aber nicht alle Methoden von CANopen_DriveC identisch mit CANopen_DriveA sein. So muss z.B. die Methode \’MoveAbsolute\‘ anders ausgeführt werden. Dazu kann der Applikationsentwickler für CANopen_DriveC die Methode \’MoveAbsolute\‘ anlegen, die ursprünglich bereits durch die Vererbung definiert war, und sie entsprechend ausprogrammieren. Die ursprünglich geerbte Methode wird damit überschrieben und ist für diesen Funktionsbaustein nicht mehr gültig. Geerbten und spezifischen Programmcode kann der Programmierer elegant miteinander verknüpfen: Wie in Bild 4 legt er dazu eine neue Methode an und überschreibt damit die geerbte. Im Programmcode der neuen Methode ruft er aber mit dem Befehl Super^.MoveAbsolute(); zunächst einmal den Code der überschriebenen Methode auf. Anschließend erweitert er die Abarbeitung um den spezifischen Programmcode. Fazit Diese einfachen Beispiele machen deutlich: Die OOP ist nützlich, um Applikationssoftware modular und wiederverwendbar zu gestalten. Das gilt für die Programmierung in Hochsprachen genauso wie für die Programmierung von Steuerungen in der Automatisierungstechnik. Automatisierer können mit CoDeSys ihre SPS-Applikationen heute schon objektorientiert in IEC61131-3 programmieren – wenn sie das wollen. Es bleiben jedoch Fragen: Wie kann man Daten und Funktionen so kapseln, dass sie nicht versehentlich verändert werden? Wie kann man den Code im Rumpf eines Funktionsbausteins innerhalb einer Methode verwenden? Fortsetzung folgt.
Von der OOP in der IEC61131-3 profitieren
-
Stahlketten sichern Performance von Umreifungsanlagen
Gut verpackt
Wer seine Produkte in die ganze Welt verschickt, muss sicher sein können, dass sie ihr Ziel auch unbeschadet erreichen. An einer Transportsicherung führt deshalb kein Weg vorbei. Mögliche…
-
Security
Cyber-Sicherheit wird zum integralen Bestandteil der Maschinenkonzepte
Ab 2027 wird Cyber-Sicherheit verpflichtend: Maschinenhersteller müssen umfassende Security-Maßnahmen wie Security-by-Design und Update-Strategien integrieren. Phoenix Contact unterstützt praxisnah.
-
Bis 250mm Zeichenhöhe
Die fehlerunanfällige, widerstandsfähige Konstruktion und die einfache Bedienung sind die großen Vorteile der industriellen Großanzeigen der Serie S302.
-
Sensor für robuste Absolutpositionierung
Präzision im Heavy-Duty-Modus: Weg-Codier-System mit IO-Link
Wo automatisierte Laufkatzen und Hafenkräne tonnenschwere Lasten bewegen, benötigt die Steuerung absolute Positionsgeber für Positions- und Geschwindigkeitsdaten. Raue Umgebungsbedingungen dürfen die Zuverlässigkeit der Sensorik nicht beeinträchtigen. In solchen…
-
Zertifizierung nach IEC62443-4-1/2
Sicherheitssteuerung
Im November erhielt die Sicherheitssteuerung Flexi Compact von Sick vom Tüv Süd die Zertifizierung nach IEC62443-4-1/2.
-
Auftragsbestand im Verarbeitenden Gewerbe im September: +0,6% zum Vormonat
Der reale (preisbereinigte) Auftragsbestand im Verarbeitenden Gewerbe ist nach vorläufigen Ergebnissen des Statistischen…
-
Komponenten für energieoptimierte Maschinenkonzepte
Effizient antreiben, intelligent bremsen
Der Auftritt von KEB Automation auf der SPS steht ganz im Zeichen der…
-
Sicher und vollständig kalibrieren: detaillierte Checkliste von DataTec
Checkliste für sichere und vollständige Messgeräte-Kalibrierung
Messgeräte entsprechen ab Werk nur für begrenzte Zeit ihren Spezifikationen – meist ein…
-
Kabelmanagement-Lösung
Kabeldurchführungsplatte für extreme Außenbedingungen
Mit der KEL-DPU-OD bringt Icotek eine Kabeldurchführungsplatte auf den Markt, die speziell für…
-
Weidmüller Stripax – jetzt auf der Conrad Sourcing Platform
Schnell, einfach und präzise abisolieren
Weidmüller bringt die neue Generation der Stripax-Abisolierzange auf den Markt.
-
Märkte für elektronische Komponenten und Baugruppen wachsen zweistellig
Die globalen Märkte für elektronische Komponenten und Baugruppen verzeichnen ein starkes Wachstum.
-
Werkzeugmaschinenbestellungen haben Talsohle erreicht
Im dritten Quartal sank der Auftragseingang in der deutschen Werkzeugmaschinenindustrie um 5%.
-
Ginzinger und Limes Security
Whitepaper zeigt praxisnahen Weg zum Cyber Resilience Act
Ginzinger Electronic Systems und Limes Security haben ein gemeinsames Whitepaper zum Cyber Resilience…
-
Industrielle Bildverarbeitung
Neues Deep-Learning-Feature in Halcon 25.11
MVTec erweitert seine Machine-Vision-Software Halcon 25.11 um das neue Deep-Learning-Feature Continual Learning.
-
Panduit stellt besonders kurzen, geschirmten Keystone-RJ45-Jack vor
Keystone-Buchse: kompakt und kurz
Panduit erweitert sein Portfolio um kompakte Cat-6/Cat-6A-Keystone-Module, die sich einfach in Standard-Keystone-Aufnahmen vieler…
-
OPC UA für die Feldebene
Aktueller Status und Ausblick
OPC UA FX (Field eXchange) ist ein zentraler Bestandteil der Weiterentwicklung von OPC…
-
Inverse modulare Kabeldurchführungen mit geteiltem Rahmen
Flexible Kabeldurchführung
Mit KDSI-SR-G erweitert Conta-Clip sein modulares Kabeldurchführungssystem um einen zweigeteilten Rahmen, der die…
-
Sichere Fernwartung – leicht gemacht
Keine Chance für Cyber-Brechstangen
Online-Kriminelle haben die OT für sich entdeckt – das zeigen u.a. rasant steigende…
-
Neue Not-Halt-Baureihe
Robuste Not-Halt-Schalter mit M12-Anschluss
Mit Quartex Connect bringt Schlegel eine neue Not-Halt-Baureihe für 22,3mm-Bohrungen auf den Markt…
-
Indien und Brasilien bleiben Wachstumsstützen für den Maschinenbau
Die weltweite Geschäftslage der Maschinen- und Anlagenbaufirmen aus Deutschland und Europa zeigt weiterhin…
-
TKD Kabel erweitert Produktfinder zum Kundenportal
Schneller zum Kabel, das passt
TKD Kabel hat seinen Online-Produktfinder zu einem kundenorientierten Portal ausgebaut, das den Zugang…
-
VDMA-Studie
Mehr als die Hälfte der Maschinen- und Anlagenbauer setzt auf OPC UA
Laut aktueller Interoperabilitätsstudie des VDMA sehen 84% der Unternehmen einen konkreten Bedarf an…
-
Energieverbrauch der Industrie um 1,9% gestiegen
Die deutsche Industrie hat im Jahr 2024 insgesamt 3.343 Petajoule Energie verbraucht.
-
Time Sensitive Networking
TSN-Layer-3-Switch für präzise Echtzeitkommunikation
Mit dem TSN-6325-8T4S4X präsentiert Spectra einen Managed Industrial Ethernet Switch, der für zeitkritische…
-
Für Motion-Control-Anwendungen
BiSS-Master-Chip mit SPI und RS-422-Transceiver
Mit iC-MBE stellt iC-Haus einen SPI-zu-BiSS-Master-Konverter vor, der die Integration der offenen BiSS-…
das könnte sie auch interessieren
-
Lapp stellt auf der SPS 2025 aus
Verbindungslösungen für industrielle Automatisierung von Morgen
-
Multivariable und energieeffiziente Steuerung
Multivariabel und energieeffizient
-
Sensoren, Ladekabel und Cybersicherheits-Zertifizierung
Zertifizierte, sichere Entwicklungsprozesse
-
OPC UA als Enabler für Data Spaces und KI
Semantische Standards

















