Überschleifen nicht möglich - nicht überschleiffähige Anweisungsfolge

  • Hallo,


    wir nutzen einen KUKA KR500 mit KR C4 und KS V8.5.453.


    Bis vor kurzem hat unser Roboter die erstellten Programme noch überschliffen, was er jetzt nicht mehr macht. ;(

    Ich habe bereits die Variable $ADVANCE = 3 gesetzt, leider ohne Erfolg. Auch for den WHile-Schleifen habe ich ein CONTINUE gesetzt, ebenfalls ohne Erfolg.


    Wenn ich über $stopnoaprox = true setze meckert er am Satz 99:

    SLIN {X -63.130,Y 101.262,Z 317.785,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis



    Im Hauptteil der Fräsbearbeitung meckert bei jeder 3. SLIN-Bewegung, dass ein Überschleifen nicht möglich sei.

    Anbei noch der Auszug des fast kompletten Programm. Eventuell kann mir jemand noch einen Tipp geben, ob es eine globale Variable gibt die man setzen muss oder ein anderes Hilfsmittel:

    Wir arbeiten mit einer RSI-Schnittstelle.

    Besten Dank im voraus.


    ;SAK Fahrt

    PTP $POS_ACT

    ;

    ;Ueberschleifen

    $apo.cdis = 3.0

    ;

    ;Handshake Programablauf

    DO_95_JOB_Angenommen=TRUE

    DO_96_Done_JOB=FALSE

    DO_71_SpindelON = FALSE

    DO_72_SpindelOFF = FALSE

    DO_73_WaitStartMill = FALSE

    ;

    ;TCP X-Wert von Flansch bis Werkzeugspitze 469.41300000000001

    TOOL_DATA[1]={X -469.41300000000001, Y 0.0, Z 145.0, A 180.0, B 180.0, C 0.0}

    ;

    ShiftBase(0)

    ;BASE DEFINIEREN

    BAS(#BASE,10)

    ;

    BAS(#TOOL,1)

    ;

    ;Handshake Spindel

    DO_71_SpindelON = TRUE

    DO_72_SpindelOFF = FALSE

    ;

    ;Create RSI Reset

    ret = RSI_RESET()

    IF (ret <> RSIOK) THEN

    HALT

    ENDIF

    ;Variable für RSI-Kommunikation

    $SEN_PINT[42]=0

    ;Create RSI Context

    ret = RSI_CREATE("RSI_Ethernet",CONTID,TRUE)

    IF (ret <> RSIOK) THEN

    HALT

    ENDIF

    ;ANFAHREN

    ;KUKA_SF80

    ;

    SPTP {A1 0.000,A2 -115.000,A3 115.000,A4 0.000,A5 0.000,A6 -180.000}

    SPTP {A1 -90.000,A2 -115.000,A3 115.000,A4 0.000,A5 0.000,A6 -180.000}

    SPTP {A1 -90.000,A2 -106.883,A3 125.000,A4 0.000,A5 -18.000,A6 -180.000}

    SPTP {A1 -90.000,A2 -84.500,A3 106.000,A4 0.000,A5 -21.500,A6 -180.000}

    ;FRAESEN_15_20_12

    ;KUKA_SF80

    ;

    ;SPINDELDREHZAHl

    ;WAIT FOR DI_68_SpeedReached

    ;RAPID_BEWEGUNG

    SLIN {X -63.130,Y 101.262,Z 317.785,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    ;

    ;APPROACH

    ;MOM-FEED-RATE: 20100.0

    ;MOM-FEED-APPROACH-VALUE: 20100.0

    ;

    ;Geschwindigkeit in m/s

    BAS(#VEL_CP,0.3350)

    $SEN_PREA[101] =$VEL.CP

    $SEN_PREA[102]=$ACC.CP

    ;

    ;APPROACH

    ;

    ;SLIN {X -68.381,Y 31.518,Z 317.785,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    ;

    ;Start RSI execution

    ret = RSI_ON(#ABSOLUTE)

    IF (ret <> RSIOK) THEN

    HALT

    ENDIF

    ;

    WHILE NOT($SEN_PINT[42]==1)

    SLIN {X -68.381,Y 31.518,Z 317.785,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    ENDWHILE

    ;

    ;ENGAGE

    ;MOM-FEED-RATE: 20200.0

    ;MOM-FEED-ENGAGE-VALUE: 20200.0

    ;Geschwindigkeit in m/s

    BAS(#VEL_CP,0.3367)

    $SEN_PREA[101] =$VEL.CP

    $SEN_PREA[102]=$ACC.CP

    ;

    SLIN {X -70.634,Y 1.603,Z 317.785,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    ;CUT

    ;MOM-FEED-RATE: 20000.0

    ;MOM-FEED-CUT-VALUE: 20000.0

    ;Geschwindigkeit in m/s

    BAS(#VEL_CP,0.3333)

    $SEN_PREA[101] =$VEL.CP

    $SEN_PREA[102]=$ACC.CP

    ;

    SLIN {X -69.433,Y 1.513,Z 314.434,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -68.306,Y 1.428,Z 311.057,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -67.255,Y 1.349,Z 307.655,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -66.279,Y 1.275,Z 304.231,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -65.380,Y 1.207,Z 300.785,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -64.557,Y 1.145,Z 297.321,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -63.811,Y 1.089,Z 293.839,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -63.143,Y 1.039,Z 290.341,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -62.553,Y 0.995,Z 286.829,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -62.041,Y 0.956,Z 283.305,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -61.607,Y 0.923,Z 279.770,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -61.252,Y 0.897,Z 276.227,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -60.976,Y 0.876,Z 272.676,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -60.778,Y 0.861,Z 269.121,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -60.659,Y 0.852,Z 265.561,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -60.620,Y 0.849,Z 262.000,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -60.620,Y 0.849,Z 92.000,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    ;

    ;

    Danke schon mal im voraus

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

    ich hatte auch schon so manche Probleme beim Überschleifen von Spline-Bewegungen.

    Ich hatte damals testweise die Spline-Bewegungen durch normale Bewegungen (PTP,LIN,CIRC) ersetzt und dann hatte er alles überschliffen.

    Kuka beschäftigte sich dann mit dem Problem, hab aber nie mehr was von den Herren gehört.


    Ich hoffe ich konnte dir damit helfen.


    Grüße

  • Servus,


    Mein Tipp geht auch in Richtung Spline => hatte auch schon meine Probleme damit.

    => externe Achse als externes Tool vermessen => Roboter bewegte sich nur noch ganz langsam => wieder auf normale LIN und CIRC Befehle alles i.O.

    => Kreisbewegung normaler Roboter (ohne ext. Achse) => nach dem Teachen war plötzlich die Bewegung anders als vorher => Punktänderung im Zehntelbereich => laut KUKA gabs da einen BUG ("Feature") in der KSS => war glaube ich ein 8.3.29


    Bei mir ist SPLINE kpl. gestorben. Auch Maschinenbauer dürfen keine SPLINE-Bewegungen ins Programm integrieren.


    Wenn etwas nicht sauber funktioniert brauche ich das nicht.:cursing::thumbdown:


    Gruß

    Martl

  • Spline <X .. hab im Kurs damals auch nicht genau verstanden, warum ich ne exakte Kreisbahn, Kurve oder kombiniertes der "KI" überlassen soll, wenn Lin und Circ das selbe Ergebnis liefern und das noch bahntreuer (watt'n Wort) als Spline .. Ich konnte den Vorteil nicht erkennen .. Vielleicht hilft mir ja jemand und /oder berichtigt mich. ;)

    Mein Name ist Hase. Ich weiß von nix.

  • Guten Morgen elchi2018,

    Spline-Bewegungen, vor allem die Spline-Blöcke sind bei Applikationen wie Kleben,Schweißen etc. von Vorteil.

    Die ganzen Bewegungen in einem Spline-Block werden zu "einer Bewegung" berechnet, somit ist die Geschwindigkeit am TCP über alle Bewegungen in diesem Block konstant.

    Für normales "Pick and Place" bzw. für Applikationen wo diese Eigenschaften nicht gebraucht werden, muss man auch nicht zwangsweise diese Spline-Bewegungen nutzen.


    Grüße

  • Hallo zusammen,


    schon mal vielen Dank an alle für eure Zeit und eure Antworten.


    Nachdem ich alle SLIN-Bewegungen durch LIN-Bewegungen ersetzt habe, war das Überschleifen möglich.

    Die Geschwindigkeit der LIN-Bewegungen ist deutlich reduziert im Vergleich zu den SLIN-Bewegungen.

    $acc.cp habe ich auf 10 gesetzt.


    Was mich etwas verwundert, ist die Tatsache, dass wir bereits 2 Fräsprogramme mit SLIN-Bewegungen erstellt haben und der Roboter dort die SLIN-Bewegung überschliffen hat.


    Existeren noch andere Optionen wie man SLIN-Bewegungen überschleifen kann?

    Danke für eure Antworten.

  • Die ganzen Positionen liegen alle sehr nahe beieinander - das sind ja gerade mal 3mm Abstand von Punkt zu Punkt.

    Da die Überschleifdistanz auch bei 3mm steht würde ich fast vermuten, dass das Problem daher kommt. Im Endeffekt kann bei einem Punktabstand von 3mm der größte sinnvolle Überschleifbereich eigentlich nur 1.5mm sein.


    ;Ueberschleifen

    $apo.cdis = 3.0


    ;....


    SLIN {X -69.433,Y 1.513,Z 314.434,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -68.306,Y 1.428,Z 311.057,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -67.255,Y 1.349,Z 307.655,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -66.279,Y 1.275,Z 304.231,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -65.380,Y 1.207,Z 300.785,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -64.557,Y 1.145,Z 297.321,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -63.811,Y 1.089,Z 293.839,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -63.143,Y 1.039,Z 290.341,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -62.553,Y 0.995,Z 286.829,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -62.041,Y 0.956,Z 283.305,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -61.607,Y 0.923,Z 279.770,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -61.252,Y 0.897,Z 276.227,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -60.976,Y 0.876,Z 272.676,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -60.778,Y 0.861,Z 269.121,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -60.659,Y 0.852,Z 265.561,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -60.620,Y 0.849,Z 262.000,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    SLIN {X -60.620,Y 0.849,Z 92.000,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

  • Wenn die Bewegungen innerhalb eines CP-Spline Blocks stehen würden, müsste dort mit SPL Bewegungen gearbeitet werden. So wie es programmiert ist verhalten sich die SLIN Sätze wie lauter kleine Splineblöcke die jeweils nur einem Punkt beinhalten. Diese Minisplineblöcke werden dann untereinander wieder verschliffen. Das kann mit C_DIS oder C_SPL gemacht werden.

  • Hallo an alle Helfenden,



    anbei ein weiterer Zwischenstand.


    C_SPL hat leider nicht geholfen, ebenso war die Reduzierung von $apo.cdis= 1.5 leider auch nicht hilfreich.

    In der Variable $SPL_VEL_RESTR sind alle Angaben mit "#OFF"gekennzeichnet. Die Variable $SPL_VEL_MODE ist auf "#OPT" gesetzt.

    Was etwas geholfen hat, war folgendes:

    Nach jedem ENDWHILE habe ich $ADVANCE=5 gesetzt.


    WHILE NOT($SEN_PINT[42]==1)

    SLIN {X -68.381,Y 31.518,Z 317.785,A 85.694,B -0.000,C 90.000,S 22,T 51} c_dis

    ENDWHILE

    $ADVANCE=5


    Das bewirkt, das 4 Fräsoperationen überschliffen werden und bei den anderen 4 Fräsoperationen hat er 1 - 2 Punkte die er genau anfährt und den Rest überschleift. :!::?::!:


    Mittlerweile habe ich auch KUKA aktiviert und warte dort auf den Customer Service.


    Eventuell hat jemand noch den entscheidenden Hinweis für uns :)


    Danke. :)

  • BAS(#VEL_CP,0.3333) heisst ja 0.3m/s, heisst 300mm/s.

    Punktdichte nach Progauszug (leider wiedermal nicht komplett, wieso kann man nicht einfach ein .src file attachen) in Z alle 3 mm.

    Heisst rund 100 Punkte pro Sekunde...…..


    Vielleicht müsste man sich darüber mal Gedanken machen.

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

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