Vous devriez pouvoir utiliser le driver et le postprocesseur avec les contrôleurs de robot KUKA même si vous avez des axes externes tels qu'une table tournante. Nous recommandons d'utiliser un système de coordonnées numéroté ou un système de coordonnées avec la définition de machine correcte déjà définie sur votre contrôleur de robot.
Les fichiers suivants de votre contrôleur de robot KUKA vous aideront à comprendre comment le système KUKA est construit :
40.KRC\R1\System\$config.dat
41.KRC\R1\System\bas.src
42.KRC\R1\Mada\$machine.dat
Si vous avez une table tournante, la position de l'origine de la table tournante doit être définie dans une variable MACHINE_DEF du fichier config.dat. La personne qui a installé le système devrait avoir fourni un exemple pour générer un programme utilisant une table tournante synchronisée basée sur la fonction BAS.
Par exemple, lorsque vous appelez la fonction BAS dans votre fichier SRC en utilisant le flag ex_BASE et un certain index, tel que l'index 9 :
BASE_DATA[9] = {FRAME: X 0, Y 0, Z 0, A 0, B 0, C 0}
BAS(#ex_BASE,9)
Vous indiquez que vous souhaitez utiliser l'index 9 de votre MACHINE_FRAME_DAT. Vous devriez également consulter les définitions BAS et EX_BASE pour voir à quel index de machine (MACH_IDX) votre contrôleur fait référence par défaut. Le tableau BASE_DATA défini juste avant l'appel de la fonction BAS dans votre fichier SRC pourrait être simplement le décalage de votre outillage monté sur votre table tournante.
Il se peut que vous deviez modifier manuellement la variable $BASE avec votre postprocesseur ou driver pour qu'elle corresponde à l'origine de votre table tournante si vous avez une table tournante synchronisée avec votre bras robotique.
Par exemple, si vous disposez de l'index 9 de BASE_DATA, vous devez utiliser le code suivant avec votre 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)
Pour le postprocesseur, vous pourriez remplacer la ligne précédente dans la fonction setFrame de votre postprocesseur pour utiliser cette définition de $BASE si vous souhaitez tenir compte du décalage entre la table tournante et votre outillage :
$BASE=EK(MACHINE_DEF[2].ROOT, MACHINE_DEF[2].MECH_TYPE, {%s})' % self.pose_2_str(pose)
Alternativement, lorsque vous utilisez le driver, vous pouvez isoler le système de coordonnées en suivant la procédure décrite ci-dessous (afin de ne pas avoir besoin de faire correspondre parfaitement la cinématique de vos axes externes dans RoboDK).
Par exemple, pour pouvoir utiliser le driver RoboDK par défaut, la cinématique de vos axes externes définie dans le contrôleur du robot doit correspondre à la cinématique créée dans RoboDK. De plus, si vous avez une table tournante, le point d'origine de la table tournante doit correspondre à la position de la table tournante définie dans RoboDK.
Suivez ces étapes pour utiliser le driver avec un système de coordonnées connu :
43.Sélectionnez l'onglet Outils Options Drivers.
44.Cochez l'option Fournir les coordonnées cartésiennes par rapport à la référence.

45.Remplacez la variable $BASE de votre fichier de programme RoboDKsync.src par le système de coordonnées que vous souhaitez utiliser.
Par exemple, si vous souhaitez utiliser le système de référence base numéro 5, le fichier RoboDKsync.src devrait ressembler à ceci (la première ligne est commentée ; vous devriez la trouver aux alentours de la ligne 25) :
; $BASE = {FRAME: X 0,Y 0,Z 0,A 0,B 0,C 0}
$BASE = BASE_DATA[5]
Ce système de coordonnées doit avoir été défini dans le contrôleur de robot KUKA et RoboDK ne remplacera pas cette valeur.