Eixos externos

Você deve poder usar o driver e o pós-processador com os controladores de robôs da KUKA, mesmo que tenha eixos externos, como uma plataforma giratória. Recomendamos que você use um sistema de coordenadas numeradas ou um sistema de coordenadas com a definição de máquina correta que já esteja definida no controlador do robô.

Os seguintes arquivos do controlador do robô KUKA ajudarão você a entender como o sistema KUKA é construído:

KRC\R1\System\$config.dat

KRC\R1\System\bas.src

KRC\R1\Mada\$machine.dat

Se você tiver uma plataforma giratória, a posição da origem da plataforma giratória deverá ser definida em uma variável MACHINE_DEF do arquivo config.dat. Quem instalou o sistema deve ter fornecido um exemplo para gerar um programa usando uma plataforma giratória sincronizada com base na função BAS.

Por exemplo, quando Você chama a função BAS em seu arquivo SRC usando o sinalizador ex_BASE e um determinado índice, como o índice 9:

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

BAS(#ex_BASE,9)

Você está dizendo que deseja usar o índice 9 do MACHINE_FRAME_DAT. Você também deve examinar as definições BAS e EX_BASE para ver a qual índice de máquina (MACH_IDX) seu controlador está se referindo por padrão. A matriz BASE_DATA definida logo antes de chamar a função BAS no arquivo SRC pode ser apenas o deslocamento do dispositivo montado na plataforma giratória.

Talvez seja necessário alterar manualmente a variável $BASE com o pós-processador ou driver para que seja a origem da plataforma giratória se você tiver uma plataforma giratória sincronizada com o braço do robô.

Por exemplo, se você tiver o índice BASE_DATA 9 disponível, deverá usar o seguinte código com o driver.

  ;--------

  ; 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 o pós-processador, você poderia substituir a linha anterior na função setFrame do pós-processador para usar essa definição $BASE se quiser levar em conta o deslocamento entre a plataforma giratória e o dispositivo de fixação:

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

Como alternativa, ao usar o driver, você pode isolar o sistema de coordenadas seguindo o procedimento descrito abaixo (para que não seja necessário combinar perfeitamente a cinemática dos eixos externos no RoboDK).

Por exemplo, para poder usar o driver do RoboDK por padrão, a cinemática dos eixos externos definidos no controlador do robô deve corresponder à cinemática criada no RoboDK. Além disso, se você tiver uma plataforma giratória, o ponto raiz da plataforma giratória deve corresponder à posição da plataforma giratória definida no RoboDK.

Siga estas etapas para usar o driver usando um sistema de coordenadas conhecido:

1.Selecione Ferramentas ➔ Opções ➔ guia Drivers.

2.Marque a opção Fornecer coordenadas cartesianas com relação à referência.

Robots KUKA - Imagem 35

3.Substitua a variável $BASE do seu arquivo de programa RoboDKsync.src pelo sistema de coordenadas que você deseja usar.

Por exemplo, se você quiser usar o frame de referência base número 5, o arquivo RoboDKsync.src deverá ter a seguinte aparência (a primeira linha está comentada, Você deverá encontrá-la por volta da linha 25):

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

$BASE = BASE_DATA[5]

Esse sistema de coordenadas deve ter sido definido no controlador do robô KUKA e o RoboDK não substituirá esse valor.