คลังบทเรียน / การเขียนโปรแกรม CNC

บทที่ 10

คำสั่งเบ็ดเตล็ด — คำสั่ง M และโปรแกรมย่อย

คำสั่ง M ของเครื่อง CNC การหมุนและหยุดสปินเดิล M03 M04 M05 การหยุดสปินเดิลที่มุมเดิม M19 การเลือกและเปลี่ยนเครื่องมือ T M06 น้ำหล่อเย็น M08 M09 การหยุดและจบโปรแกรม M00 M01 M02 M30 โปรแกรมย่อย M98 M99 และ M97 ของ Haas เวลาทำงานของคำสั่ง M ในบรรทัดเดียวกับการเคลื่อนที่ และคำสั่ง M ของผู้ผลิตเครื่อง

บทที่ 8 และบทที่ 9 อธิบายคำสั่ง G ซึ่งกำหนดการเคลื่อนที่และโหมดของชุดควบคุม บทนี้อธิบาย คำสั่งเบ็ดเตล็ด (Miscellaneous function) หรือคำสั่ง M ซึ่งสั่งงานส่วนอื่นของเครื่องที่ไม่ใช่การเคลื่อนที่ของแกน เช่น สปินเดิล น้ำหล่อเย็น และระบบเปลี่ยนเครื่องมือ รวมถึงคำสั่งที่ควบคุมลำดับของโปรแกรม

คำสั่ง M ต่างจากคำสั่ง G ตรงที่ ส่วนใหญ่ถูกกำหนดโดยผู้ผลิตเครื่อง ชุดควบคุมส่งรหัส M ไปให้ส่วน PMC ตามที่อธิบายในบทที่ 3 และโปรแกรมใน PMC ที่ผู้ผลิตเครื่องเขียนไว้เป็นผู้ตัดสินว่ารหัสนั้นทำอะไร มีเพียงกลุ่มเล็กๆ ที่ความหมายตรงกันแทบทุกเครื่อง ซึ่งเป็นเนื้อหาหลักของบทนี้ ส่วนรหัสอื่นต้องดูจากคู่มือของเครื่องที่ใช้เสมอ

ตารางที่ 10.1 คำสั่ง M ที่ความหมายตรงกันบนเครื่องส่วนใหญ่
คำสั่ง ความหมาย
M00 หยุดโปรแกรม
M01 หยุดตามเงื่อนไข เมื่อเปิดสวิตช์ OPT STOP
M02 จบโปรแกรม
M03 สปินเดิลหมุนตามเข็มนาฬิกา
M04 สปินเดิลหมุนทวนเข็มนาฬิกา
M05 หยุดสปินเดิล
M06 เปลี่ยนเครื่องมือ (เครื่องที่มี ATC)
M08 เปิดน้ำหล่อเย็น
M09 ปิดน้ำหล่อเย็น
M19 หยุดสปินเดิลที่มุมเดิมทุกครั้ง
M30 จบโปรแกรมและย้อนกลับต้นโปรแกรม
M98 เรียกโปรแกรมย่อย
M99 จบโปรแกรมย่อย

10.1 สปินเดิล

10.1.1 M03 M04 และ M05

M03 และ M04 สั่งสปินเดิลให้หมุนด้วยความเร็ว S ที่สั่งไว้ M05 หยุดสปินเดิล ทิศตามเข็มนาฬิกาหรือทวนเข็มนาฬิกา มองจากด้านหลังของสปินเดิลไปทางเครื่องมือหรือชิ้นงาน

ทิศหมุนของสปินเดิล M03 และ M04 มองจากด้านหลังของสปินเดิลไปทางเครื่องมือหรือชิ้นงานเสมอ เครื่องกัดแนวตั้ง สปินเดิลอยู่ด้านบน เครื่องมืออยู่ด้านล่าง ภาพที่เห็นเมื่อมองจากด้านบน ทิศที่มอง หัวสปินเดิล เครื่องมือ M03 ตามเข็มนาฬิกา เครื่องมือแบบขวา M04 ทวนเข็มนาฬิกา เครื่องมือแบบซ้าย เครื่องกลึงแนวนอน หัวเครื่องอยู่ซ้ายมือของผู้ปฏิบัติงาน ภาพที่เห็นเมื่อมองจากด้านหลังหัวเครื่อง ทิศที่มอง หัวเครื่อง หัวจับ ชิ้นงาน หน้า หลัง M03 ตามเข็มนาฬิกา ผิวบนหมุนมาด้านหน้าเครื่อง หน้า หลัง M04 ทวนเข็มนาฬิกา ผิวบนหมุนไปด้านหลังเครื่อง
รูปที่ 10.1 ทิศหมุนของสปินเดิล M03 และ M04 บนเครื่องกัดและเครื่องกลึง
  • เครื่องกัด เครื่องมือตัดทั่วไปเป็นแบบขวา (Right-hand) ใช้ M03 ส่วน M04 ใช้กับเครื่องมือแบบซ้าย เช่น ดอกต๊าปเกลียวซ้าย
  • เครื่องกลึง ทิศที่ถูกขึ้นกับตำแหน่งป้อมมีดและการติดตั้งมีดว่าหงายหรือคว่ำ หลักที่ใช้ได้ทุกเครื่องคือ ชิ้นงานต้องหมุนเข้าหาคมตัด ผิวคายเศษของเม็ดมีดต้องหันรับเนื้องานที่หมุนเข้ามา ถ้าหมุนผิดทิศ เนื้องานจะกดใต้เม็ดมีด ไม่เกิดการตัดเฉือน และเม็ดมีดแตกได้ทันที โรงงานส่วนใหญ่ติดตั้งมีดให้ใช้ทิศเดียวกันทั้งป้อมมีด แล้วเขียนทิศนั้นไว้ในหัวโปรแกรมหรือเอกสารการตั้งเครื่อง

M03 และ M04 ไม่มีความเร็วรอบเป็นของตัวเอง ชุดควบคุมใช้ค่า S ที่จำไว้ในขณะนั้น ตามที่อธิบายในบทที่ 7 ผลของ M03 ที่ไม่มี S ในบรรทัดเดียวกันจึงมีสองแบบ

  • มีค่า S ค้างอยู่ในเครื่อง จากการสั่งในโหมด MDI จากโปรแกรมก่อนหน้า หรือจากเครื่องมือตัวก่อน สปินเดิลหมุนทันทีด้วยค่า S นั้น ซึ่งอาจเร็วหรือช้าเกินไปสำหรับเครื่องมือที่อยู่ในสปินเดิล
  • ยังไม่มีค่า S เช่น เครื่องที่เพิ่งเปิด สปินเดิลไม่หมุน แต่ชุดควบคุมจำทิศหมุนไว้แล้ว เมื่อพบ S ในบรรทัดถัดไป สปินเดิลจึงเริ่มหมุนที่บรรทัดนั้น ทั้งที่บรรทัดนั้นไม่มี M03 หรือ M04

โปรแกรมเดียวกันจึงทำงานต่างกันได้ตามสิ่งที่เครื่องทำมาก่อนหน้า วิธีเริ่มหมุนสปินเดิลที่ให้ผลเหมือนกันทุกครั้งมีดังนี้

  • เขียน S กับ M03 หรือ M04 ไว้ในบรรทัดเดียวกันเสมอ เช่น S1200 M03 ทั้งในโปรแกรมและในโหมด MDI
  • เขียนซ้ำในทุกชุดคำสั่งของเครื่องมือ ไม่พึ่งค่า S ที่ค้างมาจากเครื่องมือตัวก่อน ชุดคำสั่งนั้นจึงเริ่มเดินได้เอง
  • เริ่มหมุนก่อนเครื่องมือเข้าใกล้ชิ้นงาน ตามปกติอยู่ในบรรทัดที่เคลื่อนที่เร็วไปตำแหน่งแรก เช่น G90 G54 G00 X15. Y15. S900 M03 สปินเดิลจึงถึงความเร็วก่อนบรรทัดที่เริ่มตัด
  • บนเครื่องกลึงที่ใช้ G96 สั่ง G50 S__ จำกัดรอบสูงสุดก่อนบรรทัดที่มี M03

ก่อนกลับทิศหมุนหรือเปลี่ยนช่วงเกียร์ของสปินเดิล ให้สั่ง M05 ก่อนเสมอ เครื่องรุ่นใหม่ส่วนใหญ่หยุดสปินเดิลให้เองเมื่อพบ M04 ขณะหมุน M03 อยู่ หรือเมื่อพบคำสั่งเปลี่ยนเกียร์ แต่บางเครื่องไม่หยุดให้และขึ้น Alarm การเขียน M05 ไว้เองทำให้โปรแกรมใช้ได้ทุกเครื่อง

เมื่อ M05 อยู่ในบรรทัดเดียวกับคำสั่งเคลื่อนที่ เครื่องเคลื่อนที่ให้เสร็จก่อน แล้วสปินเดิลจึงหยุด สปินเดิลจึงยังหมุนอยู่ตลอดการเคลื่อนที่ของบรรทัดนั้น ลำดับนี้อธิบายในหัวข้อคำสั่ง M ในบรรทัดเดียวกับการเคลื่อนที่

