Linearachse ganz primitiv simulieren

  • Hallo,


    ich plane Roboterbahnen in einem eigenen CAD/CAM-System und muß dafür in Zukunft auch Linearachsen (als BASE-Kinematiken, also zum Verschieben unserer Werkstückträger) einbeziehen. Um das machen zu können, wollte ich gerne mit WorkVisual 3.0, KUKA Sim Pro 2.2.1 und KUKA OfficeLite (KR C V8.2.16) eine ganz primitiv vorkonfigurierte Linearachse als BASE-Kinematik mit mathematischer Kopplung simulieren. Leider scheitere ich.


    Könnte mir jemand einen Tip geben?


    Meine Vorgehensweise ist folgende:


    1. In WorkVisual lege ich in einem Standardprojekt mit einem Roboter unter "Geräte\Steuerung" eine Linearachse vom Typ "Generic 1 Axis machine" an. Unter "Geometrie" laß ich diese Achse auf derselben Ebene wie den Roboter, wodurch es eine BASE-Kinematik wird (für ROBROOT-Kinematiken müsste man den Roboter auf den Flansch der Achse ziehen).
    2. Ich gehe mit der rechten Maustaste auf meine Linearachse, wähle "Maschinendatenkonfiguration" und gebe dort Werte ein, die zum größten Teil den Default-Werten entsprechen. Bei "Achsenkennung" wähle ich "Linear". Unter Transformation der Achse habe ich alle Werte auf 0 gelassen. Das müsste doch bedeuten, daß die Achse parallel zum Roboter ausgerichtet ist, sich also in "Roboterblickrichtung" bewegen wird.
    3. Ich installiere das Projekt nach Office Lite. Was mich wundert: in der Datei $config.dat des Projekts ist die Zeile MACHINE_DEF[2] unverändert. Bei manchen Codebeispielen für externe Achsen wird in der Base-Definition auf MACHINE_DEF[2] verwiesen. Brauche ich das nicht auch? Muß ich MACHINE_DEF[2] von Hand definieren?
    4. Wenn ich ein Programm schreibe und die folgenden Testzeilen eingebe, dann bewegt sich der Roboter zwischen LIN Test1 und LIN Test3 nicht, der E1-Wert ändert sich wie erwartet. Daraus ersehe ich, daß die mathematische Kopplung nicht aktiviert ist.


    DECL E6POS Test1
    DECL E6POS Test2
    DECL E6POS Test3


    Test1 = {X 630.08, Y -273.73, Z 30, A 0, B 0, C 0, E1 0}
    Test2 = {X 630.08, Y -273.73, Z 30, A 0, B 0, C 0, E1 100}
    Test3 = {X 630.08, Y -273.73, Z 30, A 0, B 0, C 0, E1 200}


    LIN Test1
    LIN Test2
    LIN Test3


    Bei mathematischer Kopplung müsste der Roboter doch die Bewegung der Linearachse "ausgleichen".


    Meine Hauptfrage lautet damit: wie kann ich die mathematische Kopplung einschalten? In der KUKA-PDF-Anleitung steht zum manuellen Anschalten: Menüfolge "Konfiguration>Setze Werkzeug/Basis" wählen. Bei mir gibt es unter "Konfiguration" aber kein "Setze Werkzeug/Basis". Bei "Mathematische Kopplung über Programm aktivieren" steht: "Satzanwahl auf einen Bewegungssatz mit gekoppelter BASE der Kinematik durchführen". Was ist denn das und wie macht man das?


    Für jede Hilfe wäre ich sehr dankbar!


    Ciao,
    Benjamin

  • Schritt für Schritt zum Roboterprofi!
  • Zu 1 u. 2 kann ich nichts sagen,
    denn zu 3: hab' das Zeug immer von Hand eingetragen. WoV trau' ich da nicht, bzw. wenn man's von Hand einträgt, dann steht's da auch.
    Such' mal hier im Forum, da gibt's schon einiges z.Bsp:
    http://www.roboterforum.de/rob…nematik-eingeben/msg16572
    oder
    http://www.roboterforum.de/rob…zur-base-gesucht/msg52726



    Zu 4: Siehe auch Link von oben. Man sollte im Programm schon eine gekoppelte Base angeben, ansonsten fährt der Roboter ja wohl im Base 0.

  • Hallo Hermann!



    Danke für den Hinweis. Ich antworte erst jetzt, weil ich so lange herumprobiert habe. Irgendwie komme ich nicht weiter und ich weiß nicht genau warum.


    Meine Probleme sind die folgenden:


    1. Wenn ich in WorkVisual eine externe Achse hinzufüge und deren Maschinendatenkonfiguration eingebe, dann werden von WorkVisual in der Datei $machine.dat die Zeilen


    $EX_KIN
    $ET1_AX
    $ET1_NAME
    $ET1_TA1KR
    $ET1_TA2A1


    und so weiter mit den von mir eingegebenen Daten befüllt. Das ist super, das verstehe ich und alle von mir eingegebenen Daten finde ich dort wieder.
    Mir ist dann aber noch nicht klar, was eine "gekoppelte Base" eigentlich ist und wie ich diese definiere und aktiviere. In den Beiträgen im Forum steht oft dieser Befehl für die Aktivierung:


    $BASE=EK(MACHINE_DEF[2].ROOT,MACHINE_DEF[2].MECH_TYPE,BASE_DATA[17]:{x 0,y 0,z 0,a 0,b 0,c 0})


    Mein Verständnisproblem dabei ist: wo wird dabei eigentlich festgelegt, daß ich meine erste externe Kinematik aktivieren will? MACHINE_DEF[2].ROOT und BASE_DATA[17] sind doch nur Frames?! Oder ist es so, daß wenn MACHINE_DEF[2].MECH_TYPE den Wert #EASYS hat, daß das dann die _erste_ externe Kinematik ist? Und bei #EBSYS wäre es die _zweite_? Und so weiter?


    2. Mein nächstes Problem ist, daß der Befehl


    $BASE=EK(MACHINE_DEF[2].ROOT,MACHINE_DEF[2].MECH_TYPE,BASE_DATA[17]:{x 0,y 0,z 0,a 0,b 0,c 0})


    nach der Definition in WorkVisual noch nicht funktioniert. Die MACHINE_DEF[]-Daten sind nämlich nicht vorhanden. Ich habe aber schon festgestellt, daß ich diese Daten definieren kann, wenn ich in Office Lite die Konfiguration


    Menü->Start-up->Calibrate->Base->Numeric input und
    Menü->Start-up->Calibrate->External kinematic system->Root point (numeric)


    durchführe. Ist das die richtige Vorgehensweise? Dadurch wird in der $config.dat eine Zeile


    MACHINE_DEF[2]={...}


    eingetragen.


    Leider kann ich meine Programme danach nicht mehr ausführen. Bereits im INI-Fold in der Zeile


    BASISTECH INI


    tritt die Fehlermeldung "Value assignment inadmissible" auf. Ich habe nicht feststellen können, woran das liegt. Muß man neben den Konfigurationspunkten Base->Numeric input und External kinematic system->Root point (numeric) noch mehr konfigurieren?


    Wenn ich External kinematic system->Offset (numeric) eingeben will, dann kommt immer die Fehlermeldung "External machine must be calibrated first". Aber wie kann ich die externe Achse denn virtuell kalibrieren?


    Für Hinweise, Anregungen und Erklärungen wäre ich sehr dankbar. Ich habe bisher die Dokumentationen KS_83_SI_de.pdf und KSS_83_configuration_of_kinematic_systems_de.pdf von KUKA studiert und auch hier im Forum und per Google viel gesucht, aber ich bin noch nicht schlauer.


    Ciao,
    Benjamin

  • Ich habe weitergespielt und versuche mal, meine eigenen Fragen zu beantworten:


    Woher die Fehlermeldung "Value assignment inadmissible" kam, weiß ich nicht. Die KUKA-Fehlermeldungen sind meines Erachtens meist mehr als nichtssagend, sie sind fast wie Hohn! Ich habe das Projekt und die externe Achse in WorkVisual neu aufgesetzt und dann kam die Fehlermeldung nicht mehr! So etwas ist echt zum Heulen!


    Außerdem: ich glaube jetzt verstanden zu haben, daß meine Vermutung richtig war: ich brauch keine Einträge in der Datei $config.dat. Durch die Befehle


    DECL FRAME PART_BASE_DATA
    $BASE=EK({X 0, Y 0, Z 0, A 0, B 0, C 0},#EASYS,PART_BASE_DATA)


    wird die _erste_ externe Kinematik (durch das "A" in #EASYS festgelegt) aktiviert. Der erste übergebene Frame ist der Root der externen Kinematik, der letzte Frame ist der gewünschte Base-Frame.


    Ich versuche mal, mit diesen Ideen weiterzukommen.


    Was ich mich ernsthaft frage: bin ich der einzige, der diese Probleme hat? Oder benutzen so wenige externe Kinematiken? Oder kennen sich von Anfang an (durch Schulungen?) so gut aus, daß diese ganzen Probleme, die ich habe, nicht auftreten?

  • Das Reizwort war wohl "WorkVisual" und überhaupt die simulierte Umgebung sowie die Forderung, es GENAU wissen zu wollen. Der KUKA-Inbetriebnehmer pflegt sich eher an der realen Anlage so durchzuwurschteln. Man ist da gewohnt, dass einem die Lösung in den Sinn kommt, während man mit dem KCP in der Hand irgendwas macht, und weiß anschließend nicht mehr genau, worin die besteht.
    Ich hab' das neulich noch erlebt, ein Kollege musste eine rotatorische Zusatzachse in Betrieb nehmen, was ich schon öfters gemacht hatte, allerdings nicht bei KRC4. Manchmal fragte er mich irgendwas, und ich konnte es nicht sagen. Als ich dann aber das Panel in der Hand hatte, lagen die Antworten näher.
    Ausserdem scheint hier eh gerade nicht viel los zu sein. Sind alle bei der Arbeit ;)


    Der erste an EK übergebene Frame definiert allerdings den Fußpunkt der externen Kinematik. In einer realen Maschine ist das nie A 0, sondern wird einmal eingemessen und liegt dann eben dort, wo Du es nicht eintragen willst; einfach nur deshalb, damit es unempfindlich gegen Veränderungen ist. Es definiert ja im Wortsinne einen Teil der Maschine. Wenn Du da einen NULLFRAME verwendest, mag das für die Simulation erst einmal ausreichen, im wirklichen Leben allerdings fehlt dann ein wesentliches Glied der Kette.


    In einer $machine.dat gibt es mehrere Platzhalter für externe Kinematiken, die sich sogar verketten lassen. Die erste ist eben #EASYS, und die dort definierten Eigenschaften und Verlinkungen werden mit dieser Aufzählungsvariablen assoziiert.


    Grüße,
    Michael

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