Momentenbetrieb - Verhindern von Rückpositionierung

  • Hallo zusammen,
    ich würde gerrne folgendes realisieren:
    Bei einer sensorgeführten Applikation bricht die RSI-Schnittstelle zusammen. Der Roboter muss nu aus dem Gefahrenbereich herausgefahren werden, da sich das Werkstück bewegt (undefiniert). Deshalb schalte ich in den Momentenbetrieb, damit das Werkstück den Roboter im Kollisionsfall wegdrücken kann. Dann ist aber ja so dass der Roboter seine berechnete Bahn halten will und sobald die wirkende Kraft wieder weg ist, bewegt sich der Roboter wieder auf seine alte Bahn. Das möchte ich aber nicht, da es passieren kann, dass das Werkstück den gleichen Weg noch einmal macht und dann evtl. wieder gegen den Roboter fährt. Deshalb soll die Bahn, nachdem das Wekstück weg ist, von dem aktuellen Punkt neu berechnet werden. Hatte mir dazu folgenes überlegt, weiß aber nicht welche Systemvariablen bzw. Bedingungen ich dafür nutzen kann:


    auszug Hauptprogramm:
    Interrupt Decl 20 WHEN NOT $NEAR_POSRET DO UP_20 ;dieser Interrupt soll ausgeführt werden, wenn der Roboter weggedrückt wird
    Interrupt Decl 10 WHEN xxxx DO UP_10() ;dieser Interrupt soll ausgeführt werden, wenn nicht mehr gedrückt wird


    Interrupt on 20
    b_pos_erreicht = false
    repeat
    $ov_pro = 100
    TRIGGER WHEN DISTANCE=0 DELAY=0 DO b_pos_erreicht = TRUE
    ptp xhome
    until b_pos_erreicht
    interrupt off 10
    interrupt off 20



    Interruptroutine 1:
    UP_20 ()
    interrupt off 20
    interrupt on 10
    $ov_pro = 0
    lin_rel {z 1}
    end


    Interruptroutine 2
    UP_10()
    interrupt off 10
    interrupt on 20
    $ov_pro = 100
    resume
    end


    nochmal zum Verständnis:
    Der Roboter soll in Home fahren. Wenn während dieser Fahrt eine Kraft auf den Roboter ausgeübt wird, schalte ich die Geschwindigkeit auf null, damit der Roboter nicht dagegenhält. Wenn die Kraft nicht mehr wirkt schaltet der interrupt 10, die Geschwindigkeit wird wieder hochgesetzt und über resume zurück ist Hauptprogramm gesprungen. Wenn die Homeposition noch nicht erreicht ist (NOT b_pos_erreicht) soll die Schleife weiterlaufen und der Roboter von der aktuellen Position eine Bahn zur Homeposition berechnen und abfahren.


    ich hoffe es ist einigermaßen klar geworden!?!
    Gibt es eine Variable die mir im Momentenbetrieb mitteilt ob eine äußere Kraft auf den Roboter wirkt, bzw. nicht wirkt?


    danke schonmal und wenn etwas unklar ist versuche ich die Beschreibung besser hinzukriegen :angel:


    gruß, buschke

  • Schritt für Schritt zum Roboterprofi!
  • Hi Buschke


    Was hällst du von


    1. ptp $Pos_act ;<-SAK setzen neuer Startpunkt
    2. Lin_rel{z-1} ;Durck wegnehmen
    3. Lin_rel{z-200} ;Freifahren
    4. PTP HomeX ;ab nach hause


    Ich hoffe du kannst damit was anfangen!?!?!?


    Schönen Feierabend
    Gruß
    Sebbi

  • Hi,
    ich bin zwar eher ein ABBler aber ist es nicht möglich das du im interrupt 20 erst die Geschwindigkeit runter setzt und dann in einer schleife z.B. alle 500 ms prüfst ob sich $Pos_act verändert hat. Wenn ja dann wird der Robi noch vom Bauteil weggeschoben, wenn nein kannst du ja so fortfahren wie sebbi es schon geschrieben hat.


    Gruß Z

  • aus unseren Erfahrungen kannst du dich auf $pos_act im Momentenbetrieb nicht mehr verlassen. Evtl. ist dies dann bei $near_posret ähnlich.
    Wenn du prüfen möchtest, ob sich im Momentenbetrieb die Position ändert,
    dann musst du selbst über die Encoder Inkremente und Getriebeübersetzunge,...
    die aktuelle Achsposition selbst prüfen und überwachen bzw. könntest du einfach nur die Encoderwerde betrachten und schauen ob sie sich ändern(mit gewisser Bandbreite natürlich).

  • Danke schön an euch :gutidee: werde das mal so ausprobieren.
    Noch ne andere Frage: Hat es irgendwelche Nachteile wenn ich die ganze Zeit die Momentenüberwachung ausschalte (also $Torque_axis = 'B111111', Curr_red[] für alle auf 100 lassen). Kann ich Torq_diff dann noch auswerten?
    Der Roboter darf bei Überlast auf gar keinen Fall stehen bleiben, sondern sollte sich wegdrücken lassen. Würde dann Torq-diff im submit überwachen und bei überschreitung den Rückzug einleiten.

  • wenn du den Momentenbetrieb ausschaltest, wirst du wahrscheinlich nicht glücklich werden.
    Bis du die Ströme abgefangen hast du einen Interrupt anwirfst, wird die KRC schon auf Stop sein


  • Bis du die Ströme abgefangen hast du einen Interrupt anwirfst, wird die KRC schon auf Stop sein


    Kommt drauf an... in vielen historischen und auch einigen neueren Anlagen habe ich das so gemacht. Interrupt auf den Achsstrom und dann mit einer Bewegung reagieren. Geht, wenn man nicht zu schnell unterwegs ist.


    Grüße,
    Michael

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