Ingenieure von heute, die eine moderne Hochsprache wie C++, Java oder C# kennen, sind es gewohnt, dass sie sich um den Aufbau des geräteinternen Speichers nicht kümmern müssen. Das Anlegen von Datenstrukturen, Arrays oder eben von Objekten ist bei modernen Hochsprachen eine Selbstverständlichkeit und bei heutigen komplexeren Automatisierungslösungen geradezu ein Muss, um lesbare und wartbare Programme erstellen zu können. JetSym STX ermöglicht die Verwendung dieses in der Hochsprachen- und PC-Programmierung längst etablierten Paradigmas auch für Automatisierungslösungen. Obgleich der Anwender nicht gezwungen ist, sie schon jetzt zu nutzen, wird sich die objektorientierte Programmierung zweifelsohne auch in der Automatisierung durchsetzen. Wann verwendet man objektorientierte Programmierung? Letztlich entscheidet der Programmierer selbst, welche Funktionen er in Form von Klassen zusammenfassen möchte. Hauptkriterien sind die Wiederverwendbarkeit und die Vererbung. So macht es Sinn, gleichartige Teile einer Maschine (Achsen, Ventile, Zylinder) in Form von Klassen zu beschreiben und entsprechend viele Instanzen davon anzulegen. Durch die damit einhergehende Kapselung reduziert sich auch die Fehleranfälligkeit – wird ein Fehler einmal behoben, so wirkt sich das gleich auf alle Instanzen aus. Klassische Anwendungsbeispiele für Objekte in der Automatisierung sind beispielsweise: – Regleralgorithmen – Logbuchverwaltung – Beschreibung konkreter Hardware wie Drehtische, Pumpen, Mischer, usw. – Abstraktion von Schnittstellen (z.B. Datenaustausch mit Visualisierung) – Abstraktion von Bedienfunktionen Klassen sind also Beschreibungen des Verhaltens von Objekten, wie z.B. eine Klasse \’Achse\‘. Eine Achse ist in der Lage von A nach B zu fahren. Das Verhalten einer Servo-, einer Schrittmotor- oder einer Hydraulikachse bei Positionierungen ist jedoch unterschiedlich. In diesem Fall leitet der Programmierer je eine Klasse \’Servoachse\‘, \’Schrittmotorachse\‘ und \’Hydraulikachse\‘ von der Basisklasse \’Achse\‘ ab. Bei der Verwendung in einer Applikation wird das Objekt mit der gewünschten Klasse instanziiert und die Hardware-Adresse übergeben. Intuitive Eingabe reduziert Fehler Wie hilfreich objektorientierte Programmierung ist, zeigt beispielsweise der Objektaufruf einer Achse, da es sich bei den Methoden um die Abstraktion von möglichen Prozeduren handelt. Ist eine Achse als Einzelantrieb oder Verbund mit anderen Antrieben als Klasse angelegt und die dazugehörenden Methoden definiert, ergibt sich durch die Punktschreibweise für den Programmierer eine vereinfachte und intuitive Eingabe, da jeweils nur die Methoden aufgerufen werden können, die für das jeweilige Achsobjekt auch möglich sind. Beispiele sind Aufrufe wie \’axVertikal.MoveHome.SetReference(0)\‘ oder \’axGripper.MovePtP.Position(200)\‘. Ein weiteres Beispiel einer Klasse zeigt Bild 1 für ein Valve-Objekt. Die Deklaration der Klasse wird mit dem Schlüsselwort \’class\‘ eingeleitet. Verschiedene Methoden, wie zum Beispiel die Grundstellungsfahrt, werden in der Klasse deklariert. Eine Methode ist vergleichbar mit einer Funktion oder einem Unterprogramm mit dem Unterschied, dass eine Klasse beliebig viele Methoden enthalten kann. Mit den Schlüsselwörtern \’public\‘, \’protected\‘ und \’private\‘ wird deklariert, ob ein Member oder eine Methode in weiteren Objekten verwendet werden darf. Die Instanziierung der Klasse zu Objekten zeigt Bild 2. Die Klassen-Deklaration ist vergleichbar mit einem Bauplan. Ein Objekt selbst entsteht erst durch Instanziierung, also der Deklaration einer Variablen einer Klasse. Variablen einer Klasse werden deshalb auch Instanzen genannt. Es können beliebig viele Instanzen einer Klasse angelegt werden, dabei erhält jede Instanz einen eigenen Satz von Eigenschaften. Der Objektaufruf mit den deklarierten Methoden im Programmcode selbst wird in Bild 3 gezeigt. Die Programme werden durch die Verwendung der objektorientierten Programmierung sehr kompakt und einfach lesbar. Was bedeutet objektorientiertes Programmieren? Ein objektorientiertes Programm besteht aus einer strukturierten Menge von Objekten. Der Vorteil eines Objektes ist der, dass es eine in sich abgeschlossene Einheit von Daten und Algorithmen darstellt. Der Programmierer bestimmt während der Designphase, welche Methoden und Daten von außen sichtbar (public) sind und welche nur innerhalb der Klasse (private) verwendet werden dürfen. Eine Klasse im Sinne der objektorientierten Programmierung ist die Verbindung und Kapselung einer Datenstruktur mit den Funktionen oder Unterprogrammen, die auf dieser Datenstruktur mit dem Ziel einer besseren Wiederverwendbarkeit operieren. Bei der Verwendung im Programm werden dann Objektinstanzen (konkrete Variablen) dieser Klasse angelegt. Am ehesten lässt sich eine Klasse noch mit einem Funktionsblock aus der klassischen SPS-Programmierung (IEC 61131-3) vergleichen. Während ein Funktionsblock jedoch nur eine Funktion besitzt, die den Zustand des Funktionsblocks beeinflusst, kann eine Klasse beliebig viele Funktionen besitzen. Die Funktionen und Unterprogramme einer Klasse werden als Methoden bezeichnet. Der spezielle Name erklärt sich daher, dass Methoden implizit Zugriff auf alle Eigenschaften, also die Daten, ihrer Klasse haben. Methoden sind also Funktionen, die einen \’unsichtbaren\‘ Parameter – die aktuelle Instanz – übergeben bekommen. Die Konsequenz für den Anwender ist, dass Daten und Programmcode eine logische Einheit bilden und der Programmierer darüber entscheidet, auf welche Weise man auf sie zugreift und welche Daten von außen verändert werden können. Daten können also nicht quer über das Programm hinweg beschreiben werden, wenn das nicht so gewollt ist. Diese Kapselung von Daten und Methoden führt zu einer erheblichen Fehlerreduzierung. Vererbung von Klassen Darüber hinaus können Klassen auch Eigenschaften und Methoden anderer Klassen übernehmen und diese erweitern – dieser Vorgang wird als Vererbung bezeichnet. Gerade dieses Grundprinzip der objektorientierten Programmierung ist für die Automatisierungstechnik hochinteressant. Einzelne Teile einer Anlage, wie z.B. eine Achse, ein Drehtisch oder eine Pumpe, können nun als Software-Objekte im Steuerungsprogramm 1:1 abgebildet werden. Das führt schon durch die intuitive Schreibweise, wie Achse.MoveTo(…) oder Valve.Open zu besonders gut lesbaren Programmen. Nicht zuletzt verringern sich durch die Kapselung aber auch die Entwicklungs- und die Inbetriebnahmezeit, und es vereinfacht sich natürlich entsprechend die Wartung der Programme. Virtuals, Properties und Interfaces Für virtuelle Methoden speichert der Compiler nicht die Adresse der Methode aus dem Arbeitsspeicher in dem jeweiligen Objekt, sondern er verwaltet virtuelle Methoden in einer separaten Tabelle (VMT – Virtual Method Table). Im Objekt wird lediglich die Adresse dieser Tabelle gespeichert. Der Compiler sorgt dafür, dass bei der Ausführung des Programms für jede Klasse eine eigene Tabelle im Speicher angelegt wird. Alle virtuellen Methoden dieser Klasse werden darin, zusammen mit ihren Adressen, eingetragen. Der Aufruf einer virtuellen Methode führt dann über die Tabelle immer zur richtigen Methode der konkreten Instanz. Das funktioniert auch dann, wenn die Methode über einen Zeiger auf die Instanz aufgerufen wird (Polymorphie). Diese Aufrufart wird auch als \’späte Bindung\‘ bezeichnet, weil das Programm erst zur Laufzeit die Adresse der Methode ermittelt. JetSym STX bietet zur Deklaration das Schlüsselwort \’virtual\‘ an. Als Properties werden \’intelligente\‘ Member einer Klasse bezeichnet. Jeweils für den Lese- und den Schreibzugriff auf ein Property kann eine separate Methode angegeben werden, die in demselben Moment ausgeführt werden soll. Damit lassen sich sehr elegant Bereichsprüfungen oder auch sofortige Reaktionen programmieren. JetSym STX unterstützt darüber hinaus auch Index-Properties, die sich quasi wie intelligente Arrays verhalten. Die Deklaration erfolgt über das Schlüsselwort \’property\‘. Mit Hilfe des Schlüsselworts \’Interface\‘ werden gemeinsame Methoden definiert, die dann in verschiedenen Klassen implementiert werden. Das ist insbesondere dann von Bedeutung, wenn die Klassen keine gemeinsame Basisklasse haben. Eine Klasse kann dabei auch mehrere Interfaces implementieren. In dem Fall ersetzen Interfaces das sprachliche Mittel der Mehrfachvererbung Verglichen mit einer Klasse handelt es sich bei einem Interface um eine Art abstrakte Klasse, die Methoden zwar deklariert, aber nicht selbst implementiert. Interfaces selbst können deshalb auch nicht instanziiert werden. Es ist aber möglich, Variablen von einem Interface-Typ anzulegen. Diese Variablen verhalten sich dann wie Referenz-Variablen und müssen eine konkrete Instanz zugewiesen bekommen. Eine Interface-Variable kann jede Instanz jeder Klasse referenzieren, sofern dieses Interface sie auch implementiert hat. Der Kundennutzen Für langjährig erfahrene SPS-Programmierer, die mit den klassischen SPS-Sprachen vertraut sind, sind die Vorteile vielleicht nicht sofort ersichtlich, weil sie sie über all die Jahre nicht vermisst haben. Die objektorientierte Programmierung erfordert einen anderen Denkansatz, und es soll an dieser Stelle nochmals darauf hingewiesen werden, dass die objektorientierte Programmierung bei JetSym STX kein Muss ist. Dennoch wird sich in Zukunft auch in der Automatisierungswelt wie in der PC-Welt die objektorientierte Programmierung vor allem bei komplexeren Projekten durchsetzen. Wenn ein Unternehmen auf die Bedürfnisse seiner Kunden schnell, flexibel und effizient reagieren will, ermöglicht die Verwendung von Objekten und Klassen eine rasche – und vor allem durch die Kapselung eine stark fehlerreduzierte Variante – der Integration von Programmteilen. Zum Zweiten werden umfangreiche und komplexe Programme kompakter und deshalb besser lesbar. Dadurch werden wiederum die Entwicklungs- und Inbetriebnahmezeiten deutlich reduziert. In der Automation einzigartig Dieser Beitrag zur objektorientierten Programmierung bildet den Abschluss der dreiteiligen Reihe über JetSym STX. Dennoch ist es aufgrund es Funktionsumfangs von JetSym STX nicht möglich, alle Features, die Tool und Sprache bieten, detailliert zu beleuchten. So gibt es weitere komfortable Befehle und Funktionalitäten für – Makros – IT-Funktionalitäten, z.B. E-Mails versenden – Netzwerkhandling – Strukturierte Ausnahmebehandlung – Motion (Achssynchronisation)
Objektorientiertes Programmieren in der Automatisierungstechnik
-
Erfolgreiches Omlox-Plugfest
Auf dem Omlox-Plugfest prüften 21 Experten aus neun Unternehmen zwölf verschiedene Omlox-Komponenten, darunter UWB-Infrastruktur, Ortungstags, ergänzende Positionierungstechnologien, Omlox-Hubs und industrielle Softwareanwendungen.
-
Energy-Monitoring für nachhaltige Umgebungen
Plug&Play-Energieüberwachung
Facility-Management-Systeme (FMS) ermöglichen die Echtzeitmessung/-überwachung des Energieverbrauchs für die Kostenoptimierung. Sie unterstützen erweiterte Diagnosen und ermöglichen schnelle Reaktionen auf Änderungen und betriebliche Anforderungen. Aber: Bestehende FMS-Lösungen sind nicht…
-
Philip Harting verstärkt VDMA-Hauptvorstand
Der VDMA hat Philip Harting in den Hauptvorstand aufgenommen.
-
Schwere Industriesteckverbinder bei der Montage und Inbetriebnahme
Schneller verbunden, schneller produktiv
Mit welchen Herausforderungen sieht sich der Maschinen und Anlagenbau konfrontiert und welchen Beitrag können Steckverbinder bei der Lösung leisten? Einfache, standardisierte und möglichst automatisierbare Verbindungsprozesse werden zum entscheidenden…
-
Antriebstechnik
Hybridleitungen reduzieren Aufwand, Kosten und Störanfälligkeit
Antriebssysteme sollen heute kompakt, leistungsfähig und zuverlässig sein. Gleichzeitig steigen die Anforderungen an Verkabelung, Montage und Betriebssicherheit. Hybridleitungen bündeln Energie- und Datenübertragung in einem Kabel, reduzieren den Aufwand…
-
DataTec verzeichnet 9% mehr Aufträge
DataTec hat das Geschäftsjahr 2025/2026 in einem angespannten wirtschaftlichen Umfeld erfolgreich abgeschlossen.
-
NIS-2 in fünf Schritten strukturiert und pragmatisch umsetzen
So gelingt das Setup
Cyberangriffe auf industrielle Systeme sind längst keine Ausnahme mehr. Produktionsanlagen, Steuerungen und vernetzte…
-
Design, Produktsuche und Beschaffung auf einer Plattform
Nachschlagewerk für Automatisierer
Wer als Maschinen- oder Anlagenbauer schnell die richtigen Komponenten finden, Schaltpläne skizzieren und…
-
Elektroexporte wachsen etwas langsamer
Mit Warenlieferungen im Wert von 20,7Mrd.€ verzeichnete die deutsche Elektro- und Digitalindustrie auch…
-
Virtuelle SPS: Reif für die Praxis?
Lange galt die virtuelle SPS als Zukunftsvision. Inzwischen sehen viele Hersteller sie als…
-
IIoT und Cloud-Visualisierung
Sensordaten sicher erfassen und weltweit visualisieren
Edge Computing und Cloud-Technologien verändern den Umgang mit Produktionsdaten. Maschinen- und Sensordaten lassen…
-
Interview auf dem Eplan Next26
Wie KI, Daten und Plattformen die Elektrokonstruktion verändern
Auf dem Event Eplan Next26 in München standen die Zukunft des Engineerings, künstliche…
-
Stromversorgung außerhalb des Schaltschranks
Netzteilreihe mit Schutzart IP67
Mit der neuen Netzteilreihe S8NR bringt Omron robuste Netzteile mit Schutzart IP67 auf…
-
Prof. Dr.-Ing. Volker Stich ins VDI-Präsidium gewählt
Prof. Dr.-Ing. Volker Stich wurde mit Wirkung zum 1. Juli in das Präsidium…
-
Intelligentes Transportsystem sorgt für mehr Flexibilität beim Labeling
Digitaldruck in sechs Freiheitsgraden
Herkömmliche Druckverfahren mit Kunststoff- und Papieretiketten sind mit langen Rüstzeiten, häufigen manuellen Eingriffen…
-
Ansatz für nachhaltige Produktentwicklung
Neue Kategorie der Weltdarstellung
Die 3D Univ+rses sind eine neue Kategorie der Weltdarstellung, entwickelt von Dassault Systèmes.…
-
Hochmanövrierfähige Fahrzeugplattform mit Hebeeinrichtung
Omnidirektional
Weiterentwicklungen in der Handhabungs- und Montagetechnik steigern den Grad der automatisierten Produktion. Effiziente…
-
Schwarz Digits eröffnet neuen Campus
Schwarz Digits, die IT- und Digitalsparte der Schwarz Gruppe, hat ihren neuen Campus…
-
Update-Management für vernetzte Maschinen
Aus Pflicht wird Potenzial
Vernetzte Maschinen müssen über ihren gesamten Lebenszyklus hinweg aktualisiert werden und Hersteller müssen…
-
Geräteschutz und digitale Transparenz verbinden
IIoT-Framework
Mit dem IIoT-Framework Caparoc erweitert Phoenix Contact die Kommunikationsmöglichkeiten des gleichnamigen Geräteschutzschalter-Systems um…
-
Für den Maschinen- und Anlagenbau
Robuste Wellschläuche
In der automatisierten Fertigung müssen Kabelschutzschläuche von Maschinen, Bearbeitungszentren und CNC-Anlagen vielfach hohe…
-
Für effizienteres Kabelmanagement Mehrfachdurchführungen
Mit den robusten Kabeldurchführungen der Serie MCE Pro und dem modularen System MCE…
-
Cybus beruft Stefan Schwab zum Co-CEO
Cybus hat Stefan Schwab mit Wirkung zum 1. Juli zum Co-CEO berufen.
-
Spatenstich für Hummel-Werkserweiterung
Mit einem symbolischen Spatenstich hat Hummel das offizielle Startsignal für die geplante Werkserweiterung…
-
Mit 3 Metern Reichweite
Kompakte Ultraschallsensoren
Mit den Ultraschallsensoren U1KM in Miniaturbauform erweitert Wenglor sein Portfolio um eine Lösung…
das könnte sie auch interessieren
-
-
-
Edge, Cloud und Cybersecurity in der Praxis
IIoT im Realitätscheck: Warum Vernetzung heute anders gedacht wird als 2020
-
Funktionale Sicherheit
SIL3 auf dem Touchscreen: Wie sichere HMIs die Bedienung neu denken
















