Bahnänderung durch Interrupt?

  • Hallo


    gibt es eine Möglichkeit den Zielpunkt der Bahn zu ändern wenn ein Interrupt auslöst ohne den Roboter mit Brake an zu halten und ihn dann zum veränderten Punkt fahren zu lassen?


    Sinn des ganzen: Eine Suchfahrt nach Behältern mittels Laser der allerdings absichtlich 50mm früher schaltet und somit noch ein Weg von 50mm ab der Interrupt Position zu fahren ist. Es sieht einfach blöd aus wenn der Roboter so kurz vor dem Ziel erstmal stoppt.


    mfg Eistee

  • Schritt für Schritt zum Roboterprofi!
  • Hallo.


    Eine bereits geplante Position zu ändern, geht glaub i nicht. Sie wurde ja schon in die Bahnplanung aufgenommen.
    Du kannst aber deine Suchfahrt von einer lange fahrt in viele kleine abändern und dann beim Eintreten des Interrupts deine Bewegung zum Zielpunkt der Suchfahrt verlassen.

  • Versuchs mal so:


    ;Interruptprogramm
    DEF IntSuch( ) ;Teil erkannt
    INTERRUPT OFF 11 ;Interrupt 11 ausschalten ;
    BRAKE ;oder brake f wenn nicht viel Platz ist
    POSmerk=$POS_INT ;Position speichern um später von da zu rechnen oder weiter zu fahren
    WAIT SEC 0 ;nur vorsichtshalber
    RESUME
    END


    ;Ablaufprogramm
    INTERRUPT DECL 11 WHEN $MEAS_PULSE[1]==true DO IntSuch( )
    INTERRUPT ON 11 ;Interrupt 11 aktivieren
    $ADVANCE=0 ;damit der Vorlauf nicht sonst wohin rennt
    LIN Zielpos ;Fahre ans Ende der Meßfahrt - waehrend dieser Bewegung erfolgt der IRQ und die Bewegung wird abgebrochen
    INTERRUPT OFF 11 ;Interrupt 11 ausschalten
    ;Roboter steht jetzt annaehernd auf der Position, an der Dein Sensor ausgeloest hat und kann jetzt zu einer beliebigen Position fahren


    Evtl. mußt Du Dir noch was basteln für den Fall, dass nix gefunden wurde.


    Gruß
    Stromer

  • Soll die Suchrichtung beibehalten werden und lediglich die Geschwindigkeit reduziert werden dann kannst Du $OV_PRO im Interruptprogramm auf 10% reduzieren.
    Merke Dir den alten Wert z.B. OV_PRO_ALT = $OV_PRO, damit Du ihn später wieder zurückschreiben kannst.

  • jetzt hab ichs verstanden...


    nein, sowas geht nicht.


    bereits geplante Bahnen können nicht einfach geändert werden. schon garnicht ohne anhalten. bei keinem mir bekannten roboter

  • stromer Vollkommen richtig!
    Stethi Das ist mir schon klar


    Wenn er den Endpunkt auf eine Position auf der Bahn korrigieren will dann geht's doch.


    z.B.


    DECL INT... 10 Do Int10()...
    DECL INT... 11 WHEN $CYCFLAG[11] Do Int10()...
    $CYCFLAG[11] = ABS(mPOSAct.Z - $POS_ACT.Z) > 50


    IstPos ist {X 0.0, Y 0.0 Z 1000.0 ,....}
    SuchPos = {X 0.0, Y 0.0 Z 200.0 ,....}
    Interrupt ON 10 (der mit den 50 mm Schaltabstand)
    Interrupt ON 11 (der mit den 50 mm Schaltabstand)
    DEF UP_SUCH()
    Lin SuchPos
    END


    DEF Int10()
    Overridereduzierung
    mPosAct = $POS_ACT
    END


    DEF Int11()
    Bewegungsstop
    END

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