10.1.2 ช่วงเกียร์ของสปินเดิล

เกียร์ระหว่างมอเตอร์กับสปินเดิลพบใน เครื่องรุ่นเก่า และเครื่องขนาดใหญ่ที่ออกแบบมาสำหรับงานตัดหนัก มีสองถึงสี่ช่วง เครื่องรุ่นใหม่ขนาดเล็กถึงกลางส่วนใหญ่ไม่มีเกียร์แล้ว เพราะมอเตอร์ให้แรงบิดพอตลอดช่วงความเร็วรอบ เครื่องเหล่านี้ไม่มีคำสั่งเปลี่ยนเกียร์ และข้ามหัวข้อนี้ได้

เหตุผลที่ต้องมีเกียร์คือมอเตอร์สปินเดิลให้กำลังเต็มเฉพาะเมื่อหมุนเร็วกว่าความเร็วรอบค่าหนึ่ง ต่ำกว่านั้นกำลังจะลดลงตามความเร็วรอบ เกียร์ต่ำ ทดให้มอเตอร์หมุนเร็วขณะที่สปินเดิลหมุนช้า สปินเดิลจึงได้แรงบิดสูงและกำลังเต็มที่ความเร็วรอบต่ำ แลกกับความเร็วรอบสูงสุดที่ลดลง ส่วน เกียร์สูง ให้ความเร็วรอบสูง แต่แรงบิดที่ความเร็วรอบต่ำน้อย

  • เกียร์ต่ำ ใช้กับงานความเร็วรอบต่ำที่ต้องการแรงบิด เช่น หัวกัดปาดหน้าขนาดใหญ่ ดอกสว่านและดอกต๊าปขนาดใหญ่ และการกลึงหยาบชิ้นงานเส้นผ่านศูนย์กลางใหญ่
  • เกียร์สูง ใช้กับงานความเร็วรอบสูง เช่น เครื่องมือขนาดเล็กและงานละเอียด
  • ค่า S ที่ทำได้ทั้งสองเกียร์ ให้เลือกเกียร์ต่ำเมื่อต้องการแรงบิด ถ้าตัดหนักในเกียร์สูงที่ความเร็วรอบต่ำ สปินเดิลจะชะลอหรือหยุดกลางการตัด

การเลือกเกียร์มีผลต่อการเขียนโปรแกรมสองจุด

  • ใครเป็นผู้เลือกเกียร์ Machining center จำนวนมากเลือกเกียร์เองตามค่า S ผู้เขียนโปรแกรมไม่ต้องสั่ง ส่วนเครื่องกลึงมักต้องสั่งเองด้วยคำสั่ง M ซึ่งรหัสที่พบบ่อยคือ M41 ถึง M44 จากเกียร์ต่ำไปสูง ตามตารางในหัวข้อคำสั่ง M ของผู้ผลิตเครื่อง
  • ความเร็วผิวคงที่ G96 ความเร็วรอบเปลี่ยนตามเส้นผ่านศูนย์กลางตลอดการตัด แต่เกียร์เปลี่ยนกลางการตัดไม่ได้ จึงต้องเลือกเกียร์ที่ครอบคลุมความเร็วรอบทั้งช่วงของการตัดนั้น ถ้าความเร็วรอบที่ต้องการสูงกว่าขีดสูงสุดของเกียร์ สปินเดิลจะหมุนค้างที่ขีดนั้น และความเร็วผิวจะต่ำกว่าที่สั่ง
M05                     (หยุดสปินเดิลก่อนเปลี่ยนเกียร์)
M41                     (เกียร์ต่ำ สำหรับกลึงหยาบ)
G50 S1200               (จำกัดรอบสูงสุด)
G96 S180 M03            (ความเร็วผิวคงที่ 180 ม./นาที)

ช่วงความเร็วรอบของแต่ละเกียร์ต่างกันทุกเครื่อง ให้ดูจากคู่มือเครื่อง

10.1.3 M19 หยุดสปินเดิลที่มุมเดิมทุกครั้ง

M05 หยุดสปินเดิลโดยปล่อยให้ชะลอจนหยุดเอง สปินเดิลจึงหยุดที่มุมใดก็ได้ และหมุนต่อด้วยมือได้ ส่วน M19 หยุดสปินเดิลที่มุมเดิมทุกครั้ง (Spindle orientation) ชุดควบคุมอ่านมุมจากตัวเข้ารหัสของสปินเดิล หมุนไปหยุดที่มุมอ้างอิงที่ผู้ผลิตเครื่องตั้งไว้ในพารามิเตอร์ แล้วล็อกสปินเดิลไว้ที่มุมนั้นจนกว่าจะสั่ง M03 M04 หรือ M05 เครื่องบางรุ่นกำหนดมุมเองได้ เช่น M19 P90. บนเครื่อง Haas ให้ตรวจรูปแบบจากคู่มือเครื่อง

เหตุที่มุมของสปินเดิลสำคัญเห็นได้จากรูปด้านล่าง หน้าสปินเดิลมีสลักขับสองตัวยื่นลงมา และหน้าแปลนของหัวจับเครื่องมือมีร่องขับสองร่องรับสลักนั้น

หัวสปินเดิลและหัวจับเครื่องมือ ก่อนใส่เข้าด้วยกัน มองจากด้านล่างเฉียงขึ้น เห็นหน้าสปินเดิลและด้านล่างของหัวจับเครื่องมือ แขน ATC ดัน ขึ้นตามแกน หัวสปินเดิล สลักขับ (Drive key) สองตัว ด้านหน้าและด้านหลังของรูเทเปอร์ รูเทเปอร์ของสปินเดิล รับเทเปอร์ของหัวจับเครื่องมือ สลักดึง (Pull stud) กลไกในสปินเดิลดึงตรงนี้เพื่อล็อกหัวจับ เทเปอร์ของหัวจับเครื่องมือ ร่องขับ (Drive slot) ร่องบากที่หน้าแปลน อีกร่องอยู่ด้านหลัง ร่องสำหรับแขน ATC แขนจับหัวจับเครื่องมือที่ร่องนี้ เครื่องมือตัด เส้นประแสดงแนวที่สลักขับต้องตรงกับร่องขับ M19 หมุนสปินเดิลไปหยุดที่มุมนี้ก่อนเปลี่ยนเครื่องมือ
รูปที่ 10.2 หัวสปินเดิลและหัวจับเครื่องมือ สลักขับต้องตรงกับร่องขับ
เปลี่ยนเครื่องมือด้วย ATC: สลักขับต้องตรงร่อง หน้าสปินเดิล มองจากด้านล่าง สลักขับบนสปินเดิล ร่องขับของหัวจับเครื่องมือ M05 สลักขับหยุดที่มุมใดก็ได้ ไม่ตรงร่อง ATC ใส่เครื่องมือไม่ได้ M19 สลักขับหยุดที่มุมเดิมทุกครั้ง ตรงร่องพอดี คว้านละเอียด (G76) ในรู มองจากด้านบน 1 ขณะคว้าน คมมีดแตะผนังรู Q 2 ถึงก้นรู M19 หันคมมีดไปทิศเดิม เลื่อนออกจากผนังเป็นระยะ Q แล้วถอยขึ้น คมมีดไม่ขูดผิวรู
รูปที่ 10.3 การหยุดสปินเดิลที่มุมเดิมด้วย M19

มุมของสปินเดิลสำคัญในงานเหล่านี้

  • การเปลี่ยนเครื่องมือ หัวสปินเดิลมี สลักขับ (Drive key) สองตัวที่ส่งแรงบิดไปยังหัวจับเครื่องมือ หัวจับเครื่องมือจึงมีร่องขับให้สลักเข้าพอดี แขน ATC นำหัวจับเครื่องมือเข้ามาโดยหันร่องขับไปทิศเดิมเสมอ ถ้าสปินเดิลหยุดที่มุมอื่น สลักจะไม่ตรงร่องและใส่เครื่องมือไม่ได้ เครื่องส่วนใหญ่จึงสั่ง M19 ให้เองภายใน M06 ผู้เขียนโปรแกรมไม่ต้องสั่งเอง
  • การคว้านละเอียด เช่น คำสั่งคว้านสำเร็จรูป G76 ของ Fanuc เมื่อคว้านถึงก้นรู ถ้าถอยขึ้นตรงๆ คมมีดที่ยังแตะผนังจะขูดเป็นรอยเส้นตลอดความยาวรู ชุดควบคุมจึงสั่ง M19 ให้คมมีดหันไปทิศเดิม แล้วเลื่อนด้ามคว้านออกจากผนังเป็นระยะ Q ก่อนถอยขึ้น เพราะรู้ทิศของคมมีดแน่นอน จึงเลื่อนไปทางตรงข้ามคมมีดได้ถูกเสมอ ตอนตั้งเครื่องมือจึงต้องหันคมมีดของด้ามคว้านให้ตรงกับทิศที่เครื่องกำหนด
  • การวัดด้วยหัววัดบนหัวสปินเดิล (Spindle probe) หัววัดต้องหันไปทิศเดิมทุกครั้งที่วัด ค่าชดเชยของหัววัดที่ปรับไว้จึงใช้ได้ถูกต้อง

