แกนภายนอก

แม้ว่าคุณจะมีแกนภายนอก เช่น โต๊ะหมุน คุณควรจะสามารถใช้ไดร์เวอร์และหน่วยประมวลผลกับตัวควบคุมหุ่นยนต์ KUKA ได้ ขอแนะนำให้ใช้ระบบพิกัดแบบมีหมายเลข หรือระบบพิกัดที่มีการกำหนดเครื่อง (machine definition) ที่ถูกต้อง ซึ่งถูกกำหนดไว้แล้วในตัวควบคุมหุ่นยนต์

ไฟล์ต่อไปนี้ของตัวควบคุมหุ่นยนต์ KUKA จะช่วยให้คุณเข้าใจว่าระบบ KUKA ถูกสร้างขึ้นอย่างไร:

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

2.KRC\R1\System\bas.src

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

หากคุณมีโต๊ะหมุน ตำแหน่งจุดกำเนิดของโต๊ะหมุนควรถูกกำหนดไว้ในตัวแปร MACHINE_DEF ของไฟล์ config.dat ผู้ที่ติดตั้งระบบของคุณควรมีตัวอย่างการสร้างโปรแกรมโดยใช้โต๊ะหมุนที่ซิงโครไนซ์กันโดยอิงจากฟังก์ชัน BAS

ตัวอย่างเช่น หากเรียกใช้ฟังก์ชัน BAS ในไฟล์ SRC โดยใช้แฟล็ก ex_BASE และดัชนีที่ระบุ (เช่น ดัชนี 9):

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

BAS(#ex_BASE,9)

นั่นหมายความว่าเราต้องการใช้ดัชนี 9 ของ MACHINE_FRAME_DATA นอกจากนี้ คุณควรตรวจสอบคำจำกัดความของ BAS และ EX_BASE เพื่อดูว่าตัวควบคุมอ้างอิงดัชนีเครื่อง (MACH_IDX) ใดโดยค่าเริ่มต้น อาร์เรย์ BASE_DATA ที่กำหนดไว้ก่อนการเรียกฟังก์ชัน BAS ในไฟล์ SRC อาจเป็นเพียงค่าชดเชยของฟิกซ์เจอร์ที่ยึดกับโต๊ะหมุนเท่านั้น

หากคุณมีโต๊ะหมุนที่ซิงโครไนซ์กับแขนหุ่นยนต์ คุณอาจต้องเปลี่ยนตัวแปร $BASE ด้วยตนเองในหน่วยประมวลผลหรือไดร์เวอร์ เพื่อตั้งค่าเป็นจุดกำเนิดของโต๊ะหมุน

ตัวอย่างเช่น หากดัชนี 9 ของ BASE_DATA ใช้งานได้ คุณควรใช้โค้ดต่อไปนี้ในไดร์เวอร์

  ;--------

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

ในหน่วยประมวลผล หากคุณต้องการคำนึงถึงค่าชดเชยระหว่างโต๊ะหมุนและฟิกซ์เจอร์ คุณสามารถแทนที่บรรทัดก่อนหน้าด้วยคำจำกัดความ $BASE นี้ในฟังก์ชัน setFrame ของหน่วยประมวลผล:

$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

Robots KUKA - ภาพ 27

1.แทนที่ตัวแปร $BASE ในไฟล์โปรแกรม RoboDKsync.src ด้วยระบบพิกัดที่คุณต้องการใช้

ตัวอย่างเช่น หากต้องการใช้เฟรมอ้างอิงหมายเลข 5 ไฟล์ RoboDKsync.src ควรมีลักษณะดังนี้ (บรรทัดแรกถูกคอมเมนต์ไว้ อยู่ที่บรรทัดประมาณที่ 25):

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

$BASE = BASE_DATA[5]

ระบบพิกัดนี้ต้องถูกกำหนดไว้ล่วงหน้าในตัวควบคุมหุ่นยนต์ KUKA และ RoboDK จะไม่เขียนทับค่านี้