Ein Distanz-Sensor am Roboter soll wiederholt während einer Bahnbewegung ausgelesen werden, jeweils in gleichem Abstand.
Der aktuelle Sensor-Wert soll dann zusammen mit der Position gespeichert werden
Kann ich irgendwie einen Trigger oder Interrupt anlegen, der immer wieder nach je 1 mm ausgelöst wird?
Also ich könnte z.b. tausend Trigger anlegen, nach diesem schema
TRIGGER WHEN PATH = 1.0 ONSTART TIME=0 DO Measure() PRIO -1
TRIGGER WHEN PATH = 2.0 ONSTART TIME=0 DO Measure() PRIO -1
TRIGGER WHEN PATH = 3.0 ONSTART TIME=0 DO Measure() PRIO -1
...
SLIN_REL {X = 1000}
Aber wenn ich richtig verstehe, gibt es ein Limit von 16 Triggern, minus anderer aktiver Interrupts
Also müsste ich die Bewegung in zig kleine Abschnitte zerstückeln, aber dann gibt es doch wieder Probleme mit dem Überschleifen?
Oder gibts da eine bessere Methode, um den Trigger wiederholt alle 1 mm auszulösen
-----
Um es noch etwas komplizierter zu machen: angenommen ich mache keine Linear-Bewegung, sondern eine Schwenk-Bewegung.
SLIN_REL {B = 10°}
Eigentlich will ich dann einen Trigger alle 0.1°, dann hat sich der Laser des Abstands-Sensors auf dem Bauteil ca. 1 mm bewegt.
Aber der Trigger lässt sich nur bei Verschiebung des TCP setzen, nicht bei Drehungen.
Ich könnte den im Roboter aktiven Tool-TCP für diese Bewegung auf einen virtuellen Punkt entlang des Lasers zu setzen, und dann eine SCIRC Bewegung, erscheint mir aber etwas riskant.
-----
Innerhalb von Measure(), kann ich dann den aktuellen Wert $ANIN[1] zusammen mit der Position beim Auslösen des Interrupts $POS_INT abspeichern, oder gibt es da noch weitere Probleme, sowas wie "$ANIN wird im Vorlauf ausgelesen aber POS_INT im Hauptlauf"?