Assi esterni

Dovresti poter utilizzare il driver e il post processore con i controllori robot KUKA anche se disponi di assi esterni come una tavola rotante. Ti consigliamo di utilizzare un sistema di coordinate numerato oppure un sistema di coordinate con la corretta definizione macchina già impostata sul tuo controller robot.

I seguenti file del tuo controller robot KUKA ti aiuteranno a comprendere come è strutturato il sistema KUKA:

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

43.KRC\R1\System\bas.src

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

Se disponi di una tavola rotante, la posizione dell'origine della tavola dovrebbe essere definita in una variabile MACHINE_DEF del file config.dat. Chiunque abbia installato il sistema dovrebbe aver fornito un esempio per generare un programma che utilizza una tavola rotante sincronizzata basata sulla funzione BAS.

Per esempio, quando richiami la funzione BAS nel tuo file SRC utilizzando il flag ex_BASE e un determinato indice, come l'indice 9:

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

BAS(#ex_BASE,9)

Stai indicando che vuoi utilizzare l'indice 9 del tuo MACHINE_FRAME_DAT. Dovresti anche controllare le definizioni BAS ed EX_BASE per vedere a quale indice macchina (MACH_IDX) fa riferimento il tuo controller per impostazione predefinita. L'array BASE_DATA definito appena prima di richiamare la funzione BAS nel tuo file SRC potrebbe essere semplicemente l'offset del tuo attrezzo montato sulla tavola rotante.

Potrebbe essere necessario modificare manualmente la variabile $BASE con il tuo post processore o driver affinché corrisponda all'origine della tua tavola rotante, se disponi di una tavola rotante sincronizzata con il tuo braccio robotico.

Per esempio, se disponi dell'indice 9 di BASE_DATA, dovresti utilizzare il seguente codice con il tuo driver.

  ;--------

  ; Sostituisci questa definizione di $BASE con le 2 righe seguenti

  ;    per far funzionare il driver KUKA RoboDKSynch con gli assi esterni:

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

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

  BAS(#ex_BASE,9)

  ; la funzione BAS ex_BASE si collega a un indice MACHINE_DEF fisso

  ;   visibile nella funzione BAS

 

  ; Le due righe precedenti sono equivalenti alle seguenti,

  ;   se la funzione BAS utilizza l'indice 2 per la definizione della macchina

  ; 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)

Per il post processore potresti sostituire la riga precedente nella funzione setFrame del tuo post processore per utilizzare questa definizione di $BASE, se vuoi tenere conto dell'offset tra la tavola rotante e il tuo attrezzo:

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

In alternativa, quando utilizzi il driver puoi isolare il sistema di coordinate seguendo la procedura descritta di seguito (in modo da non dover far corrispondere perfettamente la cinematica dei tuoi assi esterni in RoboDK).

Per esempio, per poter utilizzare il driver RoboDK per impostazione predefinita, la cinematica dei tuoi assi esterni definita nel controller del robot dovrebbe corrispondere alla cinematica creata in RoboDK. Inoltre, se disponi di una tavola rotante, il punto di origine della tavola dovrebbe corrispondere alla posizione della tavola definita in RoboDK.

Segui questi passaggi per utilizzare il driver con un sistema di coordinate noto:

45.Seleziona StrumentiOpzionischeda Driver.

46.Seleziona l'opzione Fornisci coordinate cartesiane rispetto al riferimento.

Robots KUKA - Figura 20

47.Sostituisci la variabile $BASE del tuo file di programma RoboDKsync.src con il sistema di coordinate che desideri utilizzare.

Per esempio, se vuoi utilizzare il sistema di riferimento base numero 5, il file RoboDKsync.src dovrebbe avere questo aspetto (la prima riga è commentata, dovresti trovarla intorno alla riga 25):

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

$BASE = BASE_DATA[5]

Questo sistema di coordinate deve essere stato definito nel controller robot KUKA e RoboDK non sovrascriverà questo valore.