Ejes externos

Debería poder utilizar el controlador y el postprocesador con controladores de robot KUKA incluso si tiene ejes externos, como una mesa giratoria. Recomendamos utilizar un sistema de coordenadas numerado o un sistema de coordenadas con la definición de máquina correcta que ya esté definida en su controlador de robot.

Los siguientes archivos de su controlador de robot KUKA le ayudarán a comprender cómo está construido el sistema KUKA:

41.KRC\R1\System\$config.dat

42.KRC\R1\System\bas.src

43.KRC\R1\Mada\$machine.dat

Si tiene una mesa giratoria, la posición del origen de la mesa giratoria debe definirse en una variable MACHINE_DEF del archivo config.dat. Quien haya instalado el sistema debería haber proporcionado un ejemplo para generar un programa usando una mesa giratoria sincronizada basada en la función BAS.

Por ejemplo, al llamar a la función BAS en su archivo SRC utilizando el flag ex_BASE y un índice determinado, como el índice 9:

BASE_DATA[9] = {FRAME: X 0, Y 0, Z 0, A 0, B 0, C 0}

BAS(#ex_BASE,9)

Está indicando que desea utilizar el índice 9 de su MACHINE_FRAME_DAT. También debería consultar las definiciones de BAS y EX_BASE para ver a qué índice de máquina (MACH_IDX) se refiere su controlador de forma predeterminada. El array BASE_DATA definido justo antes de llamar a la función BAS en su archivo SRC podría ser simplemente el offset de su utillaje montado en su mesa giratoria.

Es posible que deba cambiar manualmente la variable $BASE con su postprocesador o controlador para que sea el origen de su mesa giratoria si tiene una mesa giratoria sincronizada con su brazo robótico.

Por ejemplo, si tiene el índice 9 de BASE_DATA disponible, debe utilizar el siguiente código con su controlador.

  ;--------

  ; Replace this the $BASE definition by the following 2 lines

  ;    to make the KUKA RoboDKSynch driver work with external axes:

  ; $BASE = {FRAME: X 0, Y 0, Z 0, A 0, B 0, C 0} ; Comment this line

  BASE_DATA[9] = {FRAME: X 0, Y 0, Z 0, A 0, B 0, C 0}

  BAS(#ex_BASE,9)

  ; the BAS ex_BASE function links to a fixed MACHINE_DEF index

  ;   visible in the BAS function

 

  ; The previous two lines are equivalent to the following,

  ;   if the BAS function uses index 2 for the Machine definition

  ; BASE_DATA[9] = {FRAME: X 0, Y 0, Z 0, A 0, B 0, C 0}

  ; $BASE=EK(MACHINE_DEF[2].ROOT,MACHINE_DEF[2].MECH_TYPE,BASE_DATA[9])

  ;--------

$BASE=EK(EX_AX_DATA[1].ROOT,EX_AX_DATA[1].EX_KIN,EX_AX_DATA[1].OFFSET)

Para el postprocesador, podría reemplazar la línea anterior en la función setFrame de su postprocesador para usar esta definición de $BASE si desea tener en cuenta el desplazamiento entre la mesa giratoria y su utillaje:

$BASE=EK(MACHINE_DEF[2].ROOT, MACHINE_DEF[2].MECH_TYPE, {%s})' % self.pose_2_str(pose)

Alternativamente, cuando utiliza el controlador puede aislar el sistema de coordenadas siguiendo el procedimiento descrito a continuación (de modo que no necesite hacer coincidir perfectamente la cinemática de sus ejes externos en RoboDK).

Por ejemplo, para poder usar el controlador de RoboDK de forma predeterminada, la cinemática de sus ejes externos definida en el controlador del robot debe coincidir con la cinemática creada en RoboDK. Además, si tiene una mesa giratoria, el punto de origen de la mesa giratoria debe coincidir con la posición de la mesa giratoria definida en RoboDK.

Siga estos pasos para utilizar el controlador con un sistema de coordenadas conocido:

44.Seleccione la pestaña Herramientas Opciones Controladores.

45.Marque la opción Proporcionar coordenadas cartesianas con respecto a la referencia.

Robots KUKA - Imagen 18

46.Reemplace la variable $BASE del archivo de programa RoboDKsync.src por el sistema de coordenadas que desea utilizar.

Por ejemplo, si desea utilizar el sistema de referencia base número 5, el archivo RoboDKsync.src debería verse así (la primera línea está comentada; debería encontrarla alrededor de la línea 25):

; $BASE = {FRAME: X 0,Y 0,Z 0,A 0,B 0,C 0}

$BASE = BASE_DATA[5]

Este sistema de coordenadas debe haberse definido en el controlador de robot KUKA y RoboDK no sobrescribirá este valor.