Externe Achsen asyncron schalten

  • Hallo zusammen
    Ich hab mal wieder ein Problem! :hilfe:
    Kurze Beschreibung:
    Wir haben ein Gießroboter KR60 und ist mit zwei Gießlöffel ausgestattet.
    Der Roboter kann mit dem linken Gießlöffel gießen sowie auch nur mit dem rechten.
    Soweit noch kein Problem.
    Aber, wenn ich mit beiden Gießlöffel gießen möchte, obwohl ich jeweils eine unterschiedliche Geschwindigkeit eingebe, bewegen sich die Gießlöffel Synchron. :kopfkratz:
    Frage, wie kann ich die Gießlöffel unabhängig schnell von einander bewegen?
    Was muss ich tun?
    Wo muss ich was tun?


    Ich hoffe ihr könnt mir weiter helfen :danke:

  • Schritt für Schritt zum Roboterprofi!
  • Hallo, bora,


    im Roboterprogramm 2 externe Achsen vorübergehend asynchron schalten mit: $async_axis='B0011'',
    wieder synchron schalten mit: $async_axis='B0000''.


    Die externen Achsen lassen sich dann verfahren mit dem Befehl: asyptp <Position>, es werden nur die Angaben für E1 u. E2 ausgewertet, auch wenn X, Y, Z ... in der Position enthalten sind.


    Voraussetzung ist, dass der Roboter mit einem Single-Brake-Modul (Einzelbremsenansteuerung) ausgestattet ist. Ich wollte vor Jahren auch mal mit asynchronen Achsen verfahren, nach wenigen cm des Wegs der externen Achse hat's ordentlich gequietscht, weil wir bei der Bestellung kein Single-Brake-Modul angefordert haben. Also verzichten wir auf den Asynchron-Modus.


    Gruß


    PA

  • :danke: erstmal für deine Unterstützung ich werde es ausprobieren :)


    Wie erkenne ich ob wir die singel Brake Modul haben ? :kopfkratz:

  • Single Brake Modul erkennt man an den KSD-Modulen. Da ist,wo sonst ne Abdeckung oden drauf ist, ein kleines Modul aufgesteckt.Dazu sind noch Kabel an dem Modul.


    @Bora: Was hat das SingeBrakeModul mit dem asynchronschalten der Zusatzachsen zu tun??? Ich hab schon beide Fälle programmiert, es geht also auch ohne!! Berichtige mich, wenn ich falsch liege...

  • Hallo zusammen :danke: dass ihr mich in dieser Sache unterstützt
    finde ich :supi:


    Super währe auch das wenn man die Gießschritte relative programmieren könnte, so sieht es momentan aus:
    (synchron) E1 immer 10 - E2 immer 10 weiter
    Startposition E1=70 - E2=70


    $vel_extax[1]=velounoe1
    $vel_extax[2]=velounoe2
    ptp_rel {e1 + 10, e2 + 10, Y + 2, Z -6, X +1} C_PTP ;Gießschritt 1


    $vel_extax[1]=veloduee1
    $vel_extax[2]=veloduee2
    ptp_rel {e1 + 10, e2 + 10, Y + 1, Z -6, X +1} C_PTP ;Gießschritt 2


    $vel_extax[1]=velotree1
    $vel_extax[2]=velotree2
    ptp_rel {e1 + 10, e2 + 10, Y + 3, Z -6, X +1} C_PTP ;Gießschritt 3


    $vel_extax[1]=veloquattroe1
    $vel_extax[2]=veloquattroe2
    ptp_rel {e1 + 10, e2 + 10, Y + 3, Z -6, X +1} C_PTP ;Gießschritt 4


    $vel_extax[1]=velocinquee1
    $vel_extax[2]=velocinquee2
    ptp_rel {e1 + 10, e2 + 10, Y + 3, Z -7, X +1} C_PTP ;Gießschritt 5


    $vel_extax[1]=veloseie1
    $vel_extax[2]=veloseie2
    ptp_rel {e1 + 10, e2 + 10, Y + 3, Z -7, X +2} C_PTP ;Gießschritt 6


    $vel_extax[1]=velosettee1
    $vel_extax[2]=velosettee2
    ptp_rel {e1 + 10, e2 + 10, Y + 4, Z -8, X +2} C_PTP ;Gießschritt 7


    Ich habe in der Mada>option>$ASYNC_OPT=True gesetzt und das Programm so geändert:
    Startposition E1=70 - E2=70


    $ASYNC_AXIS='B0011'
    $vel_extax[1]=velounoe1
    $vel_extax[2]=velounoe2
    ASYptp {e1 + 60, e2 + 60, Y + 2, Z -6, X +1} C_PTP ;Gießschritt 1


    $vel_extax[1]=veloduee1
    $vel_extax[2]=veloduee2
    ASYptp {e1 + 50, e2 + 50, Y + 1, Z -6, X +1} C_PTP ;Gießschritt 2


    $vel_extax[1]=velotree1
    $vel_extax[2]=velotree2
    ASYptp {e1 + 40, e2 + 40, Y + 3, Z -6, X +1} C_PTP ;Gießschritt 3



    $ASYNC_AXIS='B0000'


    Beim Ablaufen ist 1 Fehler aufgetreten:
    1. Fehler ist zu viele ASYptp-Befehle (max 3) also habe ich mal nur die ersten drei Schritte genommen,dann
    springt er auf die Zeile $ASYNC_AXIS='B0000'
    So sieht man den asynchronen unterschied kaum:
    ASYptp {e1 + 60, e2 + 60, Y + 2, Z -6, X +1} C_PTP ;Gießschritt 1
    ASYptp {e1 + 50, e2 + 50, Y + 1, Z -6, X +1} C_PTP ;Gießschritt 2
    ASYptp {e1 + 40, e2 + 40, Y + 3, Z -6, X +1} C_PTP ;Gießschritt 3


    Aber, wenn man die Werte ändert:


    ASYptp {e1 + 10, e2 + 10, Y + 2, Z -6, X +1} C_PTP ;Gießschritt 1
    Ist der Unterschied deutlich.
    Blos ich habe die 7 Gießschritte somit verloren. :???:


    Bedeutet das ich die 7 Schritte vergessen kann und mit den 3 Schritten leben muß ? oder gibt es eine neue :gutidee:
    Frage kann man die 7 Gießschritte auch relative programmieren ? :kopfkratz:


    Im voraus :danke:

  • Hallo Leute
    was mir inzwischen aufgefallen ist, dass die Gießlöffel zusammen den Punkt beenden
    und nicht wie gewünscht zuerst der eine und dann der andere.
    dann ist ja die programmierte Geschw. nicht echtzeit oder? :?:


    Wünsche euch noch einen schönen Tag

  • Hallo, bora, da ich mehrere Tage auf Geschäftsreise war, konnte ich bisher nicht antworten, tut mir leid. Nach meinen Unterlagen beginnt und endet die Asynchronfahrt der externen Achsen gleichzeitig. Das hatte ich bisher übersehen. Da man im Asynchronmodus tatsächlich auch nur maximal 3 Fahrsätze hintereinander legen kann und, wenn noch weitere Asynchronsätze folgen sollen, mit einer Abfrage wie
    WHILE $async_state=='BUSY
    ENDWHILE
    warten muss, bis die ersten Fahrbefehle abgearbeitet sind (bzw. 1 Fahrbefehl müsste abgearbeitet sein, bevor wieder ein neuer Fahrbefehl nachgeschickt werden kann), wäre zu überlegen, ohne Asynchronmodus den Roboter abwechselnd mit einem Löffel zusammen zu bewegen. Ginge das?


    Gruß


    PA

  • Stethi,


    die Information mit dem Single-Brake-Modul habe ich vor gut 3 Jahren von KUKA aufgrund des von mir geschilderten Problems (2 externe Achsen zusammen asynchron verfahren) in diesem Betreff weiter oben schriftlich bekommen (damaliger SW-Stand war 4.1 auf KRC2). Bora kann für diese ggf. fehlerhafte Information nix. Vielleicht hat KUKA inzwischen was unternommen.


    Gruß


    PA

  • Also ohne Asyncronmodus verstehe ich das so:


    $vel_extax[1]=velounoe1
    ptp_rel {e1 + 10, Y + 2, Z -6, X +1} C_PTP ;angolo 1


    $vel_extax[2]=velounoe2
    ptp_rel {e2 + 10, Y + 2, Z -6, X +1} C_PTP ;angolo 1


    Somit bekomme ich einen kleinen Stop während die Gießlöffel drehen und das gibt keine schöne Gießkurve

  • Hallo, bora,


    im Prinzip wäre das so, wie von Dir beschrieben. Um einen flüssigen Lauf hinzukriegen, könnte man den Roboter nicht mit nur einem Löffel den 1. Punkt anfahren lassen und vom 2. bis 6. Punkt (beispielsweise) den Roboter mit beiden Löffeln, den 7. Punkt mit Roboter und nur dem 2. Löffel? Wäre wg. der von Dir geforderten unterschiedlichen Löffelgeschwindigkeiten nicht einfach, aber im Asynchronmodus kriegt man das wegen der nur 3 erlaubten aufeinanderfolgen Asynchronbewegungen noch schlechter hin. Wenn der Roboter sich bei aufeinanderfolgenden Bewegungen gar nicht bewegen muss, kann man das in der Bewegungsstruktur ja auch weglassen:


    Vielleicht fällt eine Hilfestellung incl. des Weglassens unmöglicher Ideen leichter, wenn Du die Aufgabenstellung kurz beschreibst. In Deiner 1. Frage beschreibst Du, dass abwechselnd 1 von 2 Löffeln bewegt wird, jetzt sind es immer beide??? :nocheck:


    Gruß


    PA

  • Sorry das es für die Antwort solange gedauert hat, war im Urlaub. :lol:
    Sorry auch für den Missverständnis
    Also, die Löffel sollen gemeinsam, aber mit verschiedener Geschwindigkeiten gedreht werden.
    d.h. dass auch wenn einer von den beiden Löffel schon die Kurve beendet hat und somit sich im letzten Punkt befindet, soll der eine Löffel solange warten bis der andere nach rückt.(Dann fährt erst der Robi weg)
    das Asynchron fahren war toll, aber die Löffel passten die Geschwindigkeit aneinander an, als der Punkt zu Ende führt.
    Und somit beendeten die Löffel den Punkt gemeinsam.
    Im Prinzip sollen die Löffel, unabhängig von einander drehen (Gradzahl) und sich unabhängig schnell drehen lassen (Geschwindigkeit).
    Es interessiert momentan nur E1,E2


    Danke nochmals für die Mühe (PA), aber natürlich auch an den anderen :supi:
    Gruß Bora

  • Hallo, Bora,


    ich habe noch mal meine Unterlagen zum Thema durchwühlt, finde aber leider keine andere Lösung als die bereits kommunizierten. Wenn man die externen Achsen in ihrer Gewschwindigkeit unabhängig voneinander bewegen will, müsste man in jedem asyptp-Befehl nur jeweils 1 Achse asynchron bewegen. Da aber nur 3 aufeinanderfolgende Befehle erlaubt sind, hat man wg. der oben besprochenen Abfragen immer Stopper in der Löffelbewegung, selbst dann, wenn man die Löffel in der SPS.SUB programmiert (wäre nur nötig, wenn der Roboter sich parallel zu den Löffeln kontinuierlich bewegen soll).


    Meines Erachtens kann man die Löffel nicht als externe Achsen laufen lassen, sondern müsste sie parallel mit einer anderen Steuerung (KUKA hat auch eine Soft-SPS, die kenne ich aber nicht) laufen lassen und über Handshakes mit dem Roboter handeln. Mehr fällt mir dazu leider auch nicht ein. Die Abtrennung der Löffel als externe Achsen ist jetzt wahrscheinlich nicht mehr möglich, oder?


    Gruß


    PA

  • Hallo
    Abtrennung der Löffel als externe Achsen ist nur mit großem Aufwand und still Zeit der Maschine verbunden.
    Das hören die Chefs nicht gerne.
    Danke trotzdem
    Das Forum ist spitze :supi:

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