Alle Befehle im PROFINET IO-Modul folgen dem gleichen Prinzip. Sie sind an ihrem Namen zu erkennen, der mit Trigger endet. Um einen Befehl zu senden, gehen Sie bitte folgendermassen vor:
Stellen Sie die erforderlichen Parameter ein, bevor Sie den Trigger auf True setzen.
Setzen Sie den Tigger des Befehls auf True.
Warten Sie, bis das Flag <Befehl>Done auf True wechselt.
Setzen Sie den Befehlsauslöser wieder auf False.
Warten Sie, bis das Flag <Befehl>Done wieder auf False zurückgesetzt wird.
Prüfen das Register IsError auf allfällige Fehler. Sollte es einen geben, behandeln Sie ihn entsprechend Ihren Anforderungen.
Liegt kein Fehler vor, können Sie den(die) entsprechenden Output(s) verwenden.
Dies wird in der folgenden Abbildung veranschaulicht:
Bemerkung
Es können nicht zwei Befehlsauslöser gleichzeitig auf True gesetzt werden. EYE+ wird in einem solchen Fall einen Fehler zurückgeben. Weitere Angaben finden Sie im Abschnitt Zusätzliche Fehlercodes.
Stoppt alle Status, wie in stop <Status> definiert. Die Status werden als Bitset kodiert, wobei jeder Status den folgenden Wert hat:
Produktion 0b0000_0001
Rezeptbearbeitung 0b0000_0010
Kamerakonfiguration 0b0000_0100
Hand-Augen-Kalibrierung 0b0000_1000
Rezeptqualifizierung 0b0001_0000
Entleerung 0b0010_0000
Darüber hinaus sind die folgenden Status ebenfalls im Register SystemState verfügbar:
Fehler 0b0100_0000
Bereit 0b1000_0000
Aktualisierung des Systems 0b0001_0000_0000
Migration der Einstellungen 0b0100_0000_0000
Migration der Rezepte 0b1000_0000_0000
Backup des Systems 0b0001_0000_0000_0000
Wiederherstellung des Systems 0b0010_0000_0000_0000
Initialisierung 0b0100_0000_0000_0000
Fehler bei der Migration 0b1000_0000_0000_0000`
EYE+ erkennt diesen Befehl, wenn sich der Wert StopStates ändert (z.B. wenn der Wert von 0 auf 1 geht). Der PDO-Eintrag StopStateDone wechselt auf True, wenn das System die Ausführung des Befehls beendet hat, wie in der folgenden Abbildung gezeigt. Fehler werden über die Spezialregister IsError und ErrorID behandelt, vgl. Fehlerbehandlung.
Das Done BOOL wird gelöscht, wenn der Wert auf 0 zurückgesetzt wird.
Bemerkung
Sie können alle Status anhalten, um in den Status Bereit zu gehen, indem Sie diesen Wert auf 0xFF setzen.
Clear Error Trigger
EYE+ kann jeden in den Fehlercodes definierten Fehlercode zurückgeben. Der Clear Error Trigger erlaubt es, jeden Fehler zu löschen, der im ErrorID Register auftauchen könnte. Zusätzlich zu den Standard-Fehlercodes können spezifische Fehler für PROFINET IO angezeigt werden, diese werden im Abschnitt Zusätzliche Fehlercodes erläutert.
Das Löschen eines aktiven Fehlers ist ganz einfach, wie im Folgenden beschrieben:
Gibt den aktuellen Status von EYE+ an, siehe Stop State(s) für eine vollständige Liste der Status.
Clear Error Done
True, wenn EYE+ die Ausführung des Befehls Clear Error Trigger beendet hat. Wird auf False zurückgesetzt, wenn der Trigger Clear Error Trigger auf 0 gesetzt wird.
Is Error
True, wenn der Output Error ID einen Fehler enthält, False, wenn nicht. Das Löschen des Fehlers setzt dieses Register auf False zurück.
Error ID
Enthält den aktuellen Error ID, siehe Clear Error Trigger. Das Löschen des Fehlers setzt dieses Register auf den Wert 0 zurück.
Stop State Done
True wenn EYE+ die Auführung des Befehls Stop State(s) beendet hat. Wird auf False zurückgesetzt, wenn der Trigger Stop State(s) auf 0 gesetzt wird.
Startet ein Rezept in Produktion. Der eindeutige Rezeptidentifikator muss im Register RecipeID gesetzt werden. Sobald die Produktion begonnen hat, widerspiegelt sich dies im Register StartProductionDone, sowie im Systemstatus SystemState. Fehler werden über die speziellen Register IsError und ErrorID behandelt, siehe Fehlerbehandlung.
Nachfolgend ein Beispiel, bei dem das Rezept 42 für die Produktion gestartet wird:
Get Part Trigger
Fordert ein oder mehrere Teile an. Die Anzahl der zurückgegebenen Teile kann durch Ändern des Wertes eines der Parameter PartQuantity, MultiPartQuantityA, MultiPartQuantityB, MultiPartQuantityC, MultiPartQuantityD oder ModelNQuantity (N = 1, 2, 3, 4, 5 oder 6) geändert werden. Standardmässig ist der Parameter PartQuantity auf 1 gesetzt. Eine vollständige Beschreibung der Befehls finden Sie unter get_part und get_part.
Die folgende Abbildung zeigt ein Beispiel für die Anforderung eines einzelnen Teils (Standardparameter).
Bemerkung
Ein einfaches Szenario ist unter Get part beschrieben.
Prepare Part Trigger
Bereitet ein oder mehrere Teile in EYE+ vor. Vorbereitete Teile können später mit dem Register Get Part Trigger angefordert werden. Dieser Befehl hat das gleiche Verhalten wie Get Part Trigger, ausser dass er keine Teilekoordinaten sendet und den Timeout-Parameter nicht berücksichtigt, vgl. dazu Command Timeout. Die Anzahl der vorzubereitenden Teile kann anhand der Parameter PartQuantity, MultiPartQuantityA, MultiPartQuantityB, MultiPartQuantityC oder MultiPartQuantityD geändert werden. Standardmässig ist der Parameter PartQuantity auf 1 gesetzt. Bitte lesen Sie den Abschnitt prepare_part für eine vollständige Beschreibung des Befehls.
Wenn das/die angeforderte(n) Teil(e) bereit sind, wird das Flag IsPrepared auf 1 gesetzt.
Die folgende Abbildung zeigt ein Beispiel für die Vorbereitung eines Teils.
Bemerkung
Ein einfaches Szenario ist unter Prepare part beschrieben.
Force Take Image Trigger
Das Register ForceTakeImageTrigger zwingt EYE+ dazu, sobald möglich ein Bild aufzunehmen.
Jedes Mal, wenn der ForceTakeImageTrigger von 0 auf 1 wechselt, wird EYE+ einen neuen Satz Bilder aufnehmen und die Analyse durchführen. Bitte lesen Sie den Abschnitt force_take_image für eine vollständige Beschreibung des Befehls.
Die folgende Abbildung zeigt ein Beispiel für das Setzen dieses Flags.
Das Register ClearPoses erlaubt das Löschen der Poses-Outputs (Pose<n>), was zu einer leeren Liste von Positionen führt. Dies ist zwischen zwei aufeinanderfolgenden Get Part Triggers von Nutzen.
Während der Produktion können bestimmte Parameter gemäss Ihren Anforderungen angepasst werden. Die folgende Liste zeigt, welche Parameter dabei verfügbar sind.
Save Parameters Trigger
Die unter Produktionsparameter aufgelisteten Parameter müssen explizit mit diesem speziellen Befehl gespeichert werden. EYE+ meldet die Ausführung des Befehls anhand des Registers SaveParametersDone. Der Befehl speichert alle unter Produktionsparameter aufgelisteten Parameter. Es ist deshalb wichtig, sie alle auf einen sinnvollen Wert zu festzulegen! Fehler werden anhand der speziellen Register IsError und ErrorID behandelt, siehe Fehlerbehandlung.
Das folgende Beispiel zeigt, wie sich einer der Parameter verhält, wenn der Befehl gesendet wird.
Wichtig
Dieser Befehl speichert alle Parameter. Es ist wichtig, dass Sie alle Parameter auf einen sinnvollen Wert initialisieren.
Can Take Image
Die Bildaufnahme ist standardmässig aktiviert. Falls erforderlich, kann dieser Parameter auf False gesetzt werden, um die Bildaufnahme zu deaktivieren. Im Abschnitt Can take image erhalten Sie weitere Informationen darüber, in welchen Fällen dieser Befehl nützlich sein kann.
Image After Send
Erzwingt die Aufnahme eines Bildes, nachdem ein Teil entnommen wurde. Jedes Mal, wenn Sie die Befehle Get Part Trigger oder Prepare Part Trigger ausführen, nimmt das System unmittelbar vorher automatisch ein Bild auf. Dies wird verwendet, um die Koordinaten der bereits gefundenen guten Kandidaten (im Speicher abgelegt) zu korrigieren, wenn Sie vermuten, dass sich die Teile in der Zwischenzeit aufgrund einer externen Störung bewegt haben könnten.
Dies ist die Frist (in Sekunden) für die Ausführung des Befehls Get Part Trigger. Wenn innerhalb dieser Frist keine Teile gefunden wurden, wird ein Fehler zurückgegeben.
Bemerkung
Wenn Sie diesen Parameter auf 0 setzen, wird die Frist deaktiviert: Der Befehl wird ausgeführt, bis die angeforderte Anzahl von Teilen gefunden wurde.
Part Quantity
Dieser Parameter wird verwendet, um EYE+ aufzufordern, nach mehreren Teilen gleichzeitig zu suchen. Jedes Mal, wenn EYE+ ein Bild aufnimmt, wird nach mindestens <n> Teilen auf dem Bild gesucht. Wenn diese Anzahl Teile nicht gefunden wird, werden keine Koordinaten gesendet, eine neue Vibration durchgeführt und ein neues Bild aufgenommen, bis diese <n> Teile gefunden werden.
Multi Part Quantity A, B, C, D
Nur mit einem Multi-feeding-Rezept, Anzahl der Teile eines bestimmten Typs, die von Prepare Part Trigger und Get Part Trigger bei jeder Bildaufnahme angefordert werden. Wenn diese Anzahl Teile bei der Bildaufnahme nicht gefunden wird, dann wird Get Part Trigger oder Prepare Part Trigger erneut ausgeführt (Vibration + Bildaufnahme), bis diese Anzahl Teile gefunden wird.
Für weitere Informationen über Funktionsweisen in Verbindung mit der Anzahl Teile lesen Sie bitte den folgenden Abschnitt, der ein gängiges Szenario für die Produktion mit Multi-feeding beschreibt.
Model N Quantity, wobei N = 1, 2, 3, 4, 5 oder 6
Nur mit einem Multi-model-Rezept, Anzahl der Teile eines bestimmten Modells, die von Prepare Part Trigger und Get Part Trigger bei jeder Bildaufnahme angefordert werden. Wenn diese Anzahl Teile bei der Bildaufnahme nicht gefunden wird, dann wird Get Part Trigger oder Prepare Part Trigger erneut ausgeführt (Vibration + Bildaufnahme), bis diese Anzahl Teile gefunden wird.
Für weitere Informationen über Funktionsweisen in Verbindung mit der Anzahl Teile lesen Sie bitte den folgenden Abschnitt, der ein gängiges Szenario für die Produktion im Multi-model-Modus beschreibt.
Enthält das aktuell für die Produktion oder Entleerung geladene Rezept.
Get Part Done
True, wenn EYE+ die Ausführung des Befehls Get Part Trigger beendet hat. Wird auf False zurückgesetzt, wenn der Trigger Get Part Trigger auf 0 gesetzt wird.
Prepare Part Done
True wenn EYE+ die Ausführung des Befehls Prepare Part Trigger beendet hat. Wird auf False zurückgesetzt, wenn der Trigger Prepare Part Trigger auf 0 gesetzt wird.
Is Prepared
True, wenn EYE+ die Bildanalyse beendet hat und bereit ist, die Position anhand von Get Part Trigger anzugeben.
Anzahl der allgemeinen Teile, die mit einem Get Part Trigger entnommen werden können.
Multi Parts Prepared A, B, C, D
Anzahl der spezifischen Teile, die mit einem Get Part Trigger entnommen werden können.
Model N Prepared, wobei N = 1, 2, 3, 4, 5 oder 6
Anzahl der spezifischen Teile eines bestimmten Modells, die mit einem Get Part Trigger zurückgegeben werden können.
Poses
EYE+ kann bis zu 10 Positionen auf einmal ausgeben. Jede Position besteht aus 3 obligatorischen Parametern, die die Position des Teils definieren, und 2 optionalen Parametern, falls Sie ein Multi-feeding- oder Multi-model-Rezept erstellen:
Pose <n> X: die X-Koordinate dieses Teils
Pose <n> Y: die Y-Koordinate dieses Teils
Pose <n> RZ: der RZ-Winkel dieses Teils
Pose <n> Type: der Typ des Teils (wird in Multi-feeding-Rezepten verwendet)
Pose <n> Model: das Modell des Teils (wird in Multi-model-Rezepten verwendet)
Ausserdem wird die Anzahl der gültigen Einträge immer im Register NumberofValidEntries definiert.
Bemerkung
Pose <n> Model befindet sich in einer eigenen Gruppe in der GSDML. Siehe Ausgaben.
Zusätzlich zu den Produktionsfunktionalitäten bietet die PROFINET IO-Schnittstelle Zugriff auf alle Befehle zur vollständigen Steuerung des optionalen Asyril Entleerungssystems für einfachere Produktionsumstellungen. Konsultieren Sie die Abschnitte Purge plate und Purge full, um weitere Informationen darüber zu erhalten, wie Sie die Vorteile dieses optionalen Zubehörs in vollem Umfang nutzen können.
Es gibt einige, dem Entleerungssystem spezifische Befehle:
Start Purge Trigger
Startet ein Rezept zur Entleerung der Plattform. Der eindeutige Rezept-Identifikator muss im Register RecipeID angegeben werden. Sobald die Entleerung begonnen hat, wird sich dies im Register StartPurgeDone sowie im Systemstatus System State widerspiegeln. Fehler werden über die speziellen Register IsError und ErrorID behandelt, siehe Fehlerbehandlung.
Nachfolgend ein Beispiel, bei dem das Rezept 42 zur Entleerung der Plattform gestartet wird:
Purge Plate Trigger
Führt eine Sequenz zur Entleerung der Plattform durch. Diese Sequenz besteht darin, die Entleerungsklappe zu öffnen, die Plattform in die entsprechende Richtung vibrieren zu lassen und schliesslich die Entleerungsklappe wieder zu schliessen. Die Dauer der Vibration kann optional im Register PurgeDuration eingestellt werden.
Das Register PurgePlateDone wird auf 1 gesetzt, sobald EYE+ die Entleerung abgeschlossen hat.
Das System muss sich im Entleerungsmodus befinden, um diesen Befehl zu verwenden, vgl. Start Purge Trigger.
Purge Full Trigger
Führt eine Sequenz zur Entleerung der Plattform und des Bunkers durch. Diese Sequenz besteht aus dem Öffnen der Entleerungsklappe, dem Vibrieren der Plattform in die entsprechende Richtung und dem Auslösen des Bunkers, sowie schliesslich dem Schliessen der Entleerungsklappe. Die Dauer der Vibration muss im Register PurgeDuration definiert werden.
Das Register PurgeFullDone wird auf 1 gesetzt, wenn EYE+ die Entleerung abgeschlossen hat.
Das System muss sich im Entleerungsmodus befinden, um diesen Befehl zu verwenden, vgl. Start Purge Trigger.
Purge Duration
Dauer der VIbration der Platte und des Bunkers in ms. Sie muss zwischen 0 und 30000 ms liegen. Wenn die Dauer auf 0 gesetzt wird, wird die erweiterte Entleerung ausgelöst.
Wenn die erweiterte Entleerung ausgelöst wird, hängt die Dauer der Entleerung von der Anzahl der Teile auf der Plattform und der Intensität der definierten Vibration ab. Die Entleerung wird erst beendet, wenn alle Teile evakuiert wurden. Wenn die Plattform nach 30 Sekunden nicht entleert ist, wird ein spezifischer Fehler ausgelöst.
True, wenn EYE+ die Ausführung des Befehls Start Purge Trigger beendet hat. Wird auf False zurückgesetzt, wenn der Trigger Start Purge Trigger auf 0 gesetzt wird.
Purge Plate Done
True, wenn EYE+ die Ausführung des Befehls Purge Plate Trigger abgeschlossen hat. Wird auf False zurückgesetzt, wenn der Trigger Purge Plate Trigger auf 0 gesetzt wird.
Purge Full Done
True, wenn EYE+ die Ausführung des Befehls Purge Full Trigger abgeschlossen hat. Wird auf False zurückgesetzt, wenn der Trigger Purge Full Trigger auf 0 gesetzt wird.
Startet eine Hand-Augen-Kalibrierung mit einem Ihrer Rezepte und dem dazugehörigen Teil. Der eindeutige Rezeptidentifikator muss im Register RecipeID gesetzt werden. Sobald die Hand-Augen-Kalibrierung gestartet wurde, wird sich dies im Register StartHand-eyeCalibrationDone und im SystemState widerspiegeln. Fehler werden anhand der speziellen Register IsError und ErrorID behandelt, vgl. Fehlerbehandlung.
Nachfolgend ein Beispiel, bei dem das Rezept 42 für die Hand-Augen-Kalibrierung benutzt wird:
Set Calibration Point Trigger
Zeichnet in CalibrationPointIndex eine neue Roboterposition für die aktuelle Hand-Augen-Kalibrierung auf. Insgesamt müssen 4 Kalibrierungspunkte (Index 1 bis 4) aufgezeichnet werden, bevor der Befehl CalibrateTrigger ausgeführt werden kann. Die Koordinaten XCoordinate und YCoordinate des Roboters können in Ihrer eigenen Robotereinheit angegeben werden. Wenn bereits ein anderer Punkt für diesen CalibrationPointIndex registriert wurde, wird er durch den neu definierten Punkt überschrieben.
Gibt die Roboterkoordinaten zurück, die im CalibrationPointIndex aufgezeichnet wurden. Die zurückgegebenen Koordinaten können in Pose 1 - X und Pose 1 - Y gelesen werden.
Nimmt ein Bild auf, um die aktuellen Vision-Koordinaten des erkannten Objekts zu erhalten. Die erkannten Koordinaten werden mit der in CalibrationPointIndex aufgezeichneten Roboterposition gepaart. Wenn mehr als ein Teil erkannt wird, wird das erste Teil als Paarungspunkt verwendet.
Index des Kalibrierungspunktes. Ein vollständiger Kalibrierungspunkt besteht aus einer Roboterposition und einer entsprechenden Teileposition. Insgesamt müssen 4 Kalibrierungspunkte (Index 1 bis 4) aufgezeichnet werden, bevor der Hand-Augen-Befehl CalibrateTrigger ausgeführt wird.
X Coordinate
X-Koordinate der Roboterposition, die mit dem Befehl SetCalibrationPointTrigger aufgezeichnet wird.
Y Coordinate
Y-Koordinate der Roboterposition, die mit dem Befehl SetCalibrationPointTrigger aufgezeichnet wird.
Calibrate Trigger
Berechnet aus den registrierten Kalibrierungspunkten die Matrix der Hand-Augen-Kalibrierung. Sie müssen 4 vollständige Kalibrierungspunkte mit den Befehlen SetCalibrationPointTrigger und TakeCalibrationImageTrigger registriert haben, bevor Sie den Befehl CalibrateTrigger aufrufen. Die Genauigkeit der Kalibrierung wird im Output Calibration Accuracy zurückgegeben.
Test Calibration Trigger
Dieser Befehl wird verwendet, um die aktuell berechnete Hand-Augen-Kalibrierung zu testen. Er gibt in NumberofValidEntries die Anzahl erkannter Teile und in den Poses deren Roboterkoordinaten zurück. Sie können dann prüfen, ob die ermittelten Roboterkoordinaten mit den tatsächlichen Roboterkoordinaten übereinstimmen.
Save Calibration Trigger
Speichert die aktuelle Hand-Augen-Kalibrierung. Dieser Befehl sollte nach CalibrateTrigger aufgerufen werden, um die Daten im System zu speichern, wenn Sie das Ergebnis für gut genug halten. Sobald die Kalibrierung gespeichert ist, wird sie automatisch in der Produktion verwendet. Wenn zuvor eine andere Kalibrierung gespeichert wurde, wird diese durch die neue Kalibrierung überschrieben.
Bemerkung
Wenn Sie vergessen, diesen Befehl auszuführen und den Status der Hand-Augen-Kalibrierung beenden, verlieren Sie alle hängigen Kalibrierungsdaten.
True, wenn EYE+ die Ausführung des Befehls Calibrate Trigger beendet hat. Wird auf False zurückgesetzt, wenn der Trigger Calibrate Trigger auf 0 gesetzt wird.
Genauigkeit der Kalibrierung, die sich aus dem Befehl Calibrate Trigger ergibt. Sie wird in der Masseinheit ausgedrückt, die in Ihrem EYE+ System konfiguriert ist. Sie können die Masseinheit in EYE+ Studio im Menü KONFIGURATION unter Roboter überprüfen.
Bemerkung
Wenn Sie die Kamerakonfiguration nicht vor der Hand-Augen-Kalibrierung durchgeführt haben, wird die Genauigkeit der Kalibrierung in Pixeln angegeben.