Palettierer überschleift PTP auf LIN nicht

  • Hallo zusammen,


    wir haben einen KR180 R3200 PA zum Be- und Entstapeln von Matten.


    jetzt hab ich folgendes Problem, dass PTP Punkt nicht überschliffen werden:


    Start an Punkt1 mit PTP auf Punkt 2 mit horizontaler ca. 90° Bewegung hauptsächlich über Achse 1.
    Punkt 3 wird mit LIN angefahren. Dies ist eine reine vertikale Bewegung zum stapeln dieser Teile.
    Das Überschleifen von PTP Punkt 2 funktioniert nicht wirklich. Egal was eingestellt wird, der Überschleifweg verändert sich nicht.
    Es wurde auch die Beschleunigung von Punkt 3 komplett nach unten gedreht. was auch nichts brachte
    $Advance steht auf 1.
    Wichtig vielleicht noch zu sagen. Die PTP Punkte sind InLine Formulare und der LIN ein KRL Befehl welcher vorher mit z.B.


    BAS(#TOOL,1)
    BAS(#BASE,15)
    BAS(#VEL_PTP,100)
    BAS(#ACC_PTP,100)
    BAS(#VEL_CP,2.0)
    BAS(#ACC_CP,100)
    $APO.CVEL=100
    $APO.CDIS=100


    gefüttert werden.


    Die Bewegung sieht trotzdem nicht flüssig und weich aus. Sieht aus als würde der Roboter einen Haken schlagen. Einen direkten Stopp/Genauhalt gibt es aber nicht.
    Ist dieses Phänomen bekannt? Gibt es noch einen Parameter, welcher eingestellt werden muss, damit die Beschleunigung und Überschleifparameter mit in die Bahnenberechnung eingeplant werden?
    Ist es beim Palettierer überhaupt möglich von PTP auf LIN zu gehen? Oder sollte alles mit LIN angefahren werden?


    Vielen Dank schon mal

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


    warum ist $Advance=1 schlecht?


    mit 1 wird min 1 Punkt überschliffen.
    Wenn ich den auf 0 stelle ist doch kein überschleifen möglich.
    Da ich nur drei Punkte hab, wo nur der zweite Punkt überschliffen werden soll, sollte das doch passen, oder?

  • Wie gesagt, ich könnte jetzt irren aber meine das für $advanced folgendes gilt:


    0 -> so viel wie die Kiste her gibt
    1 -> jeden Satz einzeln lesen
    2 -> 2 Sätze lesen (einen im Vorlauf)
    3 -> 3 Sätze lesen (zwei im Vorlauf)
    ...


    Grüße

  • ...
    Die Bewegung sieht trotzdem nicht flüssig und weich aus. Sieht aus als würde der Roboter einen Haken schlagen. Einen direkten Stopp/Genauhalt gibt es aber nicht.
    ...


    Wenn es keinen Stopp/Genauhalt gibt, dann überslcheift er doch. Der 'geschlagene Haken' kommt beim Kuka schon mal vor, wenn man von PTP auf LIN überschleift.
    Toolwechsel findet nicht statt ?? D.h. die erste Position wird auch mit Tool 1 angefahren ?? Sonst sollte es aber doch einen Genauhalt geben.
    Oder ist der erste Punkt womöglich einer der Homepunkte mit Achskoordinaten?

  • Ansonsten durchaus mal

    Code
    $STOPNOAPROX


    setzen und die meldungen durchschauen.

    Den Roboter "in seinem Lauf hält weder Ochs noch Esel auf!"

  • Tool umschaltung passiert nicht an dieser Stelle.
    Auch über Home o.ä. wird hier nicht gefahren.
    Sagt mir bitte, ob ich richtig bin. So wie ich das mit der Variable sehe, erscheint eine Hinweismeldung, wenn ein Überschleifen nicht möglich wäre, oder? Im $Aut EXT sollte dieser Hinweis sowieso erscheinen, auch wenn sie false ist, oder?
    Wenn man den Bewegungsablauf vom Robi folgt, siehts so aus als würde er minimal überschleifen. Aber auf alle Fälle nicht den eingestellen Weg von 100

  • moin moin,
    es kommt auch darauf an wo die Punkte liegen. Wenn der gesetzte Überschleifwert nicht eingehalten werden (Punkte zu nahe zusammen) kann, dann wird vom System ein kleinerer Wert verwendet.
    Wenn du $STOPNOAPROX verwendest müsste eine Meldung angezeigt werden wenn der Robi nicht überschleifen kann. In AUT oder EXT werden solche Überschleifmeldungen nicht angezeigt. Werden irgendwo in der HMI Config ausgeblendet.
    Wie sehen deine Bewegungsprogrammme denn aus? Gibt´s davon einen Ausschnitt?
    Gruß Paulaner

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

  • Aha. OK. Dann probier ich das mal aus. Vielleicht Sieht man ja dann, dass er doch was nicht überschleifen kann.


    An das, dass die zwei/drei Punkte zu nahe liegen, hab ich auch schon gedacht. Sollte aber nicht der Fall sein.


    Das Programm sieht gekürzt wie folgt aus:


    ;FOLD PTP zuStation1 CONT Vel=100 % PDAT1 Tool[1]:Greifer1 Base[0];%{PE}%R 8.3.34,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:zuStation, 3:C_DIS, 5:100, 7:PDAT1
    $BWDSTART=FALSE
    PDAT_ACT=PPDAT1
    FDAT_ACT=FzuStation
    BAS(#PTP_PARAMS,100)
    PTP XzuStation C_DIS
    ;ENDFOLD


    ;FOLD (+) Parameter setzen
    BAS(#TOOL,1)
    BAS(#BASE,15)
    BAS(#VEL_PTP,100)
    BAS(#ACC_PTP,100)
    BAS(#VEL_CP,2.0)
    BAS(#ACC_CP,100)
    $APO.CVEL=100
    $APO.CDIS=100
    ;ENDFOLD


    TorqRed(TorqFuegen)
    PTP HOPos:{x 0,y 0,z 400,a 0,b 0,c 0} C_PTP


    ;Abdruecker hoch
    ;FOLD SYN OUT 805 'O632_39Y1_1 Abdrueckklingen hoch' State= TRUE at END Delay= 0 ms;%{PE}%R 8.3.22,%MKUKATPBASIS,%COUT,%VSYNOUT,%P 2:805, 3:O632_39Y1_1 Abdrueckklingen hoch, 5:TRUE, 7:1, 9:-350, 12:0
    TRIGGER WHEN DISTANCE=1 DELAY=0 DO $OUT[805]=TRUE
    ;ENDFOLD
    ;FOLD SYN OUT 806 'O632_39Y1_2 Abdrueckklingen runter' State= FALSE at END Delay= 0 ms;%{PE}%R 8.3.22,%MKUKATPBASIS,%COUT,%VSYNOUT,%P 2:806, 3:O632_39Y1_2 Abdrueckklingen runter, 5:FALSE, 7:1, 9:-350, 12:0
    TRIGGER WHEN DISTANCE=1 DELAY=0 DO $OUT[806]=FALSE
    ;ENDFOLD


    LIN HOPos



    der PTP HOPos mit Z+400 wird eben nicht überschliffen. Obwohl C_PTP von 100 eingestellt ist.


    dier noch die Base und PTP Daten


    DECL E6POS XzuStation1={X 2356.15747,Y -254.919220,Z 1325.16492,A 46.3138618,B 1.54490624E-13,C -2.83343574E-12,S 2,T 42,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}


    BASE_DATA[15]={X 1843.15063,Y -744.090576,Z 70.504852,A 47.1645050,B -0.123729825,C -0.00943503622}



    somit ist der Z Unterschied ja ausreichend. Maximale Überschleifung ist doch mit halben Weg möglich. Somit wäre doch 427mm maximal möglich, oder?


    Hab von einem Kollegen gehört dass diese Phänomen auch schon in der KRC2 gab.

  • Probiere mal das zu ändern:


    ;FOLD (+) Parameter setzen
    $APO.CDIS=500 (bei ptp bewegungen bis 1000 mm möglich)



    TorqRed(TorqFuegen)
    PTP HOPos:{x 0,y 0,z 400,a 0,b 0,c 0} C_DIS


    eventuell kann TorqRed einen Vorlaufstopp erzeugen. Zum Testen kannst du das mal auskommentieren.

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

  • $Apo.CDIS wurde bereits Schrittweise bis auf 500 erhöht --> keine Änderung der Überschleifbewegung.


    Das Programm TorqRed werd ich versuchsweise mal auskommentieren. Hoffentlich bringts was. Wird aber bischen dauern, biss ich dazu Ergebnisse liefern kann.


    Ich hab schon bald die Vermutung, dasss es was mit den Achsstellungen des Palletierers zu tun hat. Oder mit der Anordnung der Positionen.


    Im Anhang sieht man die Positionen. von 1 werden die Teile dann auf 2-3 abgelegt. An Position 4 ist es am schlimsten.


    Und je schneller gefahren wird, desto ruckartiger und härter sieht die Überschleifung aus. Vielleicht täusch ich mich auch.

  • Danke für die vielen Tipps!


    Diesen Punkt kann/darf ich doch nicht überschleifen.
    Der Robi soll doch sauber von oben drauf fahren.
    Beim Verschleifen könnte er doch nach vorne oder zur Seite ausbrechen. Was u.U. zu einer Kollision mit der Station führen könnte.


    Hier noch das TorqFuegen Programm


    .DAT



    GLOBAL STRUC rA6INT INT A1,A2,A3,A4,A5,A6
    DECL GLOBAL rA6INT TORQDEFAULT={A1 200,A2 200,A3 200,A4 200,A5 200,A6 200}
    DECL GLOBAL rA6INT TORQFUEGEN={A1 50,A2 50,A3 50,A4 50,A5 50,A6 50}




    .SRC


    GLOBAL DEF TorqRed(TorqVal :in )


    DECL rA6INT TorqVal


    if VarState("TorqVal.a1")==#initialized then
    $TORQMON[1]=TorqVal.a1
    endif
    if VarState("TorqVal.a2")==#initialized then
    $TORQMON[2]=TorqVal.a2
    endif
    if VarState("TorqVal.a3")==#initialized then
    $TORQMON[3]=TorqVal.a3
    endif
    if VarState("TorqVal.a4")==#initialized then
    $TORQMON[4]=TorqVal.a4
    endif
    if VarState("TorqVal.a5")==#initialized then
    $TORQMON[5]=TorqVal.a5
    endif
    if VarState("TorqVal.a6")==#initialized then
    $TORQMON[6]=TorqVal.a6
    endif


    END



    DANKESCHÖN


  • Danke für die vielen Tipps!


    Diesen Punkt kann/darf ich doch nicht überschleifen.
    Der Robi soll doch sauber von oben drauf fahren.
    ...


    Was jetzt, soll er überschleifen, oder nicht? :kopfkratz:


    Wenn da steht:
    PTP HOPos:{x 0,y 0,z 400,a 0,b 0,c 0} C_PTP
    dann wird auch verschliffen, allerdings ist dann der Parameter
    $APO.CPTP (Wertebereich 0-100, soweit ich mich erinnere)
    zuständig für den 'Überschleifradius'.
    Und manchmal bringt das Verkleinern dieses Wertes was.


  • Probiere mal dein Unterprogramm im Vorlauf auszuführen (CONTINUE).


    Das könnte wirklich die Ursache für den Vorlaufstopp sein.


    Grüße

  • Zitat


    Was jetzt, soll er überschleifen, oder nicht? :kopfkratz:


    :pfeif: Sorry. :uglyhammer_2: Da hab ich nen schmarrn geschrieben. Du hast recht. :supi:


    Danke für den Hinweis. Hab in der Doku noch mal nachgesehen. Da steht für das Überschleifen von PTP (CPTP) folgendes drin:


    CPTP Der Überschleifparameter CPTP wirkt unterschiedlich, je nachdem ob eine
    PTP- oder eine PTP-Spline-Bewegung (SPTP) programmiert ist.
    Bei einer PTP-Bewegung bezieht sich der mit CPTP angegebene Pro-
    zentwert auf einen mit $APO_DIS_PTP in den Maschinendaten festgeleg-
    ten Achswinkel. Sobald alle Achsen ihre so definierte
    Überschleifentfernung unterschritten haben, wird überschliffen.
    Frühestens wird jedoch mit dem Überschleifen begonnen, wenn 50 % der
    Satzlänge erreicht wurden. D. h. es wird frühestens überschliffen, wenn
    die halbe Weglänge zwischen Startpunkt und Zielpunkt, bezogen auf die
    Kontur der PTP-Bewegung ohne Überschleifen, zurückgelegt wurde.




    Also muss ich dann auch noch die $APO.CPTP beschreiben.
    das test ich mal.
    Oder ich änder auf C_DIS


    Zitat

    das auch mal probieren
    PTP HOPos:{x 0,y 0,z 400,a 0,b 0,c 0} C_DIS


    Oh mann!! Ich glaub ich habs gefressen. :danke:


    Vielen Dank an euch!!



    Auch für den Vorschlag mit dem Continue vor der IF.
    Aber eine Frage hab ich noch. Wieso sollte hier der Vorlaufzeiger angehalten werden? Die IF Abfrage stoppt den doch nicht.
    Ausserdem schalte ich beim Wegfahren wieder auf DEFAULT zurück. und hier stoppt er auch nicht.


    Ich probier jetzt mal das mit den Überschleifparametern noch. Sollte dies nicht ausreichen, werd ich die CONTINUE einbauen.


    Ich geb euch dann Rückmeldung. Wird aber paar Tage dauern. Bin momentan nicht bei dem Robi.


    Vielen Dank nochmal, euch allen! :merci:

  • Also bei der IF Varstate abfrage muss kein continue davor stehen. Die Funktion erzeugt kein Vorlaufstopp. Hab die in meinen Programmen auch ohne continue. Eventuell das beschreiben von $TORQMON[x] löst einen Stopp aus. Bin mir aber da nicht 100%tig sicher.


    Zitat

    Diesen Punkt kann/darf ich doch nicht überschleifen.
    Der Robi soll doch sauber von oben drauf fahren.
    Beim Verschleifen könnte er doch nach vorne oder zur Seite ausbrechen. Was u.U. zu einer Kollision mit der Station führen könnte.


    Dann mach halt noch 1...2 Positionen hinzu. Oder noch einen Lin nach dem PTP.
    Gruß Paulaner

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

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