Abend Benjamin,
mit einem Trigger kann mann Bahnbezogen schalten > Am Anfang oder Ende einer Bewegung (Trigger when Distance)
> Das Ende bzw den Anfang kann um eine Zeit x Verschoben werden (Delay-Wert)
> und zuletzt noch mm vor Endpunkt (Trigger when Path)
Also nicht für deine Anwendung geignet, außer du weist wann der Robi die Geschwindigkeit erreicht hat (mm oder ms nach Start der Bewegung).
Wenn dann könnte es vieleicht mit nem Interupt funktionieren oder ein Sup-Programmm. Wobei dann noch eine Verzögerung durch die Zykluszeit
auftreten könnte, bis der Robi wirklich schaltet.
Eine wichtige Variable für dich dürfte "$Vel_act" sein, diese zeigt die aktuelle geschwindigkeit des TCP bei LIN und CIR Bewegungen an.
Hier mal nen Bsp. für ein Interupt (Kann ich zur zeit aber nicht testen, da ich grad kein freien Robi hab):
DEF velActblabla()
INI-Zeile
;Start Hauptprogramm
:
:
:
;Interrupt für Suchfahrt deaklarieren
INTERRUPT DECL 21 WHEN $VEL_ACT==1.5 DO UpIrgendwas()
:
:
:
;Interrupt einschalten
INTERRUPT ON 21
;Zu ueberwachende Bewegung
$VEL.CP=1.8
CONTINUE
LIN XPunktschnell
;Interrupt ausschalten falls er nicht auslösen konnte,
;und somit das UP nicht abgearbeitet wurde.
;
INTERRUPT OFF 21
END ;Ende Hauptprogramm velActblabla()
DEF UpIrgendwas()
;Interrupt ausschalten
;
INTERRUPT OFF 21
;Ein bzw Ausgangang schalten den du magst
;Oder was auch immer
END
Ein Sub Programm könnte dann vieleich so aussehen (Zykluszeit beachten!):
;Die Geschwindigkeitsueberwachung wird gestartet, wenn im Haupt-Programm
;die Variable "start_geschw " auf TRUE gesetzt wird.
;
IF (start_geschw == TRUE) AND ($Vel_act >= 1.5) THEN
$OUT[121] = TRUE ; Ausgang setzen
start_geschw ; Ueberwachung wiederdeaktivieren
ENDIF
Und dann hab ich dir mal was aus der Doku ausgeschnitten und nen bissl bearbeitet.
Auf den Bildern sind die Anweisungen Trigger when Distance und Path beschrieben.
Wenns funktioniert kannst es ja posten wär mal intressant, denn wie schon gesagt,
hab das alles offline geschrieben ohne möglichkeit dies testen zu können. Ich denk
mal am einfachsten sollte das mit dem Sub-Programm sein.
Gruß Toud