Die PLCopen trägt bereits seit Jahren zur Integration von Steuerung und Motion Control in einer Engineering-Plattform bei. Während der SPS-Teil auf dem weltweiten Standard IEC 61131-3 basiert, baut die Motion Control-Funktionaliät auf deren bekannten Eigenschaften auf, insbesondere auf dem Konzept der Funktionsblöcke. Die PLCopen Motion Control Spezifikation wurde auf einer ganzen Reihe unterschiedlicher Plattformen von unterschiedlichen Herstellern implementiert und eröffnet dem Anwender damit die Möglichkeit, aus einem breiten Angebot an Produkten und Herstellern zu wählen und dabei immer auf das gleiche Know-how zurückzugreifen. Nach dem Update und der Integration der ersten Teile der PLCopen Spezifikationen in Motion Control, war es notwendig, im dritten Teil – den User Guidelines – die neuen Eigenschaften aufzunehmen. Mit dem neuen Release enthält die Reihe der PLCopen Motion Control Spezifikationen nun die folgenden sechs Teile:
- Teil 1 – Basisfunktionen
- Teil 2 – integriert in Teil 1
- Teil 3 – update der User Guidelines
- Teil 4 – für interpolierte Motion Control
- Teil 5 – mit Homing-Prozeduren
- Teil 6 – mit zusätzlichen Funktionalitäten für Hydraulik
Weiterentwicklung der User Guidelines
In der überarbeiteten Fassung der User Guidelines werden Beispiele vorgestellt, die zeigen, wie sich die Motion Control Funktionsblöcke verwenden lassen, um darauf aufbauend, weiterreichende Funktionalitäten zu entwickeln. Diese Funktionalitäten können mit Hilfe unternehmensweiter Bibliotheken für die Wiederverwendung zur Verfügung gestellt werden. Darüber hinaus wird gezeigt, wie sich die Funktionsblöcke mit anderen Spezifikationen wie z.B. der OMAC PackAL, dem Application Layer für Funktionalitäten in Verpackungsmaschinen, verbinden lassen. Dieser Artikel zeigt ein einfaches Beispiel aus diesem Bereich.
Darsstellungsweise des Programms
Für den PLCopen Motion Control Funktionblock wird eine grafische Darstellung zur Verdeutlichung verwendet. Selbstverständlich kann dies auch in Textform geschehen. Das Beispiel in Abb. 1 zeigt, wie dies für den MC_MoveAbsolute Funktionsblock aussehen könnte.
Getting Started
Bevor man eine Achsen-/Antriebs-Kombinaton verwenden kann, muss sie initialisiert werden. Dies kann durch ein einfaches Startverfahren erfolgen, mit einer Kombination aus MC_Power, MC_Home und MC_MoveAbsolute (vgl. Bild 2). Man benötigt einen MC_Power pro Achse um die Achse einzuschalten. Für die Absolut-Positionierung verwendet man MC_Home, um die Home Position zu definieren. (Bitte beachten: MC_Home wird nicht immer gebraucht, beispielsweise bei MC_MoveVelocity und einer rotierenden Achse.) Jetzt lässt sich die Achse positionieren, zum Beispiel durch die Aktivierung von MC_MoveAbsolute. Das folgende Bild zeigt die grafische Darstellung dieser kombinierten Funktionalität. Die bezeichnete Achse ist hier mit Achse1 benannt und mit allen drei Funktionsblöcken verbunden. MC_Power wird durch das Setzen von \’PowerEnable\‘ gestarted. Danach wird wird \’Start\‘ gesetzt, um MC_Home auszuführen. Wenn die Zielposition erreicht ist, wird die \’Done\‘ Ausgabe von MC-Home gesetzt. Dies führt den MC_MoveAbsolute Funktionsblock aus, der sich zur gesetzten Position bewegt. Die Ausgabe \’Ready\‘ wird dann gesetzt, wenn die Position erreicht ist. Der Homing-Teil der oben beschriebenen Vorgehensweise lässt sich durch die Funktionalitäten erweitern, die in Teil 5 \’Homing Procedures\‘ definiert sind. Mit diesem Set von Bausteinen lässt sich eine bestimmte Zielprozedur pro Achse oder pro Maschine definieren. Diese grundlegende Funktion lässt sich schon vorher mit der Verwendung des MC_ReadAxisInfo Funktionsblocks erweitern. Auf diese Weise lässt sich überprüfen ob die Kommunikation mit dem Antrieb hergestellt ist und durch die Ausgabe MC_ReadAxisInfo lässt sich MC_Power starten. Rückmeldung gibt die Ausgabe \’PowerOn\‘ die der Auslöser zum Starten von MC_Home sein kann. Dies zeigt sich dann in der Ausgabe \’IsHomed\‘ und kann verwendet werden, um die absolute Bewegung zu starten.
Anwendungsbeispiel: Etikettiermaschine
Die Aufgabe lautet, ein Etikett an einer bestimmten Stelle auf einem Produkt anzubringen. Die Maschine hat zwei Motoren, einen, der das Produkt über ein Laufband zuführt und einen weiteren, der die Etiketten zuführt und auf den Produkten anbringt. Der Prozess des Etikettierens wird durch einen Positionserkennungssensor gestartet. Zwischen der Positionserkennung bis zum Start der Etikettierbewegung gibt es eine Verzögerung, deren Länge von der Geschwindigkeit des Laufbands, der Position des Sensors und der Position des Etiketts auf dem Produkt abhängt.
Programmierbeispiel
Diese Beispiel zeigt, wie sich diese Aufgabe lösen lässt. Beide Achsen bewegen sich zum Zeitpunkt, zu dem das Etikett auf dem Produkt angebracht wird, mit der gleichen Geschwindigkeit. Die Verzögerung für TON wird aus der Entfernung des Sensors und der Geschwindigket des Laufbands errechnet. Nach jeden Etikettiervorgang stoppt der Motor des Etikettantriebs und wartet auf den nächsten Auslöser, während das Laufband ohne Unterbrechung läuft.
Mögliche Verbesserungen
Obwohl dieses Prinzip funktioniert, gibt es einige Möglichkeiten, die Funktionalitäten und die Leistung zu verbessern, um schnellerer und präziser laufende Maschinen zu bauen. Dies lässt sich zum Beispiel folgendermaßen erreichen:
- Kompensation der Verschiebungen der Ettikettpositionierung, die als ein Resultat der Summe von zunehmenden Fehlern auftreten.
- Eine schnelle Berührungs-Prüfung um die Start-Position des Produkts exakter zu erfassen.
- Eine MC_CamIn oder MC_GearInPos Funktion um Etikett- und Produktposition zu synchronisieren, um das Etikett exakter auf dem Produkt zu positionieren. Das Laufband sollte hierbei die Master Achse und der Etikettenantrieb die Slave Achse sein. Dadurch kann eine Diskrepanz, die durch die Beschleunigung des Laufbands auftreten kann, während des Etikettierprozesses vermieden werden.
- Falls das Produkt kleiner ist als die Entfernung zum Sensor könnte eine Art FIFO erforderlich sein, die das Produkt besser erfasst. Hierfür ist ein Benutzer-abgeleiteter FIFO Funktionblock ebenfalls in dieser Spezifikation definiert.
Weitergehende Inhalte
Teil 3 wirbt dafür, eigene Bibliotheken mit Anwender-abgeleiteten Funktionsblöcken anzulegen und damit die Wiederverwendung geprüfter Software innerhalb der Organisation zu erhöhen. Weitere Beispiele sollen dies unterstützen. Diese sind nicht nur anwendungsorientierte Beispiele wie Lagerhaltung und Verschlusstechnik (\’Capping\‘), sondern auch verschiedene Bewegungen wie \’Jogging\‘ and \’Inching\‘, Registrierung um Verpackungsmaterial justiert bereitzustellen, fliegende Scheren um sich bewegendes Material zu schneiden, die Verwendung von drei Segment CAM Profilen und Master Engine, die dabei helfen, die Anwendungssoftware für eine Maschine zu zerlegen und zu strukturieren. Darüber hinaus stellt es Verbindungen her zur Arbeit, die innerhalb der OMAC Organisation geleistet wird und zeigt die spezifizierte Wicklerfunktionalität. Die gesamte Spezifikation kann von der PLCopen Website herunter geladen werden. Weitere Beispiele die mit der Community geteilt werden, sind bei PLCopen herzlich willkommen.
www.plcopen.org