Anleitung zur Bewegungs-Programmierung

  • Hallo allerseits,


    ich habe das Problem, dass viele Codebeispiele aus der Dokumentation, z.B. "KSS 8.7 Bedien- und Programmieranleitung für Systemintegratoren", offenbar nicht direkt lauffähig sind, da weitere Variablen gesetzt bzw. Bibliotheksfunktionen aufgerufen werden müssen, um die Steuerung für die Bewegung zu konfigurieren.

    Es geht schon mit der bei Programmstart erforderlichen SAK-Fahrt mit PTP los - PTP HOME; verursacht Fehler ("Achsgeschwindigkeit nicht programmiert A1").

    Leider finde ich dazu keinerlei Hinweise in der Dokumentation.

    Ich versuche daher, den von Inline-Formularen generierten Code nachzuvollziehen (ebenfalls offenbar nicht dokumentiert, z.B. BAS()).


    Beispiel:



    • Warum wird aus HOME hier XHOME bzw. XXHOME?
    • Welche der Aufrufe müssen vor jedem Bewegungsbefehl erfolgen (oder reicht es einmal für weitere PTPs)?
    • Kann ich die Inlineformular-Parameter (und Folds) einfach weglassen?
    • Was wäre der "klassische" Weg der Programmierung (d.h. ohne Inlineformulare) und gibt es dazu vollständigere, offizielle Dokumentation bzw. Beispiele?

    Nach PTP soll es mit LIN und SCIRC im SPLINE-Block weitergehen...

  • Schritt für Schritt zum Roboterprofi!
  • ...

    • Warum wird aus HOME hier XHOME bzw. XXHOME?
    • Welche der Aufrufe müssen vor jedem Bewegungsbefehl erfolgen (oder reicht es einmal für weitere PTPs)?
    • Kann ich die Inlineformular-Parameter (und Folds) einfach weglassen?
    • Was wäre der "klassische" Weg der Programmierung (d.h. ohne Inlineformulare) und gibt es dazu vollständigere, offizielle Dokumentation bzw. Beispiele?

    Nach PTP soll es mit LIN und SCIRC im SPLINE-Block weitergehen...

    KUKA schreibt vor seine Positionsnamen immer ein "x", ist halt so. Warum da ein "xx" steht kann ich dir so nicht sagen


    Wenn du ein Standard .src (Achtung, kein Experten .src!) am KCP erstellst, sind oben so eine Handvoll "ini-Zeilen" dabei, dort wird so etwas wie Achsgeschwindigkeit initialisiert.


    Prinzipiell können Inlineformulare weggelassen werden. Jedoch, wenn du kein "Experte" bist und dazu noch das Technologiepaket "ExpertTech" nicht vorhanden ist, fehlen dann Informationen und Bedienmöglichkeiten.

    Zum Beispiel steht im ILF das Tool und die Base die du sonst mit Hand zwingend reinschreiben musst, bzw. ohne ILF und "ExpertTech" kannst du nicht teachen.


    Klassisch ist mit ILF, ohne nennt sich dann "Expertenprogrammierung". ich habe das aus der Erfahrung des "Machens" gelernt...

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

  • In deinem Fold steht

    Code
    ;FOLD PTP XHOME Vel=100 % PDAT1 Tool[1]:Tool1 Base[0] ;%{PE}

    Warum XHOME?

    Die Positionsvariable heißt einfach nur HOME.

    Gruß Roland


    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.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Genau...

    ILF fügt den Punktnamen das Präfix „x“ hinzu. Da der im ILF-Editor eingegebene Name bereits „x“ enthält, hat ILF einfach ein weiteres hinzugefügt.

  • Ok, danke soweit. Hatte gestern noch ein paar ähnliche Threads gefunden, werde ich morgen bei Gelegenheit verlinken. Das INI hatte ich noch nicht auf dem Schirm - werde ich mir ansehen.


    XHOME, weil ich in der config (?) nirgends HOME gefunden habe.

    Wenn das ILF ein X vor HOME setzt, passt es ja wieder.

    Hab das nirgends in den Dokus gefunden.


    "Ich schaff's mit Kuka. Jetzt einfach ..." - naja, wird schon ... irgendwann ;)

  • Man muss auch im Hinterkopf behalten, dass KRL seit 30 Jahren oder so weitgehend zu sich selbst abwärtskompatibel ist. Nicht vollständig, aber doch in wesentlichen Eigenschaften. Was früher aus der Not heraus als Konvention festgelegt wurde, ist heute vielleicht nicht mehr zeitgemäß - aber nun eben Standard. Und so gibt es ein paar Merkwürdigkeiten, über die Du jetzt stolperst - und die man uns 1998 in Augsburg schon als "ist eben so, weil man das früher so haben wollte" erklärte.

  • XHOME, weil ich in der config (?) nirgends HOME gefunden habe.

    Deklariert in der Config.dat im Fold Basistech Globals

    Gruß Roland


    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.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Im INI-Fold der "Modul"-Vorlage werden über bas.src die Standardwerte aus $config.dat geladen (und der STOPMESS Interrupt aktiviert):

    Code
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3 
    BAS (#INITMOV,0 )

    Damit bewegt sich schonmal was!


    30 Jahre Rückwärtskompatibilität schön und gut - das bedeutet aber auch, dass 30 Jahre Zeit waren, an der Dokumentation zu arbeiten!

  • 30 Jahre Rückwärtskompatibilität schön und gut - das bedeutet aber auch, dass 30 Jahre Zeit waren, an der Dokumentation zu arbeiten!

    Man kann auch Dokumentationen so umfangreich schreiben, dass sie niemand mehr liest!


    Prinzipiell reden wir hier von Basics, die an einer guten Schulung Dir beigebracht werden.

    Dann fällt der Einstieg in KRL relativ leicht.


    Oder selber mal überlegen, was vorgegeben sein muss, dass eine Bewegung stattfinden kann.

    Ist beim Roboter dasselbe wie bei anderen Werkzeugmaschinen. Ohne Werkzeug-, Basis-,Geschwindigkeiten-, Beschleunigungen-, ...., Vorgaben geht halt nichts.

    BAS (...,..) ist simpler Unterprog Aufruf mit Parameterübergabe. Ist dokumentiert, wie UP Aufruf geht.

    BAS.SRC ist ein KUKA Programm, der Dir gewisse Funktionen zur Verfügung stellt, die KUKA selbst in den ILF's verwendet. Die Du selbst aber auch nutzen kannst. Ist einsehbar und nachverfolgbar, was darin abläuft. Einzelne Systemvariablen darin sind gut dokumentiert.

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

  • Man kann auch Dokumentationen so umfangreich schreiben, dass sie niemand mehr liest!


    Prinzipiell reden wir hier von Basics, die an einer guten Schulung Dir beigebracht werden.

    Dann fällt der Einstieg in KRL relativ leicht.

    Hallo,

    wie eine gute Dokumentation aussehen kann, kann man sich bei ABB anschauen. Hier wird das komplette Rapid in zwei Dokumenten vollständig erklärt.


    Natürlich ersetzt auch diese Doku keine Schulung, aber man findet sich wesentlich besser und schneller zurecht als in den Dokumenten von KUKA.



    Grüße

    Thilbi

  • Hallo nochmal,


    ich habe nun versucht, (in KSS 8.7) die Parameter aus Inlineformularen zu übernehmen und anzupassen, muss dabei aber etwas übersehen: das unten folgende Test-Programm


    1. fährt den Spline-Block deutlich schneller als Schrittgeschwindigkeit ab, d.h. die von mir auf 50% reduzierten VEL, ACC und JERK Parameter scheinen keinen Einfluss zu haben (zumindest ist die anfängliche PTP-Bewegung deutlich langsamer)

    2. stoppt an tangentialen Übergängen


    Ich vermute 1. könnte am Geltungsbereich liegen - benötigt der SPLINE-Block die Parameter als WITH?

    Andererseits:

    Zitat

    Die Parameter (Tool, Base, Geschwindigkeit etc.), die dem Spline-

    Block zugewiesen werden, wirken sich genauso aus wie Zuweisungen

    vor dem Spline-Block.

    Welche Parameter/Variablen muss ich setzen, damit im T1 mit der eingestellten, reduzierten Geschwindigkeit gefahren wird?


    2. wird ja explizit in der Anleitung erwähnt:

    Meine Frage ist, warum ist so ein Workaround nötig, wenn der Vorteil des Spline-Blocks die optimale Bewegungsplanung ist? Sind bei tangentialen Übergängen die Werte (Jerk) nicht besser beherrschbar und berechenbarer als bei allen anderen Übergängen? Wenn ja, warum kann die Steuerung im Zweifel nicht die Geschwindigkeit des SCIRC-Segments auf das vorhergehende SLIN-Segment anwenden, so dass die Grenzwerte nicht überschritten werden?


    Der Hintergrund meiner Frage ist, dass ich eine konstante Geschwindigkeit auf dem Pfad benötige.


    Hier nun das Programm:



    Besten Dank!

  • Is' vielleicht nicht wirklich hilfreich, aber so macht das niemand und man versteht es auch nicht.


    ENTWEDER man programmiert mit den Inline-Formularen, gibt dort die Werte ein, die man braucht, und ist fertig damit.


    ODER man schreibt das Programm von Hand. Dann befüllt man aber keine LCPDAT und so'n Gedöns, sondern man schreibt die modalen(!) Zuweisungen an die passenden Stellen ins Programm. Im Idealfall ist dann die *.DAT komplett leer.



    Bei VEL = 2 m/s wirst Du in T1 keinen Unterschied bemerken, da der Robbi auf 0.25 m/s begrenzt. Standardmäßig nicht proportional, sondern eben gedeckelt (kann man aber irgendwo umschalten, wenn man das will).


    Bei PTP wird die Geschwindigkeit prozentual vom Maximum angegeben, deshalb merkste das da.

  • Hi,


    danke für die Hinweise!

    Ich möchte es ja direkt programmieren. Aber da ich die "passenden Stellen" noch nicht kenne, wollte ich es mir von den Inlineformularen abschauen... klappt nicht so gut :-/


    Das Beispiel aus der Doku für SLIN...

    ... benutzt undokumentierte Funktionen (aus bas.src) und die undefinierte Struktur LCPDAT2.


    Wie reduziere ich denn beispielsweise die Geschwindigkeit auf 0.1 m/s?

    Kann die Struktur bzw. ihr Attribut .AXIS_VEL im Funktionsaufruf spezifiziert werden?

    Analog für Beschleunigung (.ACC) und Ruck (.GEAR_JERK)...


    SPLINE WITH $VEL=SVEL_CP(0.1,,?), $ACC=SACC_CP(?), $JERK=SJERK(?)


    Gibt es irgendwo Beispielprogramme zum Lernen?

    Ich habe gerade erst OfficeLite (KSS auf virtueller Maschine) entdeckt, vielleicht können wir das anschaffen, dann könnte ich besser und schneller mit KRL experimentieren.

  • Ok, perfekt, danke.

    Jetzt sehe ich auch, was da (befürchtungsgemäß) passiert: er hält an jedem Übergang, entweder KSS03173: "Knick in XYZ-Bahn" oder KSS03174: "SLIN-SCIRC-Sequenz".


    Dann muss ich da jetzt wirklich überall kurze SPL-Segmente als Workaround einbauen (und so wird es auch bei Dosierungsanwendungen etc. gemacht?)?

  • Nur so als Hinweis: Der Spline is eigentlich so gedacht, daß man die gewünschte Kontur immer als Spline hat also mit SPLs modelliert. Die Verwendung von slin bzw scirc im Block sollte da die Ausnahme sein nicht umgekehrt.


    Fubini

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