Externe Achsen

Sie sollten in der Lage sein, den Treiber und den Postprozessor auch dann mit KUKA-Robotersteuerungen zu verwenden, wenn Sie externe Achsen wie einen Drehtisch einsetzen. Wir empfehlen die Verwendung eines nummerierten Koordinatensystems oder eines Koordinatensystems mit der korrekten Maschinendefinition, die bereits auf Ihrer Robotersteuerung definiert ist.

Die folgenden Dateien Ihrer KUKA-Robotersteuerung helfen Ihnen zu verstehen, wie das KUKA-System aufgebaut ist:

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

11.KRC\R1\System\bas.src

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

Wenn Sie einen Drehtisch verwenden, sollte die Position seines Ursprungs in einer MACHINE_DEF-Variablen der Datei config.dat definiert sein. Wer auch immer das System installiert hat, sollte ein Beispiel für die Erstellung eines Programms mit einem synchronisierten, auf der BAS-Funktion basierenden Drehtisch bereitgestellt haben.

Wenn Sie beispielsweise die BAS-Funktion in Ihrer SRC-Datei mit dem Flag ex_BASE und einem bestimmten Index aufrufen, etwa Index 9:

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

BAS(#ex_BASE,9)

Damit geben Sie an, dass Sie Index 9 Ihres MACHINE_FRAME_DAT verwenden möchten. Sie sollten außerdem die Definitionen von BAS und EX_BASE prüfen, um zu sehen, auf welchen Maschinenindex (MACH_IDX) sich Ihre Steuerung standardmäßig bezieht. Das direkt vor dem Aufruf der BAS-Funktion in Ihrer SRC-Datei definierte BASE_DATA-Array könnte einfach der Versatz Ihrer auf dem Drehtisch montierten Vorrichtung sein.

Wenn Sie einen mit dem Roboterarm synchronisierten Drehtisch verwenden, müssen Sie unter Umständen die Variable $BASE in Ihrem Postprozessor oder Treiber manuell so ändern, dass sie dem Ursprung Ihres Drehtisches entspricht.

Wenn Ihnen beispielsweise der BASE_DATA-Index 9 zur Verfügung steht, sollten Sie den folgenden Code mit Ihrem Treiber verwenden.

  ;--------

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

Für den Postprozessor könnten Sie die vorherige Zeile in der Funktion setFrame Ihres Postprozessors durch diese $BASE-Definition ersetzen, wenn Sie den Versatz zwischen dem Drehtisch und Ihrer Vorrichtung berücksichtigen möchten:

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

Alternativ können Sie bei Verwendung des Treibers das Koordinatensystem isolieren, indem Sie das unten beschriebene Verfahren befolgen (sodass Sie die Kinematik Ihrer externen Achsen in RoboDK nicht exakt nachbilden müssen).

Um beispielsweise den RoboDK-Treiber standardmäßig verwenden zu können, sollte die Kinematik Ihrer in der Robotersteuerung definierten externen Achsen mit der in RoboDK erstellten Kinematik übereinstimmen. Wenn Sie außerdem einen Drehtisch verwenden, sollte dessen Nullpunkt mit der in RoboDK definierten Position des Drehtisches übereinstimmen.

Gehen Sie wie folgt vor, um den Treiber mit einem bekannten Koordinatensystem zu verwenden:

1.Wählen Sie ExtrasOptionenRegisterkarte Treiber.

2.Aktivieren Sie die Option Kartesische Koordinaten in Bezug auf das Bezugssystem bereitstellen.

Robots KUKA - Bild 16

3.Ersetzen Sie die Variable $BASE in Ihrer Programmdatei RoboDKsync.src durch das Koordinatensystem, das Sie verwenden möchten.

Wenn Sie beispielsweise das Bezugssystem Nummer 5 verwenden möchten, sollte die Datei RoboDKsync.src wie folgt aussehen (die erste Zeile ist auskommentiert, Sie finden sie etwa in Zeile 25):

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

$BASE = BASE_DATA[5]

Dieses Koordinatensystem muss in der KUKA-Robotersteuerung definiert worden sein, und RoboDK wird diesen Wert nicht überschreiben.