Trigger Signal bei erreichen der Bahngeschwindigkeit

  • Hallo Zusammen ,


    gibt es eine Möglichkeit , beim Erreichen einer definierten v , also nach Beschleunigung auf v=const in der LIN Bewegung einen Trigger zu setzten ?


    Mir sind in diesem Zusammenhang nur die Befehle Trigger when Distance / Path bekannt....


    Danker im Vorraus für etwaige Lösungsansätze

  • Schritt für Schritt zum Roboterprofi!
  • 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

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden