SPLINE mit externen Daten

  • Hallo


    Wir möchten gerne eine SPLINE-Bewegung mit Positionsdaten aus einem Excel-File erzeugen. Da sich die Anzahl der Punkte stehts ändern kann, muss das ganze etwas dynamisch funktionieren.


    Die Idee war nun, innerhalb des .dat-Files einen Frame-Array mit den Positionen zu erstellen und den SPLINE mithilfe eines FOR-Blocks kontinuierlich abzufahren. Leider kann ich innerhalb des SPLINE-Blocks keine FOR-Anweisungen einfügen. Hat da jemand eine elegante Methode, wie ich so etwas umsetzen könnte? Die Schnittstelle zu Excel ist erstmal sekundär, da wir hier schon einen Ansatz haben. Zu Testzwecken werde ich vorerst alles mal auf dem KCP programmieren.

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


    kann man sagen welche Punktanzahl möglich sein wird?
    Du kannst ja die Punkte einfach untereinander programmieren ohne FOR-Befehl.


    Wenn z.B. mind. 4 und max. 10 Punkte für den Spline benötigt werden, so brauchst
    du einfach nur 7 unterschiedliche Splines programmieren welche du je nach Punktanzahl auswählen kannst.
    Evtl. kannst auch immer die max. Punktzahl als Spline anlegen und die restlichen, nicht benötigten, Punkte
    auf annährend die gleiche Position legen. Ob dies geht muss man testen.


    Ist alles nicht schön könnte aber weiterhelfen.


    Gruß
    Twister

    Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...

  • Da die Punkte von einer Bewegungsanalyse von anatomischen Gelenken stammen, ist die Anzahl stark unterschiedlich und auch deutlich mehr als nur 10....eher gegen 1000 wenn nicht noch mehr. ;)


    Eine Idee war auch, das ich jeweils nur den aktuellen Punkt an die KRC sende und das Excel mit meiner eigenen Softwareapplikation durchlaufe. Aber da sehe ich das Problem, dass ich keine kontinuierliche Bewegung realisieren kann. Alternativ könnte ich natürlich das Source-File direkt mittels meiner Applikation erstellen...aber für den Moment geht mir das ein wenig zu weit.


    EDIT:


    Zusätzlich habe ich noch ein weiteres Problem. Ich habe versucht, innerhalb des SPLINE-Blocks die Punkte nicht über das Inline-Formular sondern direkt über hardcoding zu programmieren. Dadurch erhalte ich die Fehlermeldung:


    "Erster Zielpunkt im Spline muss vollständig initialisiert sein"


    Das gleiche passiert, wenn ich die Punkte teache und dann die Arraywerte zuweise. Im .Dat werden dadurch auch die Parameter für Status/Turn des E6POS gelöscht und nur das Frame reingeschrieben. Ich dachte, das bei einer solchen Wertzuweisung die nicht geänderten Parameter einfach von der vorangegangen Position übernommen werden? Grundsätzlich geht es hier wohl darum, wie ich einen E6POS mittels FRAME verändere =)


    Einmal editiert, zuletzt von dene ()

  • Hallo dene,


    nochmals drei Ansätze
    1.) muss es eine Spline-Bewegung sein, oder reicht LIN überschliffen?
    2.) Spline-Bewegungen kann man auch überschleifen und somit hat man immer einen Spline-Block mit z.B. 2 Punkten ohne FOR-Befehl dazwischen
    3.) KUKA bietet eine CNC-Option an welche wohl große CAD-CAM Datenmengen bearbeiten kann.


    Gruß
    Twister

    Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...


  • 1. Könnte ausreichen. Hier werde ich mal testen, wie die Bewegungen aussehen. Das Problem könnte hier halt sein, das je nach Aufnahme und Messfrequenz die Punkte sehr nahe beeinander liegen und ein Überschleifen die Bewegung nicht sauber reproduziert.
    2. Hier ist wieder das Problem, wie ich das effizienten implementieren kann.
    3. Schon wieder zahlen für ein Softwarepaket? Lieber nicht ;)


    Wie gesagt ansonsten bleibt wohl nur das erstellen der Programme direkt über unsere Applikation, da ich so auch grosse SPLINE-Blöcke automatisiert erstellen kann und den Vorteil hätte, das ich wirklich alles vom externen Laptop aus steuern kann. Mal sehn wo es hinläuft.


    Danke jedenfalls für die Inputs...hilft mir schon mal weiter beim ausprobieren :supi:

  • Hallo Dene,


    wir haben auch schon mehrere Ansätze verfolgt,
    aus Excel Daten zum Roboter zu übertragen.


    Mich würde es interessieren,
    wie die Schnittstelle zwischen Excel und KUKA aussieht.
    Da wir bis jetzt nichts wirkliches hingekriegt haben.


    MFG
    Sergej

  • So ich habe mal eine kleine Applikation programmiert, welche mir ein .csv einliest und daraus ein .dat/.src aufbereitet. Dabei habe ich einerseits ein Template von der KRC4 und eines aus OrangeEdit verwendet und über die App die FRAMES und den SPLINE-Block ergänzt. Anschliessend wollte ich das File manuell auf die KRC schieben doch leider funktioniert das nicht. Es kommt immer die Fehlermeldung, dass das .src fehlerhaft sei.


    Habe schon verschiedenes ausprobiert (Header etc.) doch selbst ein absolutes Basic-File ohne Fahrbefehle lässt sich nicht auf die KRC schieben. Woran könnte das liegen? Verschieben tue ich im Expert Modus direkt über das HMI. Echt mühsam wenn solche "einfachen" Dinge einfach nicht funktionieren.


    Edit:
    Hab jetzt mal noch 2 absolut identische Programme erzeugt. Eines von Hand direkt im Notpad++ angepasst, so das es funktioniert und ich es als Template verwenden kann. mit Der App mache ich eine Kopie und ersetzte die FRAMES. Das Template lässt sich auf die KRC laden und ausführen, das erzeugte Programm aber nicht. Funkt mir da Windows bei der Kopie irgendwie rein, sodass die KRC das File nicht mehr annehmen will?
    Im Anhang findet ihr die Files. Test funktioniert (Template) und Spline funktioniert nicht (erzeugt durch Kopieren des Template).
    Könnte das jemand vielleicht mal in OfficeLite ausführen?

  • Mach ich genau so. Also ich speichere die Files auf einem Netzlaufwerkordner (D:\Transfer\) und verschiebe dann im HMI die Files in den R1. Habe auch schon versucht direkt in der Windowsoberfläche die Files im Explorer zu verschieben. Dann erkennt die KRC jedoch die Files nicht mehr als Modul sondern kann den Datentyp nicht mehr zuordnen.


    Frage mich wirklich langsam ob der Fehler vielleicht in meiner Applikation liegt, aber die Files die rauskommen sehen grundsätzlich gut aus. Die Frage ist halt ob die KRC noch irgendwelche Attribute auf den Files braucht, welche beim Kopieren in C# nicht übernommen werden.

    Einmal editiert, zuletzt von dene ()

  • Hallo,


    versuch doch mal einfach dein Programm nicht Spline zu nennen sondern irgendwie anders. Also statt


    DEF SPLINE()


    in der ersten Zeile


    DEF MYSPLINE()


    und denke dann auch daran den Filenamen analog zu ändern. ICh vermute mal stark für KRL ist SPLINE ein geschütztes Keyword, das den Beginn eines Splineblocks kennzeichnet. Da ist übrigens nicht KRL zu doof, sondern das gibt es in allen anderen Programmiersprachen genauso. Man wird auch in C keine Routinen anlegen können, die z.B. for heißen, da man dann den Compiler mit der for-Schleife durcheinander bringen würde.


    Fubini

  • Danke für den Hinweis...ich wollte mich gerade daran machen, diese Erkenntnis hier niederzuschrieben. Habs nach langem Ausprobieren endlich geschafft und es scheint effektiv der Name zu sein. Wiedermal etwas sehr naheliegendes und klar aus anderen Sprachen ist das auch bekannt. Da ich aber normalerweise mit Entwicklungsumgebungen arbeite wird man da recht schnell darauf hingewiesen. Leider hat mir die Fehlermeldung von KUKA, dass IM Modul Spline eine Fehldefinition vorhanden ist, eher weniger geholfen, da SPLINE die Fehldefinition war. Naja...wieder was gelernt auch wenn mich der Spass einige Stunden und Nerven gekostet hat.


    Schönes Weekend :ylsuper:

    Einmal editiert, zuletzt von dene ()

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