Programm mit Inline-Bewegungen schneller machen

  • Hallo,


    vorab allen ein GUTES NEUES JAHR!


    Wie kann ich ein Programm schneller machen, dessen Punkte mit Inline-Formularen programmiert wurden.


    Es handelt sich um ein bestehendes Roboter-Programm, welches z.B. von Geschwindigkeit und Beschleunigungen bei LIN-Bewegungen optimiert (schneller gemacht) werden soll.


    Gruß
    Stefan

  • Schritt für Schritt zum Roboterprofi!
  • Es gibt da einige Möglichkeiten. Kommt aber auch ganz auf das bestehende Programm an.


    Als erstes Lastdaten ermitteln. Lastdaten werden häufig unterschätzt, aber man kann damit 'ne Menge rausholen. Mit Load-Detect kann man auf dem Gebiet ganz schön was erreichen.


    Wenn nur wenige Datensätze (PDAT,LDAT) für Bewegungen vorhanden sind, kannst du die einmalig abändern und es gilt dann auch für andere ILF, die auf die gleichen Parameter zugreifen.
    Das bedeutet es gibt nicht für jedes ILF einen neuen Satz (PDAT0,PDAT1,PDAT2...PDAT25) sondern nur ein paar, die mehrfach verwendet weden (z.B.: ph,pm,pl oder cph,cpm,cpl - so mach ich es meistens)


    Wenn du die Systemvariable $STOPNOAPROX auf TRUE setzt, hält der Roboter an, wenn ein Bewegungssatz nicht überschliffen werden kann (sonst nur Meldung: Überschleifen nicht möglich). Da kann man besser mal kontrollieren, warum den nicht überschliffen wird und evtl. was dran ändern.


    Ansonsten kannst du natürlich jedes ILF einzeln ändern. :zwink:

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Hi,


    1) kannst mir da mal Beispiel zeigen?


    2) Lastdaten: Bringen die auch was bei LIN/CIRC oder wird er da nur schneller wegen dem Dynamicmodell bei PTP?


    3) wie kann ich denn aber z.B. die Beschleunigung und Geschwindigkeit von LIN-Bewegungen erhöhen (die sind doch in der BAS "gedeckelt", oder)?


    Gruß
    Stefan

    Einmal editiert, zuletzt von Schui74 ()

  • Ein Beispiel zeigen? Wie soll ich's erklären? :kopfkratz:


    Also:


    Manche Programmiererer machen es so:


    Code
    PTP Zum_Pal_Platz CONT Vel= 100 % PDAT1 Tool[1]:PalGreifer Base[1]:Palettenbahn
    PTP ZuPal1 CONT Vel= 100 % PDAT2 Tool[1]:PalGreifer Base[1]:Palettenbahn
    PTP UeberPal1 CONT Vel= 100 % PDAT3 Tool[1]:PalGreifer Base[1]:Palettenbahn
    LIN VorGreifen CONT Vel= 2 m/s CPDAT1 Tool[1]:Greifer Base[1]:Palettenbahn
    LIN VorGreifen Vel=0.2 m/s CPDAT2 Tool[1]:Greifer Base[1]:Palettenbahn


    Wenn in PDAT1-3 die gleichen Werte stehen( z.B.: Beschleunigung 65%), mußt du alle ILF einzeln ändern, wenn du alle die Beschleunigung dort anheben willst. IMO braucht man in den meisten Fällen nur 3 PDATs. (High, Mid, Low)


    Ich bevorzuge das:


    Code
    PTP Zum_Pal_Platz CONT Vel= 100 % ph Tool[1]:PalGreifer Base[1]:Palettenbahn
    PTP ZuPal1 CONT Vel= 100 % ph Tool[1]:PalGreifer Base[1]:Palettenbahn
    PTP UeberPal1 CONT Vel= 100 % ph Tool[1]:PalGreifer Base[1]:Palettenbahn
    LIN VorGreifen CONT Vel= 2 m/s cph Tool[1]:Greifer Base[1]:Palettenbahn
    LIN VorGreifen Vel=0.2 m/s cpm Tool[1]:Greifer Base[1]:Palettenbahn


    Steht jetzt in ph Beschleunigung 65%, brauchst du nur ein ILF ändern und es wird für alle ILF mit ph übernommen.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Hallo Schui,
    Die Vorschläge vom irren Polterer sind korrekt und kannst Du auch so übernehmen.
    Ich glaube aber, dass es eher weniger bringt, da sich dadurch in erster Linie die Programmabarbeitung, nicht aber die Bewegungen schneller machen.


    Meine Tips:
    bei kurzen Abständen von geteachten Punkten verringere die Überschleifwerte, so dass sich Überschleifzonen nicht überschneiden. Wenn Du mit dem Auto eine Kurve schneidest und versuchst diese doppet zu schneiden, landest Du im Graben. Der Roboter wird dies verhindern und bremst sich aus. :down:
    Bei kurzen Punktabständen auch mal die Geschwindigkeit des Zielpunktes verringern. Heißt, kann der Roboter zwischen zwei Punkten auf nur 65% beschleunigen, bevor er wieder gebremst wird, setze die Geschwindigkeit auf 65%. Nur dann kann er optimiert bremsen und beschleunigen. Wenn Du Gas gibst, und gleichzeitig schon wieder bremst, hast Du den optimalen Bremszeitpunkt bereits verpasst. :down:


    Ist halt wirklich wie beim Autofahren. :ylsuper:



    Schreibe vor der Bewegung
    $TIMER[1]=0
    $TIMER_STOP[1]=FALSE


    nach der Bewegung
    $TIMER_STOP[1]=TRUE


    Mußt halt mit den Werten spielen bis zu das Optimum hast.
    Im übrigen gilt: Teachen in World, Tool, Base ist der Tod für jede Taktzeit, sogar bei 'nem ABB :waffen100: Aber das wirst Du wohl auch selbst wissen.


    Nach welchem Standard arbeitest Du? Ist wichtig für die Tricks, die man Anwenden darf.


  • Die Vorschläge vom irren Polterer sind korrekt und kannst Du auch so übernehmen.
    Ich glaube aber, dass es eher weniger bringt, da sich dadurch in erster Linie die Programmabarbeitung, nicht aber die Bewegungen schneller machen.


    Kommt immer drauf an, wer da vorher rumprogrammiert hat. :)


    Mit Load-Detect würde ich aber mal behaupten kann man 10% Zyklusgewinn rauszuholen. Das ist nicht zu verachten. Und 10% sind schon 'ne Hausnummer. :ylsuper:

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.


  • ABB = Absolut Beschissene Bewegung.


    KUKA=KACKE -> Ein Roboter, der keinen Übergang von PTP nach LIN hinbekommt.
    ABB ist in Ordnung, bin aber Fanuc-Fan!!!
    ABB ist halt schnell wie'n Sau.


    VRS??? Kenn ich nicht.

  • Hallo,


    IrrerPolterer:
    Danke, aber die Möglichkeit die gleiche PDAT und LDAT zu verwenden, dass war mir bekannt.


    1)

    Zitat

    Im übrigen gilt: Teachen in World, Tool, Base ist der Tod für jede Taktzeit, sogar bei 'nem ABB Aber das wirst Du wohl auch selbst wissen.


    Wusste ich nicht! Kannst mir das erklären?


    2) Es geht eigentlich um folgendes: Das bisherige Programm fährt schon "Vollgas". 100% bei PTP, 2m/s bei LIN. Mir fällt halt auf, dass ich bei der Experten-Programmierung doch für die Beschleunigungen usw. viel höhere Werte angeben kann. Wir haben mal ein Projekt gehabt, bei dem der Roboter das Werkstück bewegt hat. Hatten da Unterstützung von KUKA:


    Dort sind wir mit $ACC.CP=10.0 gefahren. Eine eingefügte Inline-Formular-Bewegung und dann beschleunigte der Roboter wieder viel viel langsamer, das liegt wohl an der BAS() ?Krieg ich höhere Beschleunigungen auch bei einem bestehenden Programm mit Inline-Formular-Bewegungen hin?


    Gruß
    Stefan

    Einmal editiert, zuletzt von Schui74 ()


  • IrrerPolterer:
    Danke, aber die Möglichkeit die gleiche PDAT und LDAT zu verwenden, dass war mir bekannt.


    Kann ich ja nich wissen. Klang auch erst nicht so...

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • hallo


    ''''PTP Zum_Pal_Platz CONT Vel= 100 % ph Tool[1]:PalGreifer Base[1]:Palettenbahn
    PTP ZuPal1 CONT Vel= 100 % ph Tool[1]:PalGreifer Base[1]:Palettenbahn
    PTP UeberPal1 CONT Vel= 100 % ph Tool[1]:PalGreifer Base[1]:Palettenbahn
    LIN VorGreifen CONT Vel= 2 m/s cph Tool[1]:Greifer Base[1]:Palettenbahn
    LIN VorGreifen Vel=0.2 m/s cpm Tool[1]:Greifer Base[1]:Palettenbahn'''''



    ich möchte etwas fragen.


    wie kann ich die ph ,cpm und cph verwenden oder wo kann ich sie finden?


    in meinen program ich sehe nichts gleich


    z.b:


    in mein program steht ein bewegung



    :in data
    DECL E6POS XP287={X 7.0089,Y 2.42427,Z -106.841,A 93.4941,B -0.402087,C 179.025,S 2,T 10,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
    DECL FDAT FP287={TOOL_NO 2,BASE_NO 11,IPO_FRAME #BASE}
    DECL PDAT PPDAT78={VEL 100.0,ACC 100.0,APO_DIST 100.0}


    :und im src


    ;FOLD PTP P287 CONT Vel= 100 % PDAT78;%{PE}%R 2.4.603,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P287, 3:C_PTP, 5:100, 7:PDAT78
    PDAT_ACT=PPDAT78
    BAS (#PTP_DAT )
    FDAT_ACT=FP287
    BAS (#FRAMES )
    BAS (#VEL_PTP,100 )
    PTP XP287 C_PTP
    ;ENDFOLD



    danke für hilfe

    Einmal editiert, zuletzt von ahmdag ()


  • kein hilfe?kein antwort? :cry:


    Doch!
    Wenn du mit Inline-Formularen arbeitest steht da z.B.:
    PTP P1 CONT Vel= 100 % PDAT1 Tool[1]:Greifer Base[10]:Palette


    Statt PDAT1 schreibst du da rein ph oder ptph oder wie du willst.
    PTP P1 CONT Vel= 100 % ptph Tool[1]:Greifer Base[10]:Palette


    Wenn da Feld dann aktiv ist geht ja ein Fenster mit den Parametern auf. Die stellst du jetzt wie gewünscht ein.


    Bei der nächsten Bewegung:
    PTP P2 CONT Vel= 100 % PDAT2 Tool[1]:Greifer Base[10]:Palette


    tauscht du PDAT2 wieder aus:
    PTP P2 CONT Vel= 100 % ptph Tool[1]:Greifer Base[10]:Palette


    Wenn du ptph änderst, wird es für alle PTP-Bewegungen, die ptph als Bewegungsparameter haben, geändert.


    In der Datenliste findest du die Parameter dann so:
    DECL PDAT Pptph={VEL 100.0,ACC 100.0,APO_DIST 100.0}



    Ich benutze Standardmäßig:
    Für PTP-Bewegungen:
    ptph für hohe Beschleunigungen (high)
    ptpm für mittlere Beschleunigungen (mid)
    ptpl für niedrige Beschleunigungen (low)


    Für CP-Bewegungen (LIN oder CIRC)
    cph für hohe Beschleunigungen (high)
    cpm für mittlere Beschleunigungen (mid)
    cpl für niedrige Beschleunigungen (low)



    Probiers mal aus, dann ist es einfacher zu verstehen.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • hallo,


    Kommt nur wohl auch immer darauf an um welche Art von Roboter es sich handelt.


    Bei einem Putzroboter zum Beispiel ists so eine Sache mit der Geschwindigkeit.
    Wenn man da um kA 30% raufgeht könnte es wohl sein das die Schleifscheibe diesem Druck nicht standhält und die Folgen kann man sich dann ja ausmalen. gg


    Wir haben bei unserem Programm einige unnötige kleine Sätze die sicher im grossen und ganzen wenn sie rausgenommen würden einige wertvolle Sekunden sparen würden. Ausserdem fährt unser Roboter öfter recht langsam frei rum. Da könnte man wiederum auch einiges rausholen. Meine Meinung!


    Mfg Autchess

  • hallo;


    1)


    ;***********************************************
    Und wenn ich im dat program als folgende schreiben;
    DECL PDAT PPDAT78={VEL 100.0,ACC 100.0,APO_DIST 100.0}



    Und dann in src;


    PTP P1 CONT Vel= 100 % PDAT78 Tool[1]:Greifer Base[10]:Palette
    ;*************************************************



    2)


    ;************************************************
    Und wenn ich im dat program als folgende schreiben;
    DECL PDAT Pptph={VEL 100.0,ACC 100.0,APO_DIST 100.0}



    Und dann in src;


    PTP P1 CONT Vel= 100 % ptph Tool[1]:Greifer Base[10]:Palette
    ;**************************************************


    sind beide gleich oder nicht? irgendein Unterschied? Wenn ja was ist die unterschied?


    Gruß

  • sind beide gleich oder nicht? irgendein Unterschied? Wenn ja was ist die unterschied?


    Du benutzt den Parameter für mehrere Bewegung. Statt PDAT78,PDAT79,PDAT80...PDAT500! Hast du nur einen Parametersatz, den du nennen kannst wie du willst. ptph ist nur ein Vorschlag.


    Nehmen wir an, du hast 10 Bewegungen (P1-P10), die jeweils ein PDAT haben (PDAT1-PDAT10).
    In allen steht drin: PDAT(1-10)={VEL 100.0,ACC 100.0,APO_DIST 100.0}


    Wenn du jetzt bei allen 10 Bewegungen die z.B.: Beschleunigung (ACC) heruntersetzen willst, dann muß du jedes ILF öffnen und PDAT1 änder, PDAT2 ändern,PDAT3 ändern...usw.


    Benutzt du aber für alle Bewegungen ptph ...oder nenn es meinetwegen Leberwurst oder so...dann brauchst du nur ein ILF öffnen und die Beschleunigung ändern. Das gilt dann für ALLE dieser 10 Bewegungen.


    ptph nenne ich es nur, weil ich weiß es handelt sich um einen PTP Parametersatz (ptp) mit hohen Beschleunigungswerten (h).



    Ich sag ja, probiers aus!

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

    Einmal editiert, zuletzt von IrrerPolterer ()

  • :meld:
    hallo,
    mann ;) kann den robi auch mit den beschleunnigungsdaten schneller machen, in der $config.dat das ist der schnellste weg, :gutidee: der sich auch auf alle ptp und lin bewegungen auswirkt allerdings sollte mann :zwink: sie nur anwenden wenn mann :) probleme mit der taktzeit hat und das nur in von kuka freigegeben höhen abspielen. :D


    Grüß
    Chaos

    Rechtschreibfehler sind gewollt wer sie findet darf sie bekalten ggg

  • @Chaos:


    Hallo! Gleiches Thema - gleiche Antwort


    http://www.roboterforum.de/rob…hp?topic=2516.msg9468#new

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Hi,


    such mal im config.dat nach def_vel... und def_acc... .
    Diese Werte werden auch mit Eintrag der Werkzeuglastdaten geandert (ueber den Aufruf der Bas. SRC) - daher funktioniert funktioniert die Sache mit $Vel.. bei inlineformularen nicht.
    In Inlinformularen kannst du fuer die lineare Geschwindigkeit leider nicht mehr als 2 m/s angeben (egal wie hoch def_vel_cp ist).
    Bei PTP macht´s durchaus Sinn.


    Vorsicht: eventuell Garantieverlust - bei neuen Robotern auf jeden Fall mit KUKA klaeren (eintragen von Werkzeuglastdaten ist ja neuerdings Pflicht)


    Gruss stefan

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