get_part

Wichtig

Dieser Abschnitt ist nur relevant, wenn ein Multi-feeding-Rezept in der Produktion verwendet wird. Siehe get_part für Standard-Rezepte für ein einziges Teil.

Parameter

  • Keine

Rückgabe

  • 200 x=<x> y=<y> rz=<rz> p=<part>, wobei <x>, <y>, <rz> Koordinaten und Orientierung des Teils sind und <part> je nach Teil entweder a, b, c oder d ist, sonst siehe Fehlercodes.

Bemerkung

Die Koordinaten haben 5 Dezimalstellen (z.B. x = 10.00000) und der Winkel 2 (z.B. rz = 1.00).

Beschreibung

Fordert ein oder mehrere Teile eines spezifischen oder nicht spezifischen Typs.

Im Kontext des Multi-feedings kann dieser Befehl verwendet werden, um die Position eines oder mehrerer bestimmter Teile (z.B. ein Teil a und ein Teil d) oder beliebiger entnehmbarer Teile (z.B. Teil a oder Teil c) abzurufen. Dieses Verhalten wird durch den Parameter part_quantity und den für Multi-feeding spezifischen Parameter multi_part_quantity gesteuert.

Standardmässig sind diese Parameter folgendermassen eingestellt:

Wenn multi_part_quantity a, multi_part_quantity b, multi_part_quantity c und multi_part_quantity d auf Null gesetzt sind, wird jedes entnehmbare Teil zurückgegeben, sei es vom Typ a, b, c oder d. Das System wird versuchen, die Positionen abwechselnd zurückzugeben (z.B. a, b, a, b usw. für 2 Teile). Wie bei Rezepten für ein einzelnes Teil, kann die Anzahl der zurückgegebenen Teile mit dem Parameter part_quantity geändert werden (vgl. Tab. 25).

Sobald multi_part_quantity auf einen Wert grösser als Null gesetzt wird, wird part_quantity ignoriert. Der Befehl get_part gibt dann die Anzahl der spezifischen Teile zurück, die angefordert werden. Dies kann z.B. verwendet werden, um nur Teile des Typs a abzurufen oder Positionen für verschiedene Teiletypen (z. B. a, b und c) gleichzeitig zu erhalten.

Bemerkung

Beachten Sie, dass eine Änderung von part_quantity oder multi_part_quantity, während get_part im Gange ist, diesen nicht beeinflusst. Erst der nachfolgende get_part berücksichtigt den neu gesetzten Werte.

Bemerkung

Dieser Befehl blockiert die Eingabe, bis die angeforderten Teile gefunden werden und zurückgegeben werden können. Standardmässig ist eine Frist von 30 Sekunden eingestellt. Der Befehl gibt einen Fehler zurück, wenn die angeforderte Anzahl Teile nach Ablauf der Frist nicht gefunden werden konnten. Die Frist kann vor dem Ausführen von get_part angepasst werden (vgl. set_parameter).

Auch wenn im Folgenden von einem Szenario mit zwei Teilen ausgegangen wird (a und b), bleibt das Prinzip bei mehr Teilen dasselbe.

Standard-Funktionsprinzip

Parameter definiert als:

Der Befehl get_part gibt die Koordinaten eines guten Kandidaten zurück, sei er vom Typ a oder vom Typ b. Das Verhalten ist ähnlich wie beim Anwendungsfall eines einzelnen Teils. Allerdings gibt der Befehl wenn möglich Teile mit abwechselndem Typ zurück.

  • Angenommen, die Bildanalyse ist abgeschlossen und das System hat 2 Teile vom Typ a und 3 Teile vom Typ b gefunden. Ein 5-maliger Aufruf von get_part wird wahrscheinlich die folgende Sequenz zurückgeben: a, b, a, b, b. Es gibt keine Garantie, dass die Sequenz mit a beginnt, sodass die Ausgabe auch b, a, b, a, b sein könnte. Das System wird erst dann eine neue Beschickungssequenz auslösen, wenn alle guten Kandidaten zurückgegeben worden sind.

  • Nehmen wir nun an, dass das System 3 Teile vom Typ a und keines vom Typ b gefunden hat. Ein dreimaliger Aufruf von get_part gibt a, a, a zurück. Ein vierter Aufruf von get_part löst eine Beschickungssequenz und eine neue Bildanalyse aus.

