Wie bereits erläutert, beinhalten Interfaces nur Methoden – Funktionsblöcke aber haben ebenso Daten. Somit stellt sich die Frage: Wie bekommt man über ein Interface den Zugriff auf diese Daten? Einfache Antwort: Man schreibt eine Methode, die das gewünschte Datum zurückliefert, wie etwa \’GetName\‘ oder \’IsReady\‘. Konsequent angewendet erzeugt der Applikationsprogrammierer ziemlich schnell Pärchen von Funktionen der immer gleichen Art, wie z.B. \’GetName\‘ / \’SetName\‘ oder \’IsReady\‘ / \’SetReady\‘. Solche Methodenpaare, die im Wesentlichen nur den Zugriff auf ein Datum freigeben, kann man zusammenfassen zu einem Property. Datenhandling mit Properties Nehmen wir als Beispiel das Interface IDrive vom vorangehenden Artikel der Serie und erstellen wir ein erweitertes Interface INamedDrive. Ein Property ist dabei eine Kombination aus zwei Methoden, die den Schreibzugriff bzw. Lesezugriff auf ein Datum kapseln. Für den Benutzer des Properties stellt sich dieses dabei wie eine Variable dar. Der Compiler sorgt automatisch für den Aufruf der richtigen Zugriffsmethode bzw. meldet einen Fehler, wenn diese nicht implementiert ist. So wird man vermutlich INamedDrive im obigen Beispiel nur mit einem lesenden Zugriff auf den Namen ausstatten und damit das Schreiben unterbinden. Im Hauptbaustein PLC_PRG (aus dem vorangegangen Artikel) deklarieren wir einen Funktionsblock CANopen_DriveB_Named, der das neue Interface implementiert. Im Rumpf des Bausteins in Bild 2 kann jetzt auf das Property wie auf eine Variable zugegriffen werden. Will man nun den Zugriff auf komplexe Datentypen wie z.B. eine Struktur erlauben, dann kann ein Property jedoch problematisch sein. Meist will der Applikationsprogrammierer ja nur auf ein einziges Strukturelement zugreifen. Eine Methode, die dahintersteckt, liefert allerdings immer die gesamte Struktur zurück. Das bedeutet: Übergibt man einem Property direkt den Datentyp Struktur, dann werden zu viele Daten kopiert – und das wirkt sich auf die Laufzeit des Programms aus. Wie kann man dieses Problem umgehen? Die Antwort liefert der Datentyp \’REFERENCE TO\‘. Referenzen Eine Referenz ist eine Variable, die immer auf eine andere Variable verweist. Manipuliert man die Referenz, dann manipuliert man eigentlich die referenzierte Variable. Vom Pointer unterscheidet sich die Referenz dadurch, dass man die Referenz nicht explizit de-referenziert, sondern jeder Zugriff direkt auf die referenzierte Variable erfolgt. Ein Beispiel: Natürlich ist das Beispiel in Bild 3 erst einmal nicht sinnvoll, es soll jedoch die Verwendung von Referenzen in sinnvollen Anwendungen erläutern. Eine davon ist die Rückgabe von Daten bei Properties. Für unser Beispielprojekt nehmen wir eine Struktur DriverInfo an, mit den Elementen Name und Version. Statt zwei Properties für den Namen und die Version könnte man auch die gesamte Info als Struktur zurückliefern. Den Funktionsblock Canopen_DriveB_Named geben wir noch eine zusätzliche Methode. Diese liefert nicht einen einfachen Datentyp, sondern eine ganze Struktur zurück. Properties bieten somit die Möglichkeit, einen funktionalen Zugriff auf Daten zu veröffentlichen. Diese Zugriffsform entspricht den Forderungen der OOP nach Datenkapselung und ermöglicht gleichzeitig dem Programmierer den Komfort eines einfachen Datenzugriffs. Wie im Beispiel erläutert, kann der Applikationsprogrammierer solche Properties auch in einem Interface definieren und dadurch indirekt eine Vorschrift über die Daten in einem Funktionsblock formulieren. Eine weitere Verwendungsmöglichkeit von Properties ist die Rückgabe von skalierten Werten: So könnte ein Funktionsblock einen Wert in der Einheit Zentimeter speichern. Mit einem eigenen Property wird der Wert aber in der Einheit Zoll zurückgeliefert. Datentyp-Abfragen auf Interfaces: Casts Das Beispiel führt uns direkt zum nächsten Thema, der Typ-Konvertierung und Typ-Abfragen (Casts). Wir haben in Bild 2 im PLC_PRG ein Array von Elementen vom Typ IDrive definiert. Nur ein Element des Arrays definiert zusätzlich das spezialisierte Interface INamedDrive. Ob der Antrieb jedoch einen Namen hat oder nicht, sprich, ob er das Interface INamedDrive implementiert, kann an der Verwendungsstelle von Bedeutung sein. Dafür muss man zur Laufzeit Typinformation eines Objekts erfragen können. Für diese Aufgabe gibt es in CoDeSys den Operator __QUERYINTERFACE. Er erwartet zwei Operanden: zum einen das Interface-Objekt, von dem man ein anderes Interface erfragen will, zum anderen eine Interface-Variable mit dem Typ, auf den man prüfen will. Der Operator selbst liefert als Ergebnis TRUE, wenn der Cast, sprich die Typabfrage erfolgreich war. Zur Erläuterung verwenden wir den Funktionsblock CheckDriveError (siehe zweiten Teil der Artikelserie) und erweitern ihn um die Ausgabe eines Fehlertexts über die Variable stError. Der Code-Teil in Bild 5 lässt sich leicht nachvollziehen: __QUERYINTERFACE fragt den per Interface IDrive übergebenen Antrieb, ob er zusätzlich auch das Interface INamedDrive implementiert. Ist das der Fall, so gibt stError eine Fehlermeldung mit dem Antriebsnamen, statt einem allgemeinen Text zurück. Ein weiterer Anwendungsfall der Casts ist zwar seltener, aber dennoch möglich: von einer Interface-Referenz wird die Instanz benötigt, auf die sie verweist. In Codesys ist der geeignete Operator dafür __QUERYPOINTER. __QUERYPOINTER erwartet ebenfalls zwei Operanden: eine Interface-Referenz sowie einen Pointer auf einen Funktionsblock. Allerdings muss der Programmierer in diesem Fall selbst dafür sorgen, dass der Typ des POINTERs nach dem Cast auch richtig ist. Das Code-Stück in Bild 6 erläutert eine Verwendungsmöglichkeit des Operators: Von einer Interface-Referenz wird eine Kennung abgefragt, die in diesem Fall dem Typnamen entspricht. Somit weiß der Programmierer, welchen Typ die Instanz hat, auf die die Referenz verweist und er kann gefahrlos mit dem Pointer weiterarbeiten. Fazit Geht man den Weg zur objektorientierten Applikationsprogrammierung innerhalb der IEC61131-3 konsequent weiter, dann helfen Properties bei der Kapselung von Daten. Zusätzliche, auf der OOP basierende Operatoren, bewahren auch in komplexen Applikationen den Überblick. Der Nutzen: einfach wiederverwendbare Steuerungsprogramme. Der Sprachumfang des marktführenden IEC61131-3 Programmiersystems CoDeDys erfüllt die diesbezüglichen Erwartungen von erfahrenen Applikationsprogrammierern.
Handling von Daten und Aufrufsinformationen
-
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

















