턴테이블과같은외부축이있는경우에도 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_DATA의인덱스 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는이값을덮어쓰지않습니다.