ในทางปฏิบัติ M19 แทบไม่ปรากฏในโปรแกรม เพราะงานทั้งสามข้างต้นจะมี M06 อยู่ภายใน ผู้เขียนโปรแกรมจึงไม่ต้องเขียน M19 เอง ที่ใช้บ่อยกว่าคือการสั่งใน MDI ตอนตั้งเครื่อง เช่น เพื่อดูว่าคมมีดของด้ามคว้านต้องหันไปทิศใด หรือตอนใส่เครื่องมือที่ต้องกำหนดทิศเข้าไปในสปินเดิล

M19 ล็อกสปินเดิลไว้ด้วยมอเตอร์ จึงห้ามใช้ขณะเครื่องมือยังแตะชิ้นงาน และอย่าหมุนเครื่องมือด้วยมือขณะสปินเดิลล็อกอยู่

10.2 เลือกและเปลี่ยนเครื่องมือ T M06

การเปลี่ยนเครื่องมือใช้สองคำ คือ T ซึ่งไม่ใช่คำสั่ง M แต่เป็นตัวอักษรนำของหมายเลขเครื่องมือ และ M06 ความหมายของ T ต่างกันบนเครื่องสองชนิด

ตารางที่ 10.2 คำสั่ง T บน Machining center และ Turning center
Machining center Turning center
คำสั่ง T เลือกเครื่องมือ ให้แม็กกาซีนนำมารอ หมุนป้อมมีดไปสถานีนั้นทันที
การเปลี่ยนเครื่องมือจริง M06 เกิดในคำสั่ง T เอง ไม่มี M06
ค่าชดเชยของเครื่องมือ สั่งแยกด้วย H และ D สองหลักหลังของ T
ตัวอย่าง T02 M06 แล้ว G43 H02 T0202

10.2.1 คำสั่ง T บน Machining center

T02 บอกชุดควบคุมว่าเครื่องมือตัวถัดไปคือหมายเลข 2 แม็กกาซีนหมุนนำเครื่องมือนั้นมาที่ตำแหน่งเปลี่ยน แต่ เครื่องมือในหัวสปินเดิลยังเป็นตัวเดิม จนกว่าจะพบ M06 แบบของ ATC และแม็กกาซีนอธิบายในบทที่ 4

  • หมายเลขหลัง T คือหมายเลขเครื่องมือ บนเครื่องแบบช่องคงที่ หมายเลขนี้ตรงกับหมายเลขช่องในแม็กกาซีน บนเครื่องแบบสุ่มช่อง เครื่องมือย้ายช่องทุกครั้งที่เปลี่ยน ชุดควบคุมจำเองว่าเครื่องมือหมายเลขใดอยู่ช่องใด โปรแกรมจึงเรียกด้วยหมายเลขเครื่องมือเสมอ ตามบทที่ 4
  • T ไม่เรียกค่าชดเชย ความยาวและรัศมีต้องสั่งแยกด้วย G43 H__ และ D__ ตามบทที่ 13 โรงงานส่วนใหญ่ใช้หมายเลข H และ D ตรงกับหมายเลข T เช่น T02 คู่กับ H02 ถ้าลืมเปลี่ยน H หลังเปลี่ยนเครื่องมือ เครื่องจะใช้ความยาวของเครื่องมือตัวก่อน
  • T02 M06 ในบรรทัดเดียวกัน เครื่องส่วนใหญ่หมุนแม็กกาซีนตาม T ก่อน แล้วจึงเปลี่ยนเครื่องมือ บางเครื่องต้องเขียน T และ M06 คนละบรรทัด ให้ตรวจจากคู่มือของเครื่อง
  • M06 ที่ไม่มี T เปลี่ยนเป็นเครื่องมือที่สั่ง T ไว้ล่าสุด ใช้ได้เมื่อเตรียมเครื่องมือไว้ล่วงหน้า ตามบทที่ 11 แต่ถ้าเริ่มโปรแกรมใหม่กลางคันที่บรรทัดนั้น เครื่องจะเปลี่ยนเป็นเครื่องมือที่รออยู่ในขณะนั้น ซึ่งอาจไม่ใช่ตัวที่ต้องการ การเขียน T ซ้ำในบรรทัด M06 ทุกครั้ง เช่น T02 M06 ทำให้ชุดคำสั่งของเครื่องมือเริ่มได้ด้วยตัวเอง
  • T00 M06 บนเครื่องจำนวนมากคือคืนเครื่องมือเข้าแม็กกาซีนโดยไม่นำตัวใหม่ออกมา หัวสปินเดิลจึงว่าง ใช้ก่อนใส่เครื่องมือด้วยมือหรือเมื่อจบงาน ให้ตรวจจากคู่มือของเครื่องก่อนใช้ รายละเอียดอยู่ในบทที่ 4

10.2.2 เครื่องที่เตรียมเครื่องมือล่วงหน้าได้และไม่ได้

คำสั่ง T ที่เขียนไว้ก่อน M06 จะนำเครื่องมือมารอได้หรือไม่ ขึ้นกับแบบของ ATC

คำสั่ง T03 แล้ว M06 บน ATC สองแบบ มองจากด้านหน้าเครื่อง · ตัวเลขคือหมายเลขเครื่องมือ · เครื่องมือสีจางอยู่ด้านหลังของแม็กกาซีน เครื่องมือ 02 กำลังตัด อ่าน T03 · เครื่องมือ 02 ยังตัดอยู่ อ่าน M06 · เปลี่ยนเครื่องมือ เครื่องมือ 03 อยู่ในหัวสปินเดิล ATC แบบแขนหมุน เตรียมเครื่องมือล่วงหน้าได้ T03 จานหมุน แล้วพลิกเครื่องมือ 03 ลงมาที่ตำแหน่งรอทันที M06 แขนจับเครื่องมือทั้งสองตัว ดึงลง หมุนสลับ แล้วดันขึ้น เวลาที่หัวสปินเดิลหยุดรอมีเพียงเวลาที่แขนหมุน 08 09 01 07 06 05 04 03 02 ตำแหน่งรอ แม็กกาซีนแบบจาน แขน ATC หัวสปินเดิล ATC แบบไม่มีแขน เตรียมเครื่องมือล่วงหน้าไม่ได้ T03 ชุดควบคุมจำหมายเลขไว้ แม็กกาซีนยังไม่ขยับ M06 รับ 02 คืน หัวสปินเดิลยกขึ้น หมุนหา 03 แล้วลงมารับ หัวสปินเดิลหยุดรอตลอดเวลาที่แม็กกาซีนเลื่อนและหมุน 07 08 01 02 06 05 04 03 ช่องว่างรอรับเครื่องมือ 02 คืน เครื่องมือ 02 กลับเข้าช่อง อยู่ด้านหลัง 04 แม็กกาซีนแบบร่ม หัวสปินเดิล
รูปที่ 10.4 คำสั่ง T แล้ว M06 บน ATC แบบแขนหมุนและแบบไม่มีแขน
  • ATC แบบแขนหมุน มีตำแหน่งรอ (Ready position) แยกจากหัวสปินเดิล แม็กกาซีนจึงหมุนได้อิสระขณะเครื่องมือตัวปัจจุบันตัด เมื่ออ่าน T03 แม็กกาซีนหมุนนำเครื่องมือ 03 มารอทันที และ M06 เหลือเพียงการสลับด้วยแขน เครื่องแบบนี้ ควรเขียน T ของเครื่องมือตัวถัดไปไว้ล่วงหน้า ต่อจากบรรทัด M06
  • ATC แบบไม่มีแขน แม็กกาซีนส่งและรับเครื่องมือกับหัวสปินเดิลโดยตรง ช่องว่างของเครื่องมือตัวปัจจุบันต้องอยู่ตรงหัวสปินเดิลเพื่อรับเครื่องมือคืน แม็กกาซีนจึงหมุนไปหาเครื่องมือตัวอื่นก่อนไม่ได้ เมื่ออ่าน T03 ชุดควบคุมเพียงจำหมายเลขไว้ การหมุนทั้งหมดเกิดใน M06 การเขียน T ล่วงหน้าจึง ไม่ลดเวลา บนเครื่องแบบนี้

วิธีดูว่าเครื่องเป็นแบบใด

  • ดูที่ตัวเครื่อง เครื่องแบบแขนหมุนมีแขนสองปลายอยู่ระหว่างแม็กกาซีนกับหัวสปินเดิล และกระบอกเครื่องมือที่พลิกลงมาตั้งข้างแขน เครื่องแบบไม่มีแขนมีแม็กกาซีนรูปร่มที่เครื่องมือแขวนอยู่รอบจาน และเลื่อนทั้งชุดเข้าหาหัวสปินเดิล
  • สั่ง T อย่างเดียวในโหมด MDI เช่น T05 โดยไม่มี M06 ถ้าแม็กกาซีนหมุน เครื่องเตรียมเครื่องมือล่วงหน้าได้ ถ้าไม่มีอะไรเคลื่อนที่ เครื่องจะหมุนเมื่อพบ M06 เท่านั้น

