Abbruchbedingungen Force Torque Control ; Kraft- Momentenregelung

  • Hallo zusammen,


    hat jemand eine Idee wie ich bei einer überlagerten Bewegung eine Abbruchbedingung realisieren kann? Diese sollte nach dem Prinzip funktionieren dass der Roboter sich in eine Richtung bewegt, ohne den Zielpunkt tatsächlich erreichen zu sollen. Es wird auf der Strecke in einer unbekannten Entfernung ein Hindernis auftauchen, an dem der Roboter stoppen sollte. Bei beispielsweise 10N in der Vorstoßachse. Anschließend sollte der Programmablauf automatisch weiterlaufen können.


    Mit dem FTCtrl-Tool zum Erstellen der Konfigurationsdateien scheinen ja nur Abbruchbedingungen für die sensorgeführte Bewegung definierbar zu sein. Und wenn man die Maximallast auf den gewünschten Wert setzt, erscheint bein Überschreitung natürlich eine Fehlermeldung und der Programmablauf kann nicht fortgesetzt werden.


    Wäre Klasse, wenn jemand eine Idee hätte ;)


    Gruß


    lazyloo

  • Schritt für Schritt zum Roboterprofi!

  • was stellt diese Variable genau dar? Handelt es sich um eine Variable der ForceTorqueControl?


    Guten Morgen,


    im Prinzip ja, es ist die gleiche Variable die auch ForceTorqueControle verwendet.


    Hier ein kleiner abschnitt aus dem Handbuch:


    Beim Programmlauf werden automatisch die Werte von
    $TORQ_DIFF (Kraftmoment) und $TORQ_DIFF2 (Stoßmoment)
    ermittelt. Diese werden mit den Werten aus dem vorigen Programmlauf
    oder mit Default-Werten verglichen. Der größte Wert
    wird gespeichert. Die Werte werden immer ermittelt, auch wenn
    die Kollisionserkennung deaktiviert ist.
    Wenn die Kollisionserkennung aktiv ist, vergleicht das System
    während der Bewegung die Werte von $TORQ_DIFF und
    $TORQ_DIFF2 mit den gespeicherten Werten.[/font][/font][/font]

  • Also du kannst die Abbruchbedingungen schon so setzen wie
    du möchtest. Zb auf die von dir gewünschten 10N oder auf eine gewünschte Zeit.
    Wenn dann das FTCL abbricht musst du den Returnwert auswerten und entsprechend von dir gewünscht weitermachen.
    etwa so:
    SWITCH FTCTRLBREAK
    CASE #FTCMAXTIME
    ...
    CASE #FTCMAXDIST
    ...
    CASE #FTCTIME
    ...

  • Danke für die Antworten! Habe gerade den letzten Vorschlag mit der Analyse der Abbruchursache ausprobiert. So wie es aussieht gilt diese leider nur für die sensorgeführte, jedoch nicht für die überlagerte Bewegung :-| . Auch in der Dokumentation steht "Wert für die Abbruchursache der sensorgeführten Bewegung".


    Hier ein Auszug aus dem Programm:


    13 FTCtrlOnCP()
    14
    15
    16
    17 LIN P4 Vel=0.01 m/s CPDAT2 Tool[1] Base[0]
    18 FTCtrlOffCP()
    19
    20 SWITCH FTCTRLBREAK
    21 CASE #FTCSENOVERLOAD
    22
    23
    24 FTCtrlMonitorStop()
    25 LIN P7 Vel=0.3 m/s CPDAT5 Tool[1] Base[0]
    26 LIN P8 Vel=0.3 m/s CPDAT6 Tool[1] Base[0]
    27 PTP HOME Vel= 100 % DEFAULT
    28
    29
    30 ENDSWITCH


    Wenn also die Regelung während der Linearbewegung in Zeile 17 aufgrund Überschreitung der Maximallast (Fehlermeldung "sensoroverload") abbricht, bleibt der Ablauf in Zeile 17 hängen und hat gar keine Möglichkeit in die Zeile 20 zu kommen, um die Abbruchursache auszuwerten.


    Hat jemand dazu noch eine Möglichkeit im Kopf? :hilfe: (Bevor ich mich mit Vorschlag 1 auseinandersetze)

  • Hatte das selbe Problem, hab dann im Bewegungssrc folgendes eingefügt:


    Code
    fRelFrame = $NULLFRAME
    	fRelFrame.Z = -150.0
    	Movesettings(0,gnTool,0,25,2)  ; (Base,Tool,0,Acc,Vel)
    	bTCS = TRUE
    
    
    ;FOLD FTCtrlOnBreak();%{PE}%MKUKATPUSER
    FTCtrlErr=ST_FTCTRL_ONBREAK_IF()
    ;ENDFOLD



    Wenn bTCS True ist, wird im ToolCoordinatensystem gefahren, ansonsten in Base.
    das wird nur gebraucht, weil ich nicht herausgefunden habe, wie man den Parameter #Tool an eine Lin_Rel-Bewegung übergibt.

    Das TP wurde auch noch verändert, und jetzt funzt es so wie ich möchte:


  • Im R1 Verzeichnis gibts nen Ordner TP.
    dort sollte die RSILIB.SRC sein - und da kann man auch Änderungen durchführen.


    Diese sollten aber deutlich Dokumentiert werden, damit Nachfolgende Programmierer nicht verzweifeln!!!


    Deswegen hab ich das mit dem bTCP gemacht, das für andere die Funktion gleich bleibt.

  • Ich bin gerade damit beschäftigt das hier in Programm und Steuerung einzubauen ;). Noch eine Frage : Was ist Movesettings für eine Unterfunktion? Hast Du Dir da selber was entwickelt?

  • 1 DEF eckentest( )
    2
    3 DECL BOOL bTCS
    4
    5
    6 INI
    7
    8 PTP HOME Vel= 100 % DEFAULT
    9
    10 PTP P2 Vel=80 % PDAT2 Tool[1] Base[0]
    11 LIN P3 Vel=0.3 m/s CPDAT1 Tool[1] Base[0]
    12 FTCtrlInit(eckentest,ATIAI)
    13 FTCtrlCalibSens(0.5)
    14 FTCtrlMonitorInit(192.0.1.2,6000,2,FTSENS)
    15 fRelFrame = $NULLFRAME
    16 fRelFrame.X = -500
    17 Movesettings (0,Tool[1],0,25,0.01)
    18 bTCS = TRUE
    19 FTCtrlMonitorStart()
    20 FTCtrlOnBreak()
    21
    22 FTCtrlMonitorStop()
    23 LIN P7 Vel=0.3 m/s CPDAT5 Tool[1] Base[0]
    24 LIN P8 Vel=0.3 m/s CPDAT6 Tool[1] Base[0]
    25 PTP HOME Vel= 100 % DEFAULT
    26
    27
    28
    29
    30 END


    Ich habe nun das Problem dass die Robotersteuerung ohne Reaktion über die Anweisungen in den Zeilen 15-18 hinweggeht:-/

    Einmal editiert, zuletzt von lazyloo ()

  • Schmeiss das Movesetting raus!


    Setzte deine Base / Tool und Geschwindigkeit, Beschleunigung mit:


    PDAT = {VEL 100.0,ACC 100.0,APO_DIST 100.0}
    FDAT = {TOOL_NO 0,BASE_NO 0,....


    PDAT_ACT = Deine PDAT
    FDAT_ACT = Deine FDAT


    Die Änderung in der RSILIB musst Du natürlich auch machen, wenn Du meinen Weg gehen möchtest.
    Diese ist Schreibgeschützt, vielleicht sind die Änderungen nicht übernommen worden.


    bTCS muss nur dann True sein, wenn du im Toolkoordinatensystem fahren möchtest,
    False, wenn du im Basesystem arbeitest.

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