Roboter deutlich verlangsamt, sobald externe Bewegungsgruppenanlaufen

  • Ich habe das Thema bereits in "mangelnde Bahntreue.." begonnen. Das hier behandelte RobotersSystem besteht aus einem R2000L175 und 2 zusätzlichen Bewegungsgruppen mit je einer linearen Achse, Steuerung R30iB.


    Die Linearachse 1 ist mit max. 600 mm/s und einer Bremsrampe von 1s, Linearachse 2 mit max. 250mm/s und einer Bremsrampe von 2s konfiguriert. Die Konfiguration ist konstruktiv bedingt und wurde mir so vorgegeben, ich ja nix kaputt machen, also halte ich dran.


    Sobald sich Roboter und zusätzliche Bewegungsgruppen gemeinsam bewegen, wird der Roboter zur Schnecke und bleibt es auch, wenn die Bewegung der Zusatzachsen beendet ist. Diese Achsen stehen in einer gemeinsamen Konstruktion dem Roboter im Abstand von knapp 3m gegenüber. Roboter und Zusatzachsen fahren wenige Punkte synchron miteinander.


    Zufällig fiel mir heute auf, dass der Roboter wieder mit Normalgeschwindigkeit fährt, wenn die Synchronbewegung durch Stopp angehalten wird, nachdem die Zusatzachsen ihre Bewegung beendet haben. Wird der Roboter wieder gestartet, ist seine Geschwindigkeit deutlich größer als vor dem Stopp.


    Ich habe die Robotergeschwindigkeit schon von 2000/s auf 600mm/s verringert, dann ist die Robotergeschwindigkeit nach Bewegungsende nicht mehr ganz so niedrig.


    Generell habe ich den Eindruck, dass die Anpassung der Gesamtgeschwindigkeit auf die der langsamsten Achse nur bedingt funktioniert. Mir kommt es so vor, als würde die Steuerung einen Schleppfehler erkennen und deshalb so reagieren. Eine Änderung des aktuellen Override hat in diesem Fall überhaupt keine Wirkung, nach dem absichtlichen Stopp dagegen schon.


    Hat jemand eine Idee, was das ist? Es gibt keine Fehlermeldung.


    Gruß
    PA

  • ANZEIGE
  • Moin,
    habe beide Posts verfolgt. Verstehe aber noch immer nicht genau, was Du letztenendes für eine Konfiguration benötigst. Das liegt aber wahrscheinlich daran, dass ich die Applikation nicht kenne.
    Wie sollen bzw. müssen denn die beiden Achsen überhaupt arbeiten. Der Palettenheber kann horizontal und vertikal verfahren? Ist der als eigene Gruppe angemeldet? Oder hast Du die als extendes Axis angemeldet?


    Kennst Du die "Asynchronous operation group instruction" bzw. "Synchronous operation group instruction"?


    Asynchronous operation group instruction
    The asynchronous operation group instruction controls operation groups asynchronously, with the operation
    formats, feedrates, and positioning formats specified separately for the individual operation groups.


    Synchronous operation group instruction
    The synchronous operation group instruction controls operation groups synchronously, with the operation
    formats specified separately for the individual operation groups.


      • Aswith ordinary operation instructions, the operation group having the longest travel time is thatwith which
        the other operation groups are synchronized. Thus, the feedrate is not always the same as that specified
        in the program.

      • The positioning format for an operation group with the smallest CNT value (closest to FINE) is also applied
        to the other operation groups.


    Evtl. hilft das schon. Wenn nicht, dann bitte mehr Details.


    Gruß
    Chris

  • Hallo Chris, hallo necris (er hat auf mein anderes Thema geantwortet),


    nach euren Hinweisen habe ich bei Fanuc angerufen. Dort hat man mir bestätigt, dass der Roboter die langsame Beschleunigungs- und Bremsrampe beibehält, wenn eine externe Bewegungsgruppe mal mitgefahren ist, das muss man so hinnehmen.


    Die Fanuc-Leute machen es wie von necris beschrieben, die externen Bewegungsgruppen werden mit Run mittels eines sep. Tp-Programms verfahren, dann ist die langsame Bremsrampe der externen Einheit ohne Einfluss auf den Roboter. Da die Linearachsen teilweise mit dem Roboter synchron laufen müssen, damit der Roboter nicht damit kollidiert, muss ich an einigen Punkten wissen, wann die externe Einheit eine Bewegung beendet hat. Gibt's da eine Variable, die mit TP oder Karel abgefragt werden kann?


    :danke:


    Gruß


    PA


  • Da die Linearachsen teilweise mit dem Roboter synchron laufen müssen, damit der Roboter nicht damit kollidiert, muss ich an einigen Punkten wissen, wann die externe Einheit eine Bewegung beendet hat. Gibt's da eine Variable, die mit TP oder Karel abgefragt werden kann?


    Hallo PA,


    hier würde ich den einfachsten Weg wählen. Du fährst die Punkte mit den externen Bewegungsgruppen einfach mit "FINE" an und danach setzt du ein Register. Dieses Register fragst du dann in deinem TP-Programm vom Roboter ab. Dadurch bist du sicher, das die externen Bewegungsgruppen die Bewegungen abgeschlossen haben.


    Gruß
    hermo

    Wenn bereits der Ansatz falsch ist, so führt strenge Logik unweigerlich zum falschen Ergebnis. Nur Unlogik gibt Dir jetzt noch die Chance, wenigstens zufällig richtig zu liegen.<br /><br />Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat´s gemacht.

  • Mir ist heute morgen aufgefallen, dass die Ursache für das merkwürdige Verhalten das Fahren des Roboters mit cnt ist. Die langsamste Bewegungsgruppe war noch im Abbremsvorgang, als der Roboter allein die folgenden Punkte anfuhr.


    Nachdem ich den letzten gemeinsamen Punkt mit Genauhalt programmiert hatte, war der Fehler weg.


    Gruß


    PA

  • Wenn Du einen Config-Start machst, also nicht warm, nicht kalt, sondern um in die Inbetriemnahme zu kommen, da findet sich irgendwo in der Roboterkonfiguration, ob sich die Roboter Geschwindigkeitstreu oder Bahntreu bewegen sollen.


    Hatte mal Multi-Move, also zwei Robbis jeweils auf 7. extrerner Achse mit gekoppeltem zwei achsigem Schweiss-Positionierer für Fünf-Tonnen Traktorkabinen programmiert.


    Schweis-Ende und Schweis-Start immer Fine und nicht independeant (indepandent-move hat man mehrzeihlige Bewegungsanweisung, so dass Roboter unterschiedliche Geschwindigkeiten schweissen oder sonstiges können und wird auch benötigt, wenn die Schweißnähte der Robbis unterschiedlich lang sind).


    Anfangs stand die Konfiguration auf Geschwindigkeitstreu doch auf Anraten eines Spezialisten von Fanuc, der extra von Neuhaus wegen eines anderen Problems und Update des Betriebssystems kam, stellte ich um, da er meinte, bei Schweissen ist Bahntreue wichtiger als Taktzeit.


    Bei der Einstellung Bahntreu fuhren die Roboter immer ihrer jeweils programmierten Bahn nach, weshalb sie wesentlich stärker überschliffen und plötzlich in die Vorrichtung krachten.
    Des weiteren kamen beide Roboter zu unterschiedlichen Zeitpunkten auf ihrer Startposition fürs nächste Schweissen an, insbesondere, wenn die Vorrichtung mitgedreht wurde.


    Bei der Einstellung Geschwindigkeitstreu kamen die Roboter wieder Zeitgleich auf ihren Startpositionen zusammen mit dem Positionierer an und es war alles wieder wie von mir gewünscht.


    Ergo: Möchtest Du Synchronität und Genauigkeit, dann verwende Geschwindigkeitstreu :supi:
    Bei der Einstellung

  • Ach ja, im übrigen richtet sich natürlich das Erreichen des Punktes immer nach der langsamsten Achse.


    Grundsätzlich gilt folgendes:
    Starte aus einem Hauptprogramm, welches nur Logik enthält ohne Bewegungsanweisungen und in dessen Programmeigenschaften KEINE Bewegungsgruppe aktiv ist.


    Springe von dort aus in ein Unterprogramm, welches nur die Bewegungsgruppen aktiv hat, welche für dieses Unterprogramm benötigt werden, also wenn nur der Robbi bewegt werden soll nur Bewegungsgruppe 1,0,0,0, nur der Palettanheber, dann 0,1,0,0, oder wenn beide dann 1,1,0,0.


    Beachte, Du kannst diese Programmeigenschaften nachträglich nur ändern, wenn das Programm keine Bewegungsanweisungen enthält (nur Offline könntest Du es durch eliminieren oder hinzufügen der jeweiligen Bewegungsgruppe in dem Programmkoordinaten ändern).


    Nur wenn Du dich daran hälst, kannst Du aus einem Hauptprogramm heraus die einelnen Bewegungs-Gruppen gemeinsam oder unabhängig (mittels runUPblabla1 und UPblabla2) arbeiten lassen, wobei Du bei fahrenlassen einer zweiten (oder x-ten) Bewegungsgruppe mittels Hintergrundtask (genau das macht der run-Befehl) die Kollisionszonen über Programm-Register oder setzen von Augängen oder wie auch immer miteinander (innerhalb der jeweiligen UPs zulässig) verriegeln tust, und auch sonst die jeweiligen Aufgaben logisch im Hauptprogramm bestimmst.


    Hähähä....und wenn Du ganz krass werden willst, dann kannst Du auch die komplette Anlage mittels der freilaufenden Background-SPS steuern :ylsuper: :ylsuper: :ylsuper:

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