บรรทัด T03 M06 ที่มีทั้งสองคำใช้ได้กับเครื่องทั้งสองแบบ โปรแกรมที่อาจย้ายไปเดินบนเครื่องอื่นจึงควรเขียนแบบนี้ทุกครั้ง แล้วเพิ่มบรรทัด T ล่วงหน้าเฉพาะเมื่อเครื่องเป็นแบบแขนหมุน

10.2.3 การทำงานของ M06

ขั้นตอนภายใน M06 เป็นโปรแกรมของผู้ผลิตเครื่อง โดยทั่วไปมีลำดับดังนี้

  1. หยุดสปินเดิลและน้ำหล่อเย็น
  2. หยุดสปินเดิลที่มุมเดิม (M19) ให้สลักขับตรงกับร่องของหัวจับเครื่องมือ
  3. เคลื่อนแกน Z หรือแกนอื่นไปตำแหน่งเปลี่ยนเครื่องมือ
  4. แขน ATC หรือแม็กกาซีนสลับเครื่องมือ
  5. ส่งสัญญาณกลับให้ชุดควบคุมทำบรรทัดถัดไป

ข้อ 3 ต่างกันมากที่สุดระหว่างเครื่อง บางเครื่องพาแกน Z ไปตำแหน่งเปลี่ยนเครื่องมือเองโดยอัตโนมัติ บางเครื่องไม่พา และต้องให้โปรแกรมถอยแกน Z ไปก่อน ถ้าเขียนโปรแกรมโดยเข้าใจว่าเครื่องถอยให้ แต่เครื่องไม่ถอย แขน ATC จะชนเครื่องมือที่ยังอยู่ต่ำ ส่วนบางเครื่องมีระบบตรวจตำแหน่งแกน Z ก่อนเปลี่ยนเครื่องมือ จะขึ้น Alarm และหยุดเครื่องแทน วิธีที่ปลอดภัยบนทุกเครื่องคือ ถอยแกน Z เองก่อน M06 เสมอ ด้วย G91 G28 Z0 หรือ G30 ดังโปรแกรมตัวอย่างในบทที่ 11

บรรทัดรอบการเปลี่ยนเครื่องมือจึงมีลำดับที่ใช้ได้กับทุกเครื่องดังนี้

G80 M09                 (ยกเลิกคำสั่งเจาะ ปิดน้ำหล่อเย็น)
G91 G28 Z0              (ถอยแกน Z กลับจุดอ้างอิง)
M05                     (หยุดสปินเดิล)
T02 M06                 (เปลี่ยนเป็นเครื่องมือหมายเลข 2)
T03                     (เตรียมเครื่องมือหมายเลข 3 ไว้ล่วงหน้า)
G90 G54 G00 X15. Y15. S900 M03
G43 H02 Z50. M08        (ค่าชดเชยความยาวของเครื่องมือหมายเลข 2)
  • ก่อน M06 ยกเลิกการชดเชยรัศมี G40 และคำสั่งเจาะสำเร็จรูป G80 ถอยแกน Z และหยุดสปินเดิล
  • หลัง M06 สั่ง S และ M03 ใหม่ และเรียก G43 H__ ของเครื่องมือตัวใหม่ก่อนลงแกน Z ทุกครั้ง
  • หลังบรรทัด T03 หน้าจอแสดงหมายเลขเครื่องมือที่รอ ซึ่งไม่ใช่เครื่องมือในหัวสปินเดิล

10.2.4 คำสั่ง T บน Turning center

บนเครื่องกลึง ไม่มี M06 คำสั่ง T สี่หลักทำทั้งสองอย่างในคำเดียว สองหลักแรกคือสถานีบนป้อมมีด สองหลักหลังคือแถวของค่าชดเชย เช่น T0303 หมุนป้อมมีดไปสถานีที่ 3 และใช้ค่าชดเชยแถวที่ 3 ตามที่อธิบายในบทที่ 5

  • ป้อมมีดหมุนทันทีที่ชุดควบคุมอ่านคำสั่ง T ไม่มีการถอยให้เอง ป้อมมีดจึงต้องอยู่ในตำแหน่งที่เครื่องมือที่ยาวที่สุดหมุนผ่านได้โดยไม่ชนชิ้นงาน หัวจับ หรือยันศูนย์ท้าย ก่อน บรรทัดที่มี T
  • สองหลักหลังเลือกค่าชดเชย T0300 ยกเลิกค่าชดเชยของมีดสถานีที่ 3 และมีดตัวเดียวมีได้หลายแถว เช่น T0303 กับ T0313 รายละเอียดอยู่ในบทที่ 14
  • เขียน T ในบรรทัดของตัวเอง ไม่รวมกับการเคลื่อนที่ ให้ป้อมมีดหมุนเสร็จและค่าชดเชยมีผลก่อนบรรทัดที่เคลื่อนเข้าหาชิ้นงาน

10.3 น้ำหล่อเย็น M08 M09

M08 เปิดน้ำหล่อเย็น และ M09 ปิด ส่วนน้ำหล่อเย็นแบบอื่น เช่น ละอองน้ำมัน ลมเป่า และน้ำหล่อเย็นแรงดันสูงผ่านรูกลางสปินเดิล ใช้รหัส M ที่ผู้ผลิตเครื่องกำหนดเอง ต้องดูจากคู่มือของเครื่อง

  • เปิดน้ำหล่อเย็นก่อนเครื่องมือเข้าตัด นิยมเขียน M08 คู่กับบรรทัดที่เครื่องมือลงมาเหนือชิ้นงาน เช่น G43 H01 Z50. M08
  • ปิดก่อนถอยออกไปไกล เพื่อไม่ให้น้ำหล่อเย็นกระเด็นออกนอกเครื่องเมื่อเปิดประตู และลดน้ำที่ติดไปกับเศษ
  • งานบางอย่างไม่ใช้น้ำหล่อเย็น เช่น การกัดเหล็กหล่อบางชนิด หรือการกัดด้วยเม็ดมีดเซรามิก ซึ่งความร้อนที่เปลี่ยนเร็วจากน้ำหล่อเย็นทำให้คมตัดแตก

10.4 การหยุดและจบโปรแกรม

คำสั่งกลุ่มนี้ควบคุมลำดับการทำงานของโปรแกรมเอง ไม่ได้สั่งอุปกรณ์ทางกายภาพของเครื่อง จึงยังทำงานแม้เปิดสวิตช์ AUX LOCK ตามที่กล่าวในบทที่ 3

  • M00 (หยุดโปรแกรมอย่างไม่มีเงื่อนไข): ชุดควบคุมจะหยุดการทำงานทุกครั้งที่อ่านพบคำสั่งนี้ และรอจนกว่าผู้ปฏิบัติงานจะกดปุ่ม CYCLE START อีกครั้งจึงจะทำบรรทัดถัดไป ใช้เมื่อมีขั้นตอนที่ต้องให้คนทำด้วยมือทุกชิ้นอย่างแน่นอน เช่น พลิกกลับด้านชิ้นงาน ย้ายตำแหน่งแคลมป์จับยึด หรือเป่าเศษกลึงออกจากรูก่อนต๊าปเกลียว
  • M01 (หยุดตามเงื่อนไขเมื่อเปิดสวิตช์ OPT STOP): เป็นหนึ่งในคำสั่งที่มีประโยชน์ที่สุดในการผลิตจริง ทำงานร่วมกับสวิตช์หรือปุ่มกด OPT STOP (Optional Stop) บนแผงควบคุมหน้าเครื่อง:
    • เมื่อเปิดสวิตช์ OPT STOP เป็น ON: ชุดควบคุมจะหยุดทำงานเมื่อถึงบรรทัด M01 เหมือนกับ M00 เพื่อให้ผู้ปฏิบัติงานเปิดประตูเข้าไปเป่าเศษ วัดขนาดชิ้นงานชิ้นแรก หรือตรวจดูการสึกหรอของคมตัด
    • เมื่อปิดสวิตช์ OPT STOP เป็น OFF: ชุดควบคุมจะมองข้ามบรรทัด M01 ไปโดยสิ้นเชิง และตัดงานต่อเนื่องด้วยความเร็วเต็มที่โดยไม่หยุดชะงัก
    • กฎปฏิบัติสากล: นิยมใส่คำสั่ง M01 ไว้ท้ายชุดคำสั่งของเครื่องมือตัดทุกตัวเสมอ เพื่อให้ช่างเลือกได้ว่าจะสั่งหยุดตรวจวัดระหว่างทดสอบโปรแกรม หรือปล่อยให้เครื่องเดินงานต่อเนื่องในการผลิตจริง
  • M02 และ M30 (จบโปรแกรม):
    • M02: ในอดีตยุคเทปกระดาษเจาะรู M02 เพียงแค่สั่งหยุดการอ่านเทปเมื่อสิ้นสุดม้วนเทปโดยไม่กรอกลับ (Rewind) ชุดควบคุมรุ่นเก่าหลายรุ่นจึงหยุดเคอร์เซอร์ค้างไว้ที่บรรทัดสุดท้าย
    • M30: จบโปรแกรมและ ย้อนเคอร์เซอร์กลับไปที่บรรทัดแรกของโปรแกรมโดยอัตโนมัติ (Reset & Rewind) พร้อมสำหรับกด CYCLE START เดินงานชิ้นถัดไปได้ทันที นอกจากนี้ ชุดควบคุม Fanuc ส่วนใหญ่ยังผูกตัวนับชิ้นงานสำเร็จ (Parts Counter) ไว้กับคำสั่ง M30 เครื่องจักรสมัยใหม่จึงใช้ M30 เป็นมาตรฐานหลักทุกโปรแกรม

