ターンテーブルなどの外部軸がある場合でも、KUKAロボットコントローラーでドライバーとポストプロセッサーを使用できるはずです。ロボットコントローラーにすでに定義されている、番号付きの座標系または正しいマシン定義を持つ座標系を使用することをお勧めします。
KUKAロボットコントローラーの以下のファイルは、KUKAシステムがどのように構築されているかを理解するのに役立ちます:
1.KRC\R1\System\$config.dat
2.KRC\R1\System\bas.src
3.KRC\R1\Mada\$machine.dat
ターンテーブルをお持ちの場合、ターンテーブルの原点の位置は、config.datファイルのMACHINE_DEF変数で定義されている必要があります。システムを設置した担当者は、BAS関数に基づいて同期されたターンテーブルを使用してプログラムを生成する例を提供しているはずです。
例えば、SRCファイル内でex_BASEフラグと特定のインデックス(インデックス9など)を使用してBAS関数を呼び出す場合:
BASE_DATA[9] = {FRAME: X 0, Y 0, Z 0, A 0, B 0, C 0}
BAS(#ex_BASE,9)
これは、MACHINE_FRAME_DATのインデックス9を使用したいことを意味します。また、コントローラーがデフォルトでどのマシンインデックス(MACH_IDX)を参照しているかを確認するために、BASおよびEX_BASEの定義も確認する必要があります。SRCファイル内でBAS関数を呼び出す直前に定義されるBASE_DATA配列は、ターンテーブルに取り付けられた治具のオフセットにすぎない場合があります。
ロボットアームと同期したターンテーブルをお持ちの場合、ポストプロセッサーまたはドライバーで$BASE変数を手動で変更し、ターンテーブルの原点に設定する必要がある場合があります。
例えば、BASE_DATAのインデックス9が利用可能な場合、ドライバーで次のコードを使用する必要があります。
;--------
; 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)
ポストプロセッサーでは、ターンテーブルと治具の間のオフセットを考慮したい場合、ポストプロセッサーのsetFrame関数内の前の行をこの$BASE定義に置き換えることができます:
$BASE=EK(MACHINE_DEF[2].ROOT, MACHINE_DEF[2].MECH_TYPE, {%s})' % self.pose_2_str(pose)
あるいは、ドライバーを使用する場合は、以下に説明する手順に従って座標系を分離することもできます(そのため、RoboDK内で外部軸の運動学を完全に一致させる必要はありません)。
例えば、RoboDKドライバーをデフォルトで使用できるようにするには、ロボットコントローラーで定義された外部軸の運動学が、RoboDKで作成された運動学と一致している必要があります。また、ターンテーブルをお持ちの場合、ターンテーブルのルートポイントは、RoboDKで定義されたターンテーブルの位置と一致している必要があります。
既知の座標系を使用してドライバーを使用するには、次の手順に従います:
1.Tools→OptionsのDriversタブを選択します。
2.Provide Cartesian coordinates with respect to the referenceオプションをオンにします。

1.RoboDKsync.srcプログラムファイルの$BASE変数を、使用したい座標系に置き換えます。
例えば、ベース参照系番号5を使用したい場合、RoboDKsync.srcファイルは次のようになります(最初の行はコメントアウトされており、25行目付近にあります):
; $BASE = {FRAME: X 0,Y 0,Z 0,A 0,B 0,C 0}
$BASE = BASE_DATA[5]
この座標系はKUKAロボットコントローラー内であらかじめ定義されている必要があり、RoboDKはこの値を上書きしません。