Funktionsprinzip mit part_quantity = n

Parameter definiert als:

Dies ändert die Mindestanzahl der guten Kandidaten jeglichen Typs, die beim Ausführen des Befehls get_part gefunden werden müssen. Die Anzahl der Teile kann mit dem Befehl set_parameter geändert werden.

Der Befehl get_part hört erst auf, wenn mindestens n gute Kandidaten auf dem Asycube gefunden wurden oder die Frist abgelaufen ist.

  • Angenommen, die Bildanalyse ist abgeschlossen und das System hat 2 Teile vom Typ a und 3 Teile vom Typ b gefunden. Ein 2-maliger Aufruf von get_part wird wahrscheinlich die folgende Sequenz zurückgeben: (a, b), (a, b). Auch hier gibt es keine Garantie, dass die Folge mit a beginnt, so dass die Ausgabe auch (b, a), (b, a) sein könnte. Ein dritter Aufruf von get_part wird eine Beschickungssequenz und eine neue Bildanalyse auslösen, da nur ein einziges Teil verfügbar wäre und wir eine part_quantity von 2 angefordert haben.

Funktionsprinzip mit multi_part_quantity = n

Parameter definiert als:

Da in diesem Fall einer der multi_part_quantity nicht gleich Null ist, wird part_quantity ignoriert. In diesem Fall gibt das System nur Teile vom Typ a zurück.

  • Nehmen wir wieder an, dass die Bildanalyse abgeschlossen ist und das System 2 Teile vom Typ a und 3 Teile vom Typ b gefunden hat. Ein 2-maliger Aufruf von get_part wird die folgende Sequenz zurückgeben: a, a. Obwohl es gute Kandidaten für den Typ b gibt, wird keiner zurückgegeben und ein dritter Aufruf von get_part wird eine Beschickungssequenz und eine neue Bildanalyse auslösen, um einen neuen Kandidaten des Typs a zurückzugeben.

Parameter definiert als:

Auch hier wird part_quantity ignoriert, da die multi_part_quantity nicht gleich Null sind. Ein Teil vom Typ a und ein Teil vom Typ b werden nun gleichzeitig angefordert.

  • Nehmen wir unser vorheriges Beispiel, bei dem die Bildanalyse abgeschlossen ist und das System 2 Teile vom Typ a und 3 Teile vom Typ b gefunden hat. Ein 2-maliger Aufruf von get_part liefert die folgende Sequenz: (a, b), (a, b). Ein dritter Aufruf von get_part wird eine Beschickungssequenz und eine neue Bildanalyse auslösen, um (a, b) zurückzugeben.

Bemerkung

Wie bei part_quantity ist es möglich, multi_part_quantity auf Werte grösser als 1 zu setzen. Wenn zum Beispiel 2 Teile a und 1 Teil b bei derselben Ausführung von get_part benötigt werden, muss multi_part_quantity a auf 2 und multi_part_quantity b auf 1 gesetzt werden.

Anwendungsbeispiel

set_parameter part_quantity 2
set_parameter multi_part_quantity a 0
set_parameter multi_part_quantity b 0
get_part
200 x=0.12345 y=0.11111 rz=0.99 p=a x=0.42420 y=0.75311 rz=0.75 p=b
get_part
200 x=0.78951 y=0.96514 rz=0.42 p=b x=0.23554 y=0.14587 rz=0.51 p=b

set_parameter part_quantity 1
set_parameter multi_part_quantity a 1
set_parameter multi_part_quantity b 0
get_part
200 x=0.12345 y=0.11111 rz=0.99 p=a
get_part
200 x=0.67894 y=0.12341 rz=0.79 p=a

set_parameter part_quantity 1
set_parameter multi_part_quantity a 1
set_parameter multi_part_quantity b 1
get_part
200 x=0.12345 y=0.11111 rz=0.99 p=a x=0.42420 y=0.75311 rz=0.75 p=b
get_part
200 x=0.78951 y=0.96514 rz=0.42 p=a x=0.23554 y=0.14587 rz=0.51 p=b