สปินเดิลและน้ำหล่อเย็นจะหยุดเมื่อพบ M00 หรือ M01 หรือไม่ ขึ้นกับผู้ผลิตเครื่อง บางเครื่องหยุดสปินเดิลและปิดน้ำหล่อเย็นให้ บางเครื่องปล่อยให้สปินเดิลหมุนต่อ และเมื่อกด CYCLE START เครื่องที่หยุดให้ก็ไม่ได้เปิดกลับให้เองทุกเครื่อง ชุดควบคุมทำบรรทัดถัดไปทันที โดยยังจำค่า S ค่า F และคำสั่ง G ที่ค้างอยู่ เช่น G01 ไว้ครบ โปรแกรมที่เขียนโดยเข้าใจลักษณะการทำงานของเครื่องผิดจึงอาจเกิดอันตรายได้สองแบบ

  • เข้าใจว่าเครื่องหยุดสปินเดิลให้ แต่เครื่องไม่หยุด ผู้ควบคุมเครื่องเอื้อมมือเข้าไปขณะเครื่องมือยังหมุน
  • เข้าใจว่าเครื่องเปิดสปินเดิลกลับให้ แต่เครื่องไม่เปิด เครื่องมือเดินเข้าชิ้นงานขณะที่สปินเดิลไม่หมุน และเครื่องมือหัก

วิธีที่ปลอดภัยบนทุกเครื่องคือ สั่งเองทั้งสองฝั่งของจุดหยุด สั่ง M05 และ M09 ก่อน M00 แล้วสั่ง M03 และ M08 ใหม่ก่อนบรรทัดที่เครื่องมือเข้าตัด

G00 Z50. M09            (ถอยขึ้น ปิดน้ำหล่อเย็น)
M05                     (หยุดสปินเดิล)
M00                     (หยุดให้เป่าเศษออกจากรู)
S800 M03                (สั่งสปินเดิลหมุนใหม่)
G00 Z5. M08             (ลงมาเหนือชิ้นงาน เปิดน้ำหล่อเย็นใหม่)

ตำแหน่งของ M01 และ M30 ในโปรแกรมทั้งโปรแกรมอยู่ในบทที่ 11

10.5 โปรแกรมย่อย M98 M99

โปรแกรมย่อย (Subprogram) คือโปรแกรมที่มีหมายเลข O ของตัวเอง และถูกเรียกจากโปรแกรมอื่นด้วย M98 เมื่อทำงานถึง M99 ชุดควบคุมจะกลับไปทำบรรทัดถัดจาก M98 ในโปรแกรมที่เรียก ใช้กับขั้นตอนที่ต้องทำซ้ำ ผู้เขียนโปรแกรมเขียนขั้นตอนนั้นครั้งเดียว แล้วเรียกใช้ได้หลายครั้ง

10.5.1 รูปแบบการเรียก

ชุดควบคุม Fanuc มีวิธีระบุจำนวนครั้งที่เรียกโปรแกรมย่อย 2 รูปแบบหลักตามรุ่นและพารามิเตอร์ของระบบ:

M98 P1004               (เรียกโปรแกรม O1004 จำนวน 1 ครั้ง)
M98 P1004 L3            (เรียกโปรแกรม O1004 จำนวน 3 ครั้ง — รูปแบบแยกด้วย L หรือ K)
M98 P31004              (เรียกโปรแกรม O1004 จำนวน 3 ครั้ง — รูปแบบรวมในแอดเดรส P เดียว)
  • รูปแบบรวมใน P (Fanuc Standard): สี่หลักท้ายสุดจะถูกตีความเป็น หมายเลขโปรแกรมย่อยเสมอ (O1004) ส่วนตัวเลขที่อยู่ข้างหน้าสี่หลักท้ายจะถูกตีความเป็น จำนวนรอบที่ทำซ้ำ (3 ครั้ง) เช่น หากต้องการเรียกโปรแกรม O0025 จำนวน 12 ครั้ง ให้เขียนเป็น M98 P120025
  • รูปแบบที่ใช้ L หรือ K: นิยมใช้บนชุดควบคุม Haas, Heidenhain หรือชุดควบคุม Fanuc ที่ตั้งพารามิเตอร์ให้รองรับ L จะช่วยให้อ่านเข้าใจง่ายขึ้นโดยระบุหมายเลขโปรแกรมที่ P และจำนวนรอบที่ L ตรงๆ

อันตราย จบโปรแกรมย่อยด้วย M99 เสมอ

ถ้าโปรแกรมย่อยไม่มี M99 ชุดควบคุมจะอ่านไปจนถึง % แล้วหยุดพร้อม Alarm PS5010 END OF RECORD งานค้างอยู่กลางรอบ โปรแกรมหลักไม่ได้ทำต่อ ผู้ควบคุมเครื่องต้องรีเซ็ตแล้วเริ่มใหม่จากบรรทัดที่เหมาะสม

ที่อันตรายกว่าคือจบโปรแกรมย่อยด้วย M30 หรือ M02 แทน M99 เพราะไม่มี Alarm ใดเตือน ชุดควบคุมถือว่าทั้งงานจบแล้วหลังเรียกโปรแกรมย่อยครั้งแรก งานที่เหลือในโปรแกรมหลักจึงไม่ถูกตัด แต่จากนอกเครื่องดูเหมือนรอบงานจบตามปกติ ชิ้นงานที่ตัดไม่ครบอาจหลุดไปถึงขั้นตอนถัดไปได้ ตรวจบรรทัดสุดท้ายของโปรแกรมย่อยทุกโปรแกรมก่อนเดินงานจริง

10.5.2 โปรแกรมย่อยกับจุดศูนย์ชิ้นงานหลายชุด: ชิ้นงานบนปากกาหลายตัว

ถ้าจับชิ้นงานเหมือนกันไว้บนปากกาหลายตัว และตั้งจุดศูนย์ชิ้นงานของแต่ละปากกาไว้คนละชุด เช่น G54 กับ G55 ตามที่อธิบายในบทที่ 6 โปรแกรมย่อยที่เขียนด้วยพิกัดแบบสัมบูรณ์ G90 จะตัดรูปร่างเดียวกันบนปากกาตัวใดก็ได้ เพียงเลือกจุดศูนย์ชิ้นงานก่อนเรียก

ตัวอย่างนี้กัดร่องสี่เหลี่ยม 20 × 20 มม. ลึก 2 มม. ด้วยดอกเอ็นมิลล์ Ø10 บนชิ้นงานขนาด 40 × 50 มม. สองชิ้น ที่จับไว้บนปากกาสองตัว จุดศูนย์ G54 อยู่ที่มุมซ้ายล่างของชิ้นแรก และ G55 อยู่ที่มุมซ้ายล่างของชิ้นที่สอง ซึ่งห่างออกไปในแกน X 60 มม. โปรแกรมหลัก O1001 เรียกโปรแกรมย่อย O1002 สองครั้ง ครั้งละจุดศูนย์ชิ้นงาน ทั้งสองโปรแกรมเก็บในหน่วยความจำของชุดควบคุมแยกกัน คนละหมายเลข O

โปรแกรมหลัก O1001

%
O1001 (TWO VISES)
(G54 X0 Y0 = VISE 1 PART LOWER LEFT  Z0 = TOP FACE)
(G55 X0 Y0 = VISE 2 PART LOWER LEFT  Z0 = TOP FACE)
(T03 END MILL D10)
N10 G17 G21 G40 G49 G80 G90 G94
N20 G91 G28 Z0
N30 G90
(T03 END MILL D10)
N100 T03 M06
N110 G90 G54 G00 X10. Y15. S2500 M03
N120 G43 H03 Z50. M08
N130 M98 P1002 (VISE 1)
N140 G55 (VISE 2)
N150 M98 P1002
N160 M09
N170 G91 G28 Z0
N180 G49
N190 M05
N200 G28 X0 Y0
N210 G90
N220 M30
%

ดูเครื่องมือเดินตั้งแต่ N10 ถึง N220 ได้ในตัวจำลองการตัด และBackplot

โปรแกรมย่อย O1002 ใช้พิกัดแบบสัมบูรณ์ G90 ของจุดศูนย์ชิ้นงานที่โปรแกรมหลักเลือกไว้

%
O1002 (SUB SQUARE GROOVE 20X20)
N1000 G90 G00 X10. Y15.
N1010 Z2.
N1020 G01 Z-2. F100
N1030 Y35. F300
N1040 X30.
N1050 Y15.
N1060 X10.
N1070 G00 Z50.
N1080 M99
%

