Ruckbegrenzung unabhängig vom POV / OV_PRO steuern

  • Hallo!
    Mein Name ist Rainer, bin Student im Praktikum und programmiere seit vier Wochen einen KUKA Roboter mit KR C4 Steuerung.
    Ich habe ein Programm geschrieben, dass ein rotationssymmetrisches, konisches Werkstück mit parabelförmiger Oberfläche beschichten soll. Das Werkstück dreht sich mittels eines Dreh-Kipptisches.


    Das Problem ist die Spitze des Werkstücks. Die Düse beschleunigt nicht schnell genug im letzten Stück. Das liegt an dem OV_PRO den ich durch eine Funktion vorgebe (habe den aktuellen JERK ausgelesen).


    Meine Frage ist nun ob es eine Möglichkeit gibt den Ruck innerhalb eines Splines zu ändern, ohne dass dieser von meinem OV_PRO zurück geregelt wird.


    Vielen Dank für die Mühe und bis bald, Rainer!

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


    das geht leider nicht, da der Override zum Bewegungsausführungszeitpunkt wirkt, während der Ruck bereits von der Bewegungsplanung eingerechnet wird. Ich weis nicht mehr wer, aber irgendjemand hat hier mal den schönen Vergleich angestellt, dass der Override sowas ist wie der Lautstärkeregler an einerStereoanlage. Wird ein Lied abgespielt ist es bereits vollständig inklusive aller Lautstärken in Relation zueinander fertig aufgenommen (geplant) und durch das Abspielen (Ausführung) kann nur noch das ganze komplett skaliert werden.


    Fubini

  • Erst einmal Danke an Fubini für deine schnelle Antwort!
    Hast du eine Idee wie ich es anders regeln könnte?



    Grubba
    Wenn ich über die Geschwindigkeit in den einzelnen Splinepunkten regeln möchte, brauche ich für jeden Punkt die passende Geschwindigkeit zum jeweiligen Radius.
    Habe ich auch erst so gemacht. Große Tabelle erstellt und für jeden Radius die jeweilige Geschwindigkeit ermittelt.
    Damit passt das Programm aber nur genau auf dieses Werkstück. Mit dem Programm möchte ich aber erreichen, das unterschiedliche große Werkstücke beschichtet werden können. Man soll nur jedes Mal den Spline ­teachen müssen, die gewünschte Oberflächengeschwindigkeit angeben und den Abstand der Bahnen.


    Das waren meine Gedanken dabei. Aber ich bin erst vier Wochen dabei. Habe also nicht wirklich viel Ahnung von Roboterprogrammierung!

  • Ich habs nicht ausprobiert, ob die Geschwindigkeitsangabe per Variable übergeben werden darf:
    Dann könnte es so gehen:


    Code
    spl Punkt A with $Vel = Vel[1]
    spl Punkt B with $Vel = Vel[2]
    spl Punkt C with $Vel = Vel[3]


    Die Geschwindigkeiten könnte man dann vorher berechnen.

  • Entschuldigt bitte die späte Antwort! Es war einfach so viel zu tun.


    Grubba


    Die Idee mit den Geschwindigkeiten habe ich bereits umgesetzt gehabt. Problem war, dass die Düse irgendwann nicht mehr schnell genug beschleunigte und die Bahnen immer enger wurden da das Werkstück sich immer schneller drehte.
    Die Beschleunigung der Düse wird aber vom OV_PRO ausgebremst.

  • Ich möchte mich erst mal dafür entschuldigen, dass ich mich möglicherweise schlecht ausdrücke. Fällt mir noch schwer bei diesem Thema.


    Ich habe mir eine Tabelle angelegt in der für die jeweiligen Radien die entsprechenden Soll-Geschwindigkeiten ausgerechnet werden.


    Die gebe ich dann für die einzelnen Spline-Punkte an.


    An der Spitze des Bauteils kommt es dann aber zu großen Geschwindigkeitsveränderungen aufgrund der Parabellform. Auf wenigen Millimetern um ein Vielfaches.


    Und da liegt das Problem. Er beschleunigt nicht schnell genug auf die geforderte Geschwindigkeit.
    Müsste er aber können.
    Deshalb gehe ich davon aus, dass der OV ihn dort ausbremmst.

  • Aha.


    Wenn du jetzt den Override auf 100% setzt, und die Geschwindigkeit im Spline vorgibst (ohne OVR-Änderung), beschleunigt er dann schnell genug?


    Wenn du die Beschleunigung errechnen kannst, kannst du vielleicht auch ermitteln, ob der KUKA das überhaupt kann?

  • Hi!
    Hatte bisher keine Zeit mich mit dem Problem weiter zu beschäftigen. Werde erst nächste Woche wieder dazu kommen. Halte euch aber auf dem laufendem.


    Soweit aber nochmal ein großes Danke Schön für die Mühe mir zu Helfen und die guten Anregungen!


    Rainer

  • Hallo!


    Dass ist der Teil in der SPS den mein Betreuer geschrieben hat.


    Wenn ihr euch die Mühe machen würdet das Programmierte durchzugehen, wäre das echt super!



    Omega ist Winkelgeschwindigkeit und OMEGA_MAX ist die von uns errechnete maximale Winkelgeschwindigkeit die der Dreh-Kipptisch erreichen kann.
    V_trans ist Geschwindigkeit mit der Düse verfahren muss um den Gewünschten Lagenabstand V1 zu erreichen.


    Das Ganze dient dazu die Tangentialgeschwindigkeit über die gesamte Bauteillänge konstant zu halten und zeitgleich die Verfahrgeschwindigkeit der Düse anzupassen. Alles um einen gleichmäßigen Auftrag auf dem Bauteil zu erreichen.


    Da das Bauteil ja parabellförmig ist, werden die Radien zur Spitze hin sehr schnell sehr klein. Dementsprechend steigt die Winkelgeschwindigkeit und die Verfahrgeschwindigkeit der Düse.


    Wenn ihr euch die Mühe machen würdet das Programmierte durchzugehen, wäre das echt super!


    IF $FLAG[1] AND ($ACT_BASE_C == 10)THEN
    RADIUS=SQRT($POS_ACT.X * $POS_ACT.X + $POS_ACT.Y * $POS_ACT.Y) ;in MM



    OMEGA=$VEL_AXIS_ACT[8] / 100.0 * OMEGA_MAX ; in 1/MIN


    Vumfang_ist= RADIUS*OMEGA ;in MM/MIN



    V_trans= V1*ABS(OMEGA)/(2*(22.0/7.0))

    V_tp= V_trans*(1/60000)*0.5


    IF ((ABS($VEL_ACT))>0) AND (V1>0) THEN
    ovpro_soll=V_trans/($VEL_c.cp*1000*60)*100
    ENDIF



    IF (OVPRO_SOLL < 101) AND (OVPRO_SOLL > 0) THEN
    $OV_PRO = ovpro_soll
    ELSE


    $OV_PRO = 100


    ENDIF



    IF OVPRO_SOLL < 1 THEN
    $OV_PRO = 1


    ENDIF



    USER_OV = ABS(((Vumfang_soll)/(RADIUS*OMEGA_MAX))*100)


    IF (USER_OV > 100) AND (nHandle == 0) then
    MsgState(nHandle, "OV Ueberschritten")
    ELSE
    IF USER_OV < 101 THEN
    $OV_ASYNC = USER_OV
    nHandle=0
    ENDIF
    ENDIF
    ELSE
    $FLAG[1]=FALSE
    ENDIF

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