LinkedIn Logo YouTube Logo

Effizient Programmieren mit automatischer Codegenerierung

Hersteller von Produktionsmaschinen suchen nach Möglichkeiten zur Effizienzsteigerung in der gesamten Bereitstellungskette ihrer Maschinen. Denn seit Jahren wachsen die Anforderungen an die Funktionalität von Maschinen und damit die Komplexität der Steuerungsprogramme. Wer am schnellsten spezielle Anforderungen erfüllen und kurze Lieferzeiten garantieren kann, hat einen Wettbewerbsvorsprung. Dem Gedanken des modularen Software-Engineerings kommt deshalb in der Fabrikautomation eine erhöhte Aufmerksamkeit zu.

Von einem effizienten Software-Engineering sind nicht nur die qualitative Entwicklung von Prozessfunktionen, sondern insbesondere die einfache Umsetzung von Kundenwünschen und die schnelle Verfügbarkeit von Maschinen in den Produktionsprozessen der Endkunden abhängig. Zur Verfügbarkeit trägt die ausgelieferte Maschinensoftware durch hohe Qualität, Diagnosefähigkeit und einfache Funktionserweiterung bei, und zwar von der Steuerung über die gesamte Peripherie bis zum HMI. Programmiernorm bildet die Grundlage Die IEC 61131-3 hat sich als normativer Standard zur SPS-Programmierung weltweit durchgesetzt. Mit ihr verfügen Maschinenbauern über eine wichtige Basis für die Zukunft – die Strukturierung von Maschinensoftware mit Hilfe definierter Sprachregeln, Datenstrukturen, Schnittstellen und Bausteinen. Damit etablierten sich Grundregeln in der Praxis, um Softwareprogramme übersichtlicher zu strukturieren, einfacher zu pflegen und die Code-Qualität insgesamt zu steigern. Entwicklern auf der ganzen Welt verstehen Maschinenprogramme auf Basis der IEC 61131-3 – unabhängig von den unterschiedlichen Maschinenprozessen, Automatisierungsgraden und regionalen Sprachen. Die Normkonformität wurde zwischenzeitlich von allen wichtigen Steuerungsherstellern in ihren Steuerungsprodukten verankert. Das macht sie zu einer Grundlage für den weitergehenden Fortschritt in der Fabrikautomation, die nicht mehr wegzudenken ist. Die herstellerübergreifenden Organisation PLC-open hat auf dieser Basis in den Folgejahren funktionelle Erweiterungen erarbeitet und standardisiert. Eines der wichtigsten Ergebnisse war die Definition von grundlegenden Funktionen für Motion Control aus der Sichtweise des SPS-Programmierers. Damit trug die PLCopen der Forderung von Anwendern Rechnung, Bewegungsfunktionen in Form verständlicher Funktionsbausteine herstellerneutral und wiederverwendbar abzubilden. Mit Erfolg, denn heute wird der Begriff PLCopen mit dem weltweit einzigen Sprachstandard für Motion Control gleichgesetzt – obwohl dieser nur ein Teilaspekt vieler Standardisierungsarbeiten dieser Organisation ist. Neue Wege der modularen Programmierung Damit haben in den vergangenen Jahren die wichtigsten Elemente und das Grundverständnis für eine effizientere Entwicklung von Maschinensoftware in der Industrie Einzug gehalten. Parallel machten sich für Maschinenhersteller und Steuerungshersteller aber auch andere Einflüsse zunehmend bemerkbar: Ursprünglich aus dem IT-Bereich und höheren Automatisierungsebenen kommend, zeigten die Abstraktionsmöglichkeiten der Hochsprachenprogrammierung, die sog. \’Programmiersprachen der dritten Generation\‘, neue Wege zur kompakten Beschreibung komplexer Prozessabläufe auf. Eines ihrer wichtigsten Elemente, die Objektorientierung, wurde deshalb folgerichtig in der unlängst verabschiedeten dritten Version der IEC 61131-3 über erweiterte Sprachelemente integriert. Migration zur objektorientierten Programmierung Für den Maschinenhersteller sind Begriffe wie Methoden (Funktionsroutinen), Interface (Schnittstellendefinition eines Satzes an Methoden), Objekte (Instanzen von Funktionsbausteinen) oder Klassen (Objekttypen) zunächst fremd. Die Vorteile dieser Konstrukte zeigen sich aber schnell durch die übersichtliche Kapselung funktioneller Abläufe, der leichten Änderbarkeit und Wiederverwendung sowie des insgesamt kompakteren Projektcodes. In Kombination mit den weltweiten Programmierstandards IEC 61131-3 erhielten Anwendern damit eine ideale Basis, um von der bisherigen funktionalen SPS-Programmierung zur objektorientierten Programmierung zu migrieren. Bewährtes Know-how als bestehender IEC-Code lässt sich weiter verwenden und schrittweise in eine modulare, objektorientierte Softwarearchitektur überführen. Heute stehen für die nächste Generation hochautomatisierter Produktionsanlagen und ihrer komplexen Software mächtige Engineering-Werkzeuge zur Verfügung, die alle wesentlichen Eigenschaften zur modernen Anwendungsprogrammierung enthalten. Maschinenhersteller können sich nun der Herausforderung stellen, das in Jahrzehnten entwickelte Prozess-Know-how in eine zukunftsfähige Softwarearchitektur zu überführen. Diese muss heute folgende Anforderungen erfüllen: – Einheitliche Projekt- und Programmstruktur – Hohe Modularität des Programmcodes zur Abstraktion und vereinfachten Abbildung komplexer Prozesse – Durchgängige Verwendung der heutigen Pro grammierstandards IEC 61131-3 (3rd Edition) und PLCopen als Basis – Hohe Wiederverwendbarkeit vorhandener Softwaremodule, bspw. zur Erstellung von Maschinenvarianten – Problemlose Anpassung und Erweiterbarkeit Template-basierte Projekterstellung Das \’Generic Application Template\‘ (GAT) von Bosch Rexroth steht Anwendern als Template-basierte Toolbox-Lösung zur Verfügung. Damit lassen sich die genannten Anforderungen an eine Softwarearchitektur, die auch für künftige Weiterentwicklung tragend ist, mit erheblich reduziertem Initialaufwand umzusetzen. Zu den Vorteilen von GAT zählt die geringe Einarbeitungszeit, die schnelle Verfügbarkeit eines direkt anwendbaren Maschinencodes für Motion-Logic-Anwendungen und die Flexibilität, um den unterschiedlichen Anforderungen an eine skalierbare Softwarestruktur Rechnung tragen zu können. GAT verfolgt den Grundgedanken, dass das Maschinenprogramm ein Modul oder mehrere funktionale Module zentral koordiniert. Das über Benutzervorgaben erstellte Projekt enthält alle elementaren Bestandteile für eine Maschinensteuerung. Sämtliche Code-Teile des Projekts sind offen zugänglich und über definierte Schnittstellen einfach zu ergänzen oder anzupassen. (Abb. 1) Zu den Grundfunktionen und Eigenschaften von GAT zählen insbesondere: – Initialisierung der Softwaremodule beim Pro- grammhochlauf und Herstellen der Betriebs- bereitschaft von Steuerung und angebunde- ner Peripherie – zentrale Statusmaschine zur Steuerung einer Maschine mit den bereits hinterlegten Betriebsarten \’Automatik\‘ oder \’Manual\‘ – alternative Verwendung dezentraler Status- maschinen für modulare Anlagenkonzepte – intelligente Aufteilung der verfügbaren Ressourcen in Form von Tasks und einstellbarer Zykluszeiten – durchgängiges Diagnosekonzept von der Er- kennung, über Reaktion und Diagnose bis zur Quittierung von Fehlern – Visualisierung zur Anzeige und Steuerung der Maschinenzustände Gemeingültige Basisfunktionen stehen dabei als geprüfter und vollständiger Software-Code zur Verfügung. Als eine der wesentlichen Eigenschaften sind Template- und Anwender-Code strikt voneinander getrennt. Zur Sicherstellung der Projekt- und Datenkonsistenz bei Änderungen in Programmen werden Betriebsarten, Zustandsmaschinen, Module und Antriebs-peripherie über eine zugriffsgeschützte Funktionsbibliothek ML_TechTemplate organisiert. Integrierte Motion Control Eine Besonderheit von GAT ist, dass die Motion Control-Funktionalität homogen integriert ist. Deshalb erfolgt der Zugriff auf Antriebsdaten über die offene Funktionsbibliothek ML_TechInterface, die unabhängig von GAT einsetzbar ist. Sie basiert auf den standardisierten Motion-Bausteinen der PLC-open und bündelt diese zu einer einfach zu verwendenden Datenschnittstelle in Form von Bausteinen und Strukturen. Gegenüber der Verwendung der Basis-Bausteine der PLCopen erfolgen Initialisierung, Kommandierung und Diagnosen eines Antriebs übersichtlich über ein Datenobjekt. Darüber hinaus stellt ML_TechInterface verwendungsfertige Visualisierungsmasken bereit, über die sich Anwender den entsprechenden Status von System und Achsen anzeigen lassen und Achskommandierungen ausführen können. Diese eignen sich insbesondere bei Erstimplementierung und Inbetriebnahme. (vgl. Abb. 2) GAT-Funktionen im Detail Um die Vorteile des modularen Software-Engineerings mit GAT vollständig zu nutzen, ist eine strukturelle Aufteilung der zu projektierenden Gesamtmaschine in funktionelle Teilmodule sinnvoll. Die projektspezifischen Eingaben nimmt der Anwender mit GAT über einen dialoggestützten Wizard vor, der die Projektelemente für Erstellung und Bearbeitung in übersichtlicher Form darstellt. Gleichzeitig führt der Wizard den Programmierer an die jeweiligen Stellen im Programmcode. (vgl. Abb. 3) Jedes Teilmodul im Projekt wird dabei als funktionale Einheit betrachtet, das über eine vordefinierte Moduldatenschnittstelle für Steuerung- und Statusinformationen mit anderen Modulen kommuniziert. Abhängig von der Zielanwendung können Anwender bei Projektierungsbeginn neben den vordefinierten Betriebsarten \’Automatik\‘ und \’Manual\‘ weitere Betriebsarten der zentralen Statusmaschine definieren. Auch hierbei erfolgen \’Hinzufügen\‘, \’Umbenennen\‘ oder \’Löschen\‘ über einen Dialog, der Programmcode wird entsprechend der in GAT hinterlegten Regeln automatisch nachgeführt. Jedes Teilmodul folgt dabei zunächst defaultmäßig der zentralen Statusmaschine, der Anwender kann die modulabhängige Zuordnung ändern. Die modulspezifischen Abläufe codiert der Anwender anschließend im vorbereiteten Applikationsrahmen. Zur Strukturierung und für mehr Transparenz lassen sich zudem bei komplexeren Prozessen hinter jeder Betriebsart Zustände hinterlegen. Auch dabei unterstützt GAT durch dialoggestütztes Hinzufügen von Zuständen und Bedingungen zwischen Zuständen (sogenannte Transitionen). (vgl. Abb. 4) In jedem Teilmodul des Projekts ist ein sogenannter Achs-Container \’Axes\‘ enthalten, über den alle in dem Modul verwendeten Achsen als Datenstrukturen organisiert sind. Über diese erfolgt die Adressierung zum Zugriff auf die im Projekt benötigten Achsinformationen. Hinzufügen, Umbenennen oder Bearbeiten einer Achse nimmt der Anwender auf Knopfdruck über einen Dialog im GAT-Wizard vor. Damit entfällt das zeitraubende und fehleranfällige Ausprogrammieren. Auf diese Weise ist es möglich, in der Anwendung entsprechende Eingangsvariablen des Bibliothekbausteins MB_AxisInterface einfach zu ändern und bspw. von Positionierung auf Synchronisation umzuschalten. Diagnose- und Statusinformationen stellt der Baustein über die vordefinierten Datenstrukturen bereit, um sie z.B. mit angebundenen Visualisierungen verwenden zu können. Das automatisierte Hinzufügen eines neuen Teilmoduls wird durch entsprechende Interaktion im Wizard-Dialog angestoßen. Dabei ist es möglich, auch neue Instanzen bestehender Module zu erstellen. Verwaltung und Aufruf der Teilmodule im Anwendungsprogramm erfolgen mit GAT automatisch über die Funktionsbibliothek ML_TechTemplate. Einzelne Module lassen sich dabei über ein einziges Bit deaktivieren. Das stellt bspw. für Inbetriebnahmen oder Maschinenvarianten einen sehr wertvollen Mechanismus dar. Zentrale Funktionen für Diagnose und Behandlung von Fehlern sind in GAT bereits integriert. Die aus unterschiedlichen Quellen stammenden Fehlerinformationen werden über die vernetzten Teilmodule an einem Funktionsbaustein im Projekt zusammengeführt. Über das entsprechende Status-Strukturelement stehen diese Informationen in der Anwendung bereit. Gleichzeitig veranlasst der GAT-basierte Programmcode bei auftretenden Fehlern entsprechend ihrer Kategorisierung eine automatische Behandlung und gegebenenfalls eine definierte Fehlerreaktion. Die geforderte Wiederverwendbarkeit entwickelter Module ist durch einfaches Exportieren und Importieren des Codes über den Projektexplorer im Engineering-Tool gewährleistet. Die Einbindung eigener GAT-basierter Maschinenprojekte als Template in den GAT-Wizard ermöglicht anwendungsspezifische Projekte auf Basis dieser Toolbox-Lösung. Zur Maschinenbedienung auf externen HMI-Geräten steht eine mehrsprachige Visualisierungsmaske zur Verfügung, die über \’Visualisierungen\‘ im GAT-Wizard eingebunden wird. Diese Maske besteht aus den Bereichen Kopfzeile mit Statusinformationen, Hauptbildbereich mit menüabhängigen Anzeigen und Funktionstasten sowie einer Fußzeile mit Tasten zur Bedienbildumschaltung. Änderungen und Erweiterungen können Anwender über das entsprechende HMI-Tool durchführen. Fazit Die heute verfügbaren Programmierstandards IEC 61131-3 3rd-Edition und PLCopen schaffen die optimalen Voraussetzungen zur Entwicklung modularer Maschinensoftware. Die damit gemachten Erfahrungen in der Automatisierung unterschiedlicher Anwendungen sind frühzeitig in die Entwicklung von GAT eingeflossen. Auf dieser Grundlage leistet die Template-basierende Projekterstellung einen wertvollen Beitrag für das zeit- und kostensparende Software-Engineering in der Fabrikautomation. Basierend auf definierten Schnittstellen und klarer Strukturierung des mit GAT erstellten Projektcodes gewinnen Anwendungsprogramme an Kompaktheit und Übersichtlichkeit. Zusätzlich erhöhen sich Transparenz und Qualität während der Codierung, um die Pflege umfangreicher Anwendungssoftware z.B. in Projektteams sicherzustellen. Zudem können Hersteller Maschinenvarianten flexibler und einfacher erstellen sowie kundenspezifische Anforderungen schneller umsetzen.

Bosch Rexroth
http://www.boschrexroth.com

Das könnte Sie auch Interessieren

Weitere Beiträge