ตัวจำลองด้านล่างเดินโปรแกรมตามลำดับที่ชุดควบคุมทำจริงชุดควบคุมเดินโปรแกรมนี้ตามลำดับดังนี้ เมื่อถึง M98 จะกระโดดไปทำ O1002 และเมื่อถึง M99 จะกลับมาทำบรรทัดถัดจาก M98 ให้สังเกตว่า

  • บรรทัด N140 G55 ไม่ทำให้เครื่องมือเคลื่อนที่ เพียงเปลี่ยนความหมายของพิกัดต่อจากนี้
  • เพราะรอบแรกจบด้วย G00 Z50. บรรทัดแรกของโปรแกรมย่อย G00 X10. Y15. ในรอบที่สองจึงพาเครื่องมือไปยังงานชิ้นที่สองที่ความสูง Z50 เครื่องมือจึงข้ามปากกาได้อย่างปลอดภัย
  • บนหน้าจอเครื่อง ค่า ABSOLUTE ในโปรแกรมย่อยเหมือนกันทั้งสองรอบ แต่ค่า MACHINE ต่างกัน 60 มม. ในแกน X

วิธีนี้ต่างจากหัวข้อถัดไป ตำแหน่งของรูปร่างมาจากจุดศูนย์ชิ้นงานที่เลือก ไม่ได้มาจากตำแหน่งของเครื่องมือตอนเรียก โปรแกรมย่อยจึงเริ่มจากตำแหน่งใดก็ได้ และค่าในโปรแกรมย่อยอ่านเทียบกับแบบงานได้ตรงๆ

10.5.3 โปรแกรมย่อยกับ G91: ทำรูปร่างเดิมซ้ำหลายตำแหน่ง

โปรแกรมย่อยที่เขียนด้วยพิกัดแบบสัมพัทธ์ G91 ทำรูปร่างเดียวกันได้ทุกที่ที่เครื่องมืออยู่ตอนเรียก ถ้าท้ายโปรแกรมย่อยเลื่อนเครื่องมือไปยังจุดเริ่มของตำแหน่งถัดไป การเรียกซ้ำหลายครั้งจะได้รูปร่างเรียงกันตามระยะที่กำหนด

ตัวอย่างนี้กัดร่องตรงยาว 20 มม. ลึก 2 มม. สามร่อง ห่างกันในแกน Y ทีละ 15 มม. ด้วยดอกเอ็นมิลล์ Ø10

โปรแกรมหลัก O1003

%
O1003 (MAIN 3 SLOTS)
(G54 X0 Y0 = LOWER LEFT CORNER  Z0 = TOP FACE)
(T03 END MILL D10)
N10 G17 G21 G40 G49 G80 G90 G94
N20 G91 G28 Z0
N30 G90
(T03 END MILL D10)
N100 T03 M06
N110 G90 G54 G00 X40. Y15. S2500 M03
N120 G43 H03 Z50. M08
N130 Z2. (2 ABOVE FIRST SLOT START)
N140 M98 P1004 L3 (3 SLOTS)
N150 G90 G00 Z50. M09 (ABSOLUTE AGAIN BEFORE ANY POSITION)
N160 G91 G28 Z0
N170 G49
N180 M05
N190 G28 X0 Y0
N200 G90
N210 M30
%

ดูเครื่องมือเดินตั้งแต่ N10 ถึง N210 ได้ในตัวจำลองการตัด และBackplot

โปรแกรมย่อย O1004 เขียนด้วยพิกัดแบบสัมพัทธ์ G91 ทุกบรรทัดจึงเลื่อนจากตำแหน่งที่เครื่องมืออยู่ และท้ายโปรแกรมพาเครื่องมือไปยังจุดเริ่มของร่องถัดไป

%
O1004 (SUB SLOT 20MM)
N1000 G91 G01 Z-4. F80 (DOWN 4 FROM Z2 TO Z-2)
N1010 X20. F300 (SLOT 20 LONG)
N1020 G00 Z4. (BACK UP TO Z2)
N1030 X-20. Y15. (TO NEXT SLOT START)
N1040 G90 (ABSOLUTE BEFORE RETURN)
N1050 M99
%

ตัวจำลองด้านล่างเดินโปรแกรมย่อย O1004 สามรอบตาม L3 ให้ดูตำแหน่งของเครื่องมือเมื่อจบแต่ละรอบเทียบกับตารางด้านล่าง และดูว่าช่องระบบพิกัดสลับระหว่าง G91 กับ G90 ทุกรอบภาพด้านล่างแสดงผลเมื่อเดินโปรแกรมย่อย O1004 ครบสามรอบตาม L3 ตารางถัดไปแสดงตำแหน่งของเครื่องมือเมื่อจบแต่ละรอบ ระบบพิกัดสลับระหว่าง G91 กับ G90 ทุกรอบ

ตารางที่ 10.3 ผลของการเรียกโปรแกรมย่อย O1004 สามครั้ง
การเรียกครั้งที่ ร่องที่ได้ ตำแหน่งเมื่อจบโปรแกรมย่อย
1 X40 ถึง X60 ที่ Y15 X40 Y30 Z2
2 X40 ถึง X60 ที่ Y30 X40 Y45 Z2
3 X40 ถึง X60 ที่ Y45 X40 Y60 Z2

ข้อสังเกตจากตัวอย่างนี้

  • โปรแกรมย่อยไม่รู้ตำแหน่งของตัวเอง ผลที่ได้ขึ้นกับว่าเครื่องมืออยู่ที่ใดตอนเรียก และความสูงเริ่มต้นต้องตรงกับที่โปรแกรมย่อยคาดไว้ ในตัวอย่างคือ Z2 พอดี ถ้าเรียกจาก Z50 ร่องจะอยู่ในอากาศทั้งหมด
  • โปรแกรมย่อยที่เปลี่ยนโหมดต้องคืนโหมด บรรทัด G90 ก่อน M99 คืนโหมดแบบสัมบูรณ์ให้โปรแกรมหลัก และโปรแกรมหลักก็ประกาศ G90 ซ้ำในบรรทัด N150 อีกชั้นหนึ่ง เพราะถ้าลืมคืนโหมด บรรทัด Z50. ในโปรแกรมหลักจะกลายเป็นพุ่งขึ้นอีก 50 มม. จากตำแหน่งปัจจุบัน
  • ตรวจตำแหน่งสุดท้ายด้วยแบบจำลอง ความผิดพลาดเพียงค่าเดียวในโปรแกรมย่อยจะสะสมไปทุกครั้งที่เรียก

10.5.4 ข้อควรรู้อื่น

  • โปรแกรมย่อยเรียกโปรแกรมย่อยต่อได้ เรียกว่าการเรียกซ้อน (Nesting) จำนวนชั้นสูงสุดขึ้นกับรุ่นของชุดควบคุม
  • ห้ามจบโปรแกรมย่อยด้วย M30 หรือ M02 เพราะจะจบทั้งโปรแกรม ไม่ได้กลับไปยังโปรแกรมที่เรียก
  • M99 ในโปรแกรมหลัก ทำให้โปรแกรมวนกลับไปต้นโปรแกรมไม่รู้จบ ใช้กับงานต่อเนื่อง เช่น เครื่องกลึงที่ใช้เครื่องป้อนเพลาอัตโนมัติ ซึ่งต้องมีตัวนับชิ้นหรือเงื่อนไขอื่นหยุดเครื่อง
  • M99 P__ กลับไปยังบรรทัดที่มีหมายเลข N ที่ระบุ แทนบรรทัดถัดจาก M98 ใช้น้อยและทำให้อ่านโปรแกรมยาก

10.5.5 M97 ของ Haas: โปรแกรมย่อยในไฟล์เดียวกัน

เครื่อง Haas มีคำสั่ง M97 ที่เรียกโปรแกรมย่อยด้วยหมายเลขบรรทัด N ในโปรแกรมเดียวกัน แทนหมายเลข O ของโปรแกรมอื่น โปรแกรมย่อยจึงวางต่อท้ายโปรแกรมหลักใต้ M30 ได้ และทั้งงานอยู่ในไฟล์เดียว

O1005
...
G54 G00 X0 Y0
M97 P1000 L2            (ทำบรรทัดตั้งแต่ N1000 จนถึง M99 สองครั้ง)
G55 G00 X0 Y0
M97 P1000 L2
...
M30
N1000 G91 G01 Z-1. F100 (โปรแกรมย่อยอยู่ใต้ M30)
...
G90
M99                     (กลับไปบรรทัดถัดจาก M97)

