Basisprogrammierung für Dreh-Kipptisch

  • Hallo,


    Als Teil eines Studentenprojektes soll ich ein Programm schreiben, bei dem sich die Basis des Werkstückes synchron mit den externen Achsen eines Dreh-Kipptisches dreht.

    Bei dem Roboter handelt es sich um einen Kuka KR30-Ha, und die Steuerung hat die Versionskennung V8.3.257/KUKA8.3 .

    Die Externen-Achsen sind in den Maschinendaten eingepflegt und konnten in einem Testprogramm mithilfe einer E6POS und einer PTP Bewegung angesprochen werden.

    Code: $machine.dat
    DECL EX_KIN $EX_KIN={ET1 #EASYS,ET2 #None,ET3 #NONE,ET4 #NONE,ET5 #NONE,ET6 #NONE} ;EXTERNE KINEMATIKEN #NONE,#EASYS,#EBSYS,#ECSYS,#EDSYS,#EESYS,#EFSYS,#ERSYS
    DECL ET_AX $ET1_AX={TR_A1 #E1,TR_A2 #E2,TR_A3 #NONE} ;EXTERNE ACHSEN #NONE, #E1, #E2, #E3, #E4, #E5, #E6
    CHAR $ET1_NAME[20] ;NAME DER TRANSFORMATION ET1 MAXIMAL 20 ZEICHEN
    $ET1_NAME[]="Robatec_DKTisch"
    FRAME $ET1_TA1KR={X 0.0,Y 0.0,Z 713.302,A 178.913,B 89.9210,C 180.000} ;FRAME ZWISCHEN A1 UND FUSSPUNKT DER KIN IN TRAFO ET1
    FRAME $ET1_TA2A1={X -9.63600,Y 0.847000,Z 911.412,A 0.0,B -90.0000,C 0.0} ;ZWISCHEN A2 UND A1
    FRAME $ET1_TA3A2={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN A3 UND A2
    FRAME $ET1_TFLA3={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0} ;ZWISCHEN FL UND A3
    FRAME $ET1_TPINFL={X 190.000,Y 0.0,Z 108.400,A 0.0,B 0.0,C 0.0} ;ZWISCHEN MESSPUNKT UND FL

    Es existiert auch eine Basis, (Basis1) die im Handbetrieb zwar funktioniert und kalibiriert ist, aber aus dem Programm heraus auf dem Weltkoordinatensystem liegt.

    Ich habe jetzt versucht, die Basis über folgenden Code im Programm einzubauen:

    Code
    ; ---- Setting reference (Base) ----
     Using external axes
    $BASE=EK(EX_AX_DATA[1].ROOT,EX_AX_DATA[1].EX_KIN,EX_AX_DATA[1].OFFSET)
    $ACT_EX_AX=1

    Leider hat das nicht funktioniert mit dem Fehler, dass die Deklarierungen zu dieser Zeile fehlen.

    An dieser Stelle habe ich also schon erfolglos mehrere Deklarationen ausprobiert.

    Wie würde hier die richtige Syntax aussehen, oder muss in der Initialisierung etwas hinzugefügt werden?

  • Schritt für Schritt zum Roboterprofi!
  • Bei richtiger Konfiguration brauchst Du kein Programm dafür schreiben, die Verknüpfung der Koordinatensysteme wird von der Steuerung korrekt umgesetzt.

    Steht in der $config.dat eine vernünftige Maschinenkonfiguration unter

    DECL MACHINE_DEF_T MACHINE_DEF[16] ?

  • Moin Student,


    wie der Sklave schon schreibt, ist die Kinematik dem Roboter schon bekannt und kann im Programm als Basis in den Punkten angewählt werden. Dazu kannst du einen Blick in die Config.Dat schmeißen welche Machine_Def_T verwendet wurde , muss nicht zwingend die 16 sein.

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Beim Blick in die config ist mir nichts besonderes aufgefallen. Der Dreh-Kipptisch ist auf dem Index 2 hinterlegt:

    MACHINE_DEF[2]={NAME[] "Robatec_DKTisch",COOP_KRC_INDEX 1,PARENT[] "WORLD",ROOT {X 72.7810,Y 1376.10205,Z 711.085,A -0.0230000,B -0.0410000,C -1.48000},MECH_TYPE #EASYS,GEOMETRY[] "ObjectId = 1363640490"}

    Ein paar Zeilen später wird er für die Base geladen:

    DECL MACHINE_FRAME_T MACHINE_FRAME_DAT[32]

    MACHINE_FRAME_DAT[1]={MACH_DEF_INDEX 2,PARENT[] "Robatec_DKTisch",GEOMETRY[] "ObjectId = -207405864"}

  • Okay, wenn du jetzt im Programm die Base 2 als Basis einträgst bist du automatisch damit mathematisch gekoppelt, selbiges gilt auch fürs Handverfahren, wenn du als Basis die Base 2 anwählst.

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Wir haben gestern die Basis 2 getestet.

    Leider hat das so nicht funktioniert, wir konnten aber mithilfe der Infos aus der Config.dat weiter suchen.

    Mit der Angepassten Zeile

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

    hat dann alles funktioniert, da nun die Kopplung auch richtig geladen wird.


    Vielen Dank :danke: euer Hinweis hat uns über den Berg gebracht.

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