P คือหมายเลขบรรทัด N ไม่ใช่หมายเลขโปรแกรม และ L คือจำนวนครั้ง Fanuc ไม่มีคำสั่ง M97 ชุดควบคุมส่งรหัสนี้ให้ PMC เหมือนรหัส M อื่น ผลที่เกิดจึงขึ้นกับผู้ผลิตเครื่อง ตั้งแต่ Alarm ไปจนถึงอุปกรณ์บางอย่างทำงาน เมื่อย้ายโปรแกรมแบบนี้ไปเครื่อง Fanuc มีสองทาง

  • ใช้ได้ทุกเครื่อง: ตัดส่วนใต้ M30 ออกเป็นโปรแกรมใหม่ที่มีหมายเลข O ของตัวเอง เช่น O1006 แล้วเปลี่ยน M97 P1000 L2 เป็น M98 P1006 L2 หรือ M98 P21006 ตามรูปแบบที่ชุดควบคุมรับ
  • เรียกหมายเลขบรรทัดด้วย M98 Q: ชุดควบคุมบางรุ่น เช่น Fanuc Series 30i 31i และ 32i เรียกบรรทัด N ในโปรแกรมเดียวกันได้ด้วย M98 Q1000 เมื่อตั้งบิต 0 (SQC) ของพารามิเตอร์ 6005 เป็น 1 คือเปลี่ยน M97 P1000 L2 เป็น M98 Q1000 L2 ส่วน M98 P1006 Q1030 เริ่มทำโปรแกรม O1006 ที่บรรทัด N1030 แทนบรรทัดแรก การเรียกแบบนี้นับเป็นการเรียกซ้อนหนึ่งชั้นเหมือน M98 ทั่วไป คู่มือของชุดควบคุมรุ่นเก่าบางรุ่นไม่ได้กล่าวถึงคำสั่งนี้ ก่อนใช้ต้องตรวจคู่มือของชุดควบคุมรุ่นนั้น และให้ผู้ดูแลเครื่องตรวจว่าตั้งพารามิเตอร์แล้ว

Backplot ของเว็บไซต์นี้อ่าน M97 ได้ จึงใช้ตรวจโปรแกรมของ Haas ก่อนแปลงได้

10.6 คำสั่ง M ในบรรทัดเดียวกับการเคลื่อนที่

เมื่อคำสั่ง M อยู่ในบรรทัดเดียวกับการเคลื่อนที่ ลำดับการทำงานขึ้นกับผู้ผลิตเครื่องและตัวคำสั่ง โดยทั่วไป

  • คำสั่งที่ควรเริ่มก่อนหรือพร้อมการเคลื่อนที่ เช่น M03 และ M08 เครื่องส่วนใหญ่เริ่มทำตั้งแต่ต้นบรรทัด และบางเครื่องรอให้สปินเดิลถึงความเร็วก่อนเริ่มเคลื่อนที่
  • คำสั่งที่ควรทำหลังการเคลื่อนที่ เช่น M05 และ M09 เครื่องส่วนใหญ่เคลื่อนที่ให้เสร็จก่อนแล้วจึงทำ บรรทัด G00 Z50. M05 จึงยกเครื่องมือขึ้นถึง Z50. ก่อน แล้วสปินเดิลจึงหยุด แต่บางเครื่องทำทันทีที่ต้นบรรทัด
  • คำสั่งควบคุมโปรแกรม M00 M01 M02 M30 ทำหลังการเคลื่อนที่ในบรรทัดนั้นเสร็จ

ถ้าลำดับสำคัญต่อความปลอดภัยหรือคุณภาพงาน ให้แยกเป็นคนละบรรทัด เช่น ต้องการให้สปินเดิลหยุดหลังเครื่องมือถอยพ้นรูแล้ว ให้เขียน M05 ในบรรทัดถัดจากการถอย ไม่ใช่ในบรรทัดเดียวกัน และเขียนคำสั่ง M บรรทัดละหนึ่งตัวตามที่แนะนำในบทที่ 7

10.7 คำสั่ง M ของผู้ผลิตเครื่อง

นอกจากรหัสในตารางต้นบท เครื่องแต่ละรุ่นมีรหัส M อีกจำนวนมากสำหรับอุปกรณ์ของเครื่องนั้น รหัสเดียวกันอาจหมายถึงคนละอย่างบนเครื่องต่างรุ่น จึงไม่ควรจำตัวเลข แต่ควรรู้ว่ามีกลุ่มใดบ้าง และหาจากคู่มือของเครื่องทุกครั้ง

ตารางที่ 10.4 กลุ่มของคำสั่ง M ที่ผู้ผลิตเครื่องกำหนด
กลุ่ม ตัวอย่างหน้าที่
แกนหมุนและโต๊ะงาน ล็อกและปลดล็อกแกนที่ 4 หรือโต๊ะแบ่งตำแหน่ง
การจับชิ้นงาน เปิดและปิดหัวจับ ยันศูนย์ท้ายเข้าและออก ปากกาไฮดรอลิก
น้ำหล่อเย็นและลม ละอองน้ำมัน ลมเป่า น้ำหล่อเย็นผ่านรูกลางสปินเดิล
เศษและชิ้นงาน สายพานลำเลียงเศษ ถาดรับชิ้นงาน เครื่องป้อนเพลาอัตโนมัติ
การต๊าปเกลียว โหมดต๊าปเกลียวแบบซิงโครไนซ์ (Rigid tapping) ซึ่งเครื่อง Fanuc หลายรุ่นใช้ M29
ประตูและระบบอัตโนมัติ เปิดและปิดประตูอัตโนมัติ ส่งสัญญาณให้หุ่นยนต์ป้อนชิ้นงาน

รหัสบางตัวพบบนเครื่องจำนวนมากจนผู้เขียนโปรแกรมควรรู้จัก แต่ ไม่ใช่มาตรฐาน ตารางนี้บอกความหมายที่พบบ่อย เพื่อให้อ่านโปรแกรมจากเครื่องอื่นแล้วเดาได้ว่ารหัสนั้นน่าจะทำอะไร ก่อนใช้จริงต้องยืนยันกับคู่มือของเครื่องทุกตัว

ตารางที่ 10.5 คำสั่ง M ที่พบบ่อยแต่ไม่เป็นมาตรฐาน
คำสั่ง ความหมายที่พบบ่อย พบบน ข้อควรระวัง
M07 เปิดน้ำหล่อเย็นแบบที่สอง มักเป็นละอองน้ำมัน (Mist) เครื่องกัดและเครื่องกลึง บางเครื่องเป็นลมเป่าหรือน้ำหล่อเย็นผ่านรูกลางสปินเดิล ปิดด้วย M09
M10 M11 เปิดและปิดหัวจับ เครื่องกลึง ตัวใดเปิดตัวใดปิดต่างกันตามเครื่อง บนเครื่องกัดมักเป็นล็อกและปลดล็อกแกนที่ 4
M17 M18 กำหนดทิศหมุนของป้อมมีด เดินหน้าและถอยหลัง เครื่องกลึง เครื่องจำนวนมากเลือกทิศที่ใกล้ที่สุดเองโดยไม่ต้องสั่ง บนชุดควบคุมยี่ห้ออื่น M17 อาจเป็นจบโปรแกรมย่อย
M21 M22 เลื่อนยันศูนย์ท้ายเข้าดันชิ้นงานและถอยออก เครื่องกลึงที่มียันศูนย์ท้ายแบบสั่งจากโปรแกรม ไม่มีรหัสที่ใช้ตรงกัน เครื่องอื่นใช้ M12 M13 M25 M26 หรือ M78 M79 ยันศูนย์ต้องดันชิ้นงานก่อนสปินเดิลหมุน และถอยออกหลังสปินเดิลหยุด
M23 M24 เปิดและปิดการถอยมีดเฉียงออกที่จุดสิ้นสุดเกลียว (Thread chamfering) ใน G76 แบบบรรทัดเดียวของชุดควบคุมรุ่นเก่า เครื่องกลึง G76 แบบสองบรรทัดกำหนดการถอยเฉียงด้วยสองหลักกลางของ P ไม่ต้องใช้รหัสนี้ ดูบทที่ 18
M29 โหมดต๊าปเกลียวแบบซิงโครไนซ์ (Rigid tapping) เครื่องกัดและเครื่องกลึง บางเครื่องใช้รหัสอื่น หรือกำหนดด้วยพารามิเตอร์โดยไม่ต้องสั่ง
M41 ถึง M44 เลือกช่วงเกียร์ของสปินเดิล (Gear range) จากต่ำไปสูง เครื่องที่สปินเดิลมีเกียร์ จำนวนช่วงต่างกันตามเครื่อง เครื่องจำนวนมากเปลี่ยนเกียร์เองตามค่า S ดูหัวข้อช่วงเกียร์ของสปินเดิล
M48 M49 M49 ปิดการปรับอัตราป้อนด้วยสวิตช์ FEED OVERRIDE ให้ใช้ 100% เสมอ M48 เปิดกลับ เครื่องกัดและเครื่องกลึง ขณะ M49 ทำงาน ผู้ปฏิบัติงานลดอัตราป้อนด้วยสวิตช์ไม่ได้ ดูหัวข้อถัดไป
M60 เปลี่ยนพาเลต Machining center ที่มี APC บางเครื่องใช้ M50 ตามที่กล่าวในบทที่ 4
M78 M79 ล็อกและปลดล็อกแกน B HMC เป็นรหัสที่ต่างกันมากระหว่างเครื่อง บางเครื่องใช้กับยันศูนย์ท้ายหรือหน้าที่อื่น
M88 M89 เปิดและปิดน้ำหล่อเย็นแรงดันสูงผ่านรูกลางสปินเดิล (Through-spindle coolant) Machining center ที่มีออปชันนี้ ไม่มีรหัสที่ใช้ตรงกัน เครื่องอื่นใช้ M07 หรือรหัสในช่วง M50 ใช้ได้กับเครื่องมือที่มีรูน้ำหล่อเย็นเท่านั้น

โปรแกรมที่ใช้รหัส M ของผู้ผลิตเครื่องจะใช้ได้กับเครื่องรุ่นนั้นเท่านั้น เมื่อย้ายโปรแกรมไปเครื่องอื่น ให้ตรวจรหัส M ทุกตัวที่ไม่อยู่ในตารางต้นบทก่อนเดินเครื่อง

10.7.1 ปิดการปรับอัตราป้อน M48 M49

ตามปกติผู้ปฏิบัติงานปรับอัตราป้อนได้ด้วยสวิตช์ Feedrate override ตามบทที่ 3 M49 ปิดสวิตช์นี้ชั่วคราว ชุดควบคุมใช้อัตราป้อน 100% ของค่า F ในโปรแกรม ไม่ว่าสวิตช์จะอยู่ที่ตำแหน่งใด M48 เปิดให้สวิตช์กลับมามีผล และเป็นสถานะเมื่อเปิดเครื่อง

M49                     (อัตราป้อน 100% เสมอ สวิตช์ไม่มีผล)
G99 G81 X20. Y15. Z-6. R2. F60
X30.
G80
M48                     (สวิตช์กลับมามีผล)

M49 ใช้กับช่วงสั้นๆ ที่อัตราป้อนผิดไปจากที่คำนวณแล้วเครื่องมือเสียหายหรืองานเสีย

  • เครื่องมือเล็กหรือเปราะ เช่น ดอกสว่านขนาดเล็กและใบเลื่อยวงเดือน ที่หักได้ถ้าป้อนเร็วเกิน และเสียดสีจนสึกถ้าป้อนช้าเกิน
  • การต๊าปที่เขียนด้วย G01 หรือบนเครื่องที่คำสั่งต๊าปไม่ล็อกอัตราป้อนให้ ซึ่งอัตราป้อนต้องเท่ากับระยะพิตช์ × ความเร็วรอบพอดี ส่วนคำสั่งต๊าปและกลึงเกลียวสำเร็จรูปล็อกอัตราป้อนให้เองอยู่แล้ว ตามบทที่ 15
  • งานที่ผ่านการทดลองแล้วและต้องได้ผลเหมือนกันทุกชิ้น เช่น ผิวเก็บละเอียดที่อัตราป้อนกำหนดความหยาบผิว

ข้อควรระวังของ M49

  • อัตราป้อนกระโดดเป็น 100% ที่บรรทัด M49 ผู้ปฏิบัติงานที่ทดลองชิ้นแรกด้วยสวิตช์ที่ 10% จะพบว่าเครื่องมือเดินเร็วขึ้นสิบเท่าทันที จึง ทดลองโปรแกรมให้ผ่านก่อน แล้วจึงเพิ่ม M49 และเขียนคำอธิบายในวงเล็บไว้ที่บรรทัดนั้น
  • อัตราป้อนกระโดดอีกครั้งที่บรรทัด M48 กลับไปตามตำแหน่งของสวิตช์ในขณะนั้น ถ้าสวิตช์อยู่ที่ 0% เครื่องจะหยุดนิ่ง ถ้าอยู่ที่ 150% เครื่องจะป้อนเร็วกว่าโปรแกรม
  • เขียน M48 ทันทีหลังช่วงที่ต้องการ ไม่ปล่อยค้างไปถึงเครื่องมือตัวถัดไป และใส่ M48 ไว้ในบรรทัดเตรียมความปลอดภัยของโปรแกรมที่ใช้ M49 เผื่อโปรแกรมถูกหยุดกลางคัน
  • ปุ่ม FEED HOLD และปุ่มหยุดฉุกเฉินยังใช้ได้ตามปกติ M49 ปิดเฉพาะการปรับเป็นเปอร์เซ็นต์ ผู้ปฏิบัติงานจึงหยุดเครื่องได้ แต่ชะลอไม่ได้
  • ขอบเขตต่างกันตามเครื่อง บางเครื่องล็อก Spindle override ด้วย บางเครื่องล็อกเฉพาะอัตราป้อน และบางเครื่องไม่มีรหัสนี้ ให้ตรวจจากคู่มือของเครื่อง

10.8 ข้อผิดพลาดที่พบบ่อย

ตารางที่ 10.6 ข้อผิดพลาดของคำสั่ง M ที่พบบ่อย
ข้อผิดพลาด ผลที่เกิด ป้องกันโดย
สปินเดิลหมุนผิดทิศบนเครื่องกลึง ไม่เกิดการตัดเฉือน เม็ดมีดแตก ตรวจว่าชิ้นงานหมุนเข้าหาคมตัด และใช้ทิศเดียวกันทั้งป้อมมีด
M03 ไม่มี S ในชุดคำสั่งของเครื่องมือ หมุนด้วยความเร็วของเครื่องมือตัวก่อน เขียน S__ M03 ทุกชุดคำสั่งของเครื่องมือ
เริ่มโปรแกรมกลางคันที่บรรทัด M06 ที่ไม่มี T เครื่องเปลี่ยนเป็นเครื่องมือที่รออยู่ ซึ่งไม่ใช่ตัวที่ต้องการ เขียน T ในบรรทัด M06 ทุกครั้ง เช่น T02 M06
พึ่งให้ M06 ถอยแกน Z เอง แขน ATC ชนเครื่องมือบนเครื่องที่ไม่ถอยให้ ถอยแกน Z เองด้วย G91 G28 Z0 หรือ G30 ก่อน M06
จบโปรแกรมย่อยด้วย M30 จบทั้งโปรแกรม ไม่กลับโปรแกรมหลัก จบโปรแกรมย่อยด้วย M99 เสมอ
โปรแกรมย่อยทิ้ง G91 ไว้ พิกัดในโปรแกรมหลักกลายเป็นระยะ คืน G90 ก่อน M99 และประกาศ G90 ซ้ำหลังเรียก
ใส่ M49 ในโปรแกรมที่ยังไม่ได้ทดลอง ผู้ปฏิบัติงานลดอัตราป้อนไม่ได้ขณะทดลองชิ้นแรก ทดลองให้ผ่านก่อน แล้วจึงเพิ่ม M49 เฉพาะช่วงที่จำเป็น
M05 อยู่บรรทัดเดียวกับการถอยออกจากรู สปินเดิลหยุดขณะเครื่องมือยังอยู่ในรูบนบางเครื่อง แยก M05 เป็นบรรทัดของตัวเอง
ใช้รหัส M ของเครื่องอื่น อุปกรณ์ทำงานผิด หรือ Alarm ตรวจรหัส M ของผู้ผลิตเครื่องกับคู่มือทุกครั้งที่ย้ายโปรแกรม

สรุป

  • คำสั่ง M สั่งงานส่วนอื่นของเครื่องที่ไม่ใช่การเคลื่อนที่ของแกน ความหมายส่วนใหญ่กำหนดโดยผู้ผลิตเครื่อง มีเพียงกลุ่มเล็กๆ ที่ตรงกันแทบทุกเครื่อง
  • M03 M04 M05 หมุนและหยุดสปินเดิล บนเครื่องกลึงชิ้นงานต้องหมุนเข้าหาคมตัด และเขียน S คู่กับ M03 เสมอ M19 หยุดสปินเดิลที่มุมเดิมทุกครั้ง ใช้ในการเปลี่ยนเครื่องมือ การคว้านละเอียด และหัววัด
  • T เลือกเครื่องมือ และ M06 เปลี่ยนเครื่องมือบน Machining center ถอยแกน Z เองก่อนเสมอ และเรียก G43 H__ ใหม่หลังเปลี่ยน เครื่องกลึงใช้คำสั่ง T สี่หลักหมุนป้อมมีดโดยไม่มี M06
  • M08 M09 เปิดและปิดน้ำหล่อเย็น
  • M98 M99 เรียกและจบโปรแกรมย่อย โปรแกรมย่อยที่เขียนด้วย G91 ทำรูปร่างเดิมซ้ำได้หลายตำแหน่ง แต่ต้องคืนโหมดก่อนกลับ
  • เมื่อลำดับสำคัญ ให้แยกคำสั่ง M ออกจากบรรทัดการเคลื่อนที่ และตรวจรหัส M ของผู้ผลิตเครื่องกับคู่มือทุกครั้ง

บทต่อไปจะนำคำและบรรทัดจากบทที่ 7 กับคำสั่ง G และ M จากบทที่ 8 ถึงบทนี้มาเรียงเป็นโปรแกรมทั้งโปรแกรม ตั้งแต่หัวโปรแกรม บรรทัดเตรียมความปลอดภัย ชุดคำสั่งของเครื่องมือแต่ละตัว จนถึงการจบโปรแกรม

พบข้อผิดพลาดหรือมีข้อเสนอแนะ? ส่งอีเมลแจ้งเรา