ลองนึกภาพว่าคุณต้องการสั่งให้หุ่นยนต์ตัดชิ้นส่วนโลหะที่มีรูปทรงซับซ้อนออกมาได้อย่างแม่นยำถึงระดับ 0.01 มิลลิเมตร โดยไม่ผิดพลาดแม้แต่ครั้งเดียว ไม่ว่าจะผลิตชิ้นที่ 1 หรือชิ้นที่ 10,000 — นั่นคือสิ่งที่ G-Code ทำให้เป็นไปได้
G-Code คือภาษาเขียนโปรแกรมเบื้องหลังอุตสาหกรรมการผลิตสมัยใหม่ ตั้งแต่ชิ้นส่วนอากาศยาน ไปจนถึงงานแพทย์ อุปกรณ์อิเล็กทรอนิกส์ และแม้แต่โมเดล 3D Printing ที่คุณพิมพ์อยู่ที่บ้าน หากคุณทำงานด้านวิศวกรรม การผลิต หรือสนใจ CNC อย่างจริงจัง บทความนี้จะพาคุณเข้าใจ G-Code ตั้งแต่รากฐาน ไปจนถึงเทคนิคเขียน G-Code ให้เครื่องทำงานได้แม่นยำและมีประสิทธิภาพสูงสุด
G-Code คืออะไร? (G-Code Definition)
G-Code (ย่อมาจาก Geometric Code) คือภาษาโปรแกรมมาตรฐานที่ใช้ควบคุมเครื่องจักร CNC (Computer Numerical Control) ทั้งหมด โดยบอกให้เครื่องจักรรู้ว่า “ต้องเคลื่อนที่ไปที่ไหน อย่างไร และด้วยความเร็วเท่าไร”
ชื่อเต็มอย่างเป็นทางการคือ RS-274 ซึ่งถูกพัฒนาโดย MIT ในทศวรรษ 1950 และกลายมาเป็นมาตรฐาน ISO 6983 ที่ใช้งานทั่วโลกมาจนถึงปัจจุบัน

G-Code ต่างจากภาษาโปรแกรมทั่วไปอย่างไร?
| ประเด็น | G-Code | ภาษาโปรแกรมทั่วไป (Python, C++) |
|---|---|---|
| จุดประสงค์ | ควบคุมการเคลื่อนที่ทางกายภาพ | ประมวลผลข้อมูล / ตรรกะ |
| ผลลัพธ์ | ชิ้นงานที่ถูกตัด กัด หรือพิมพ์ | ซอฟต์แวร์ / ผลลัพธ์ดิจิทัล |
| มาตรฐาน | ISO 6983 (มาตรฐานสากล) | หลากหลายมาตรฐาน |
| การ Debug | ต้องระวังเรื่องความเสียหายของเครื่อง | Rollback ง่าย ไม่มีผลทางกายภาพ |
| ผู้ใช้หลัก | วิศวกร CNC, Machinist, นักออกแบบ CAM | นักพัฒนาซอฟต์แวร์ |
เครื่องจักร CNC คืออะไร? และทำงานร่วมกับ G-Code อย่างไร?
CNC (Computer Numerical Control) คือระบบที่ใช้คอมพิวเตอร์ควบคุมการเคลื่อนที่ของเครื่องจักรด้วยตัวเลขและพิกัด แทนที่จะให้ช่างควบคุมด้วยมือโดยตรง
ประเภทเครื่อง CNC ที่ใช้ G-Code
- CNC Milling Machine — กัดชิ้นงานโลหะหรือพลาสติกด้วยหัวกัด (End Mill)
- CNC Lathe (เครื่องกลึง) — หมุนชิ้นงานและตัดด้วยใบมีด
- CNC Router — กัดไม้ อะคริลิก และวัสดุนุ่ม
- CNC Plasma / Laser Cutter — ตัดด้วยลำแสงหรือพลาสม่า
- 3D Printer (FDM) — พิมพ์โดยวางวัสดุทีละชั้น (ใช้ G-Code เช่นกัน)
- EDM (Electrical Discharge Machining) — ตัดด้วยประกายไฟฟ้า
วงจรการทำงาน: จาก CAD สู่ชิ้นงานวงจรการทำงาน: จาก CAD สู่ชิ้นงาน

โครงสร้างพื้นฐานของ G-Code
1. Block (บรรทัดคำสั่ง)
G-Code เขียนเป็น Block ทีละบรรทัด แต่ละบรรทัดประกอบด้วย Word หลายตัว:

| ส่วนประกอบ | ความหมาย |
| N10 | หมายเลขบรรทัด (Sequence Number) |
| G01 | คำสั่ง G-Code (Linear Interpolation) |
| X50.000 Y25.000 Z-5.000 | พิกัดปลายทาง |
| F200 | อัตราป้อน (Feed Rate) หน่วย mm/min |
| S1200 | ความเร็วรอบสปินเดิล (RPM) |
| M03 | คำสั่ง M-Code (เปิดสปินเดิลหมุนซ้าย) |
2. ระบบพิกัด (Coordinate System)
G-Code ใช้ระบบพิกัดคาร์ทีเซียน 3 แกน:
- แกน X — เคลื่อนที่ซ้าย-ขวา
- แกน Y — เคลื่อนที่หน้า-หลัง
- แกน Z — เคลื่อนที่ขึ้น-ลง (ลึก-ตื้น)
- แกน A, B, C — หมุนรอบแกน X, Y, Z (เครื่อง 4-5 แกน)
Absolute vs. Incremental ModeAbsolute vs. Incremental Mode

คำสั่ง G-Code ที่สำคัญที่สุด (Essential G-Codes)

กลุ่มคำสั่งเคลื่อนที่ (Motion Commands)
G00 — Rapid Positioning (การเคลื่อนที่เร็ว)
ใช้เคลื่อนหัวเครื่องไปยังจุดเริ่มต้นโดยไม่ตัดชิ้นงาน ด้วยความเร็วสูงสุดของเครื่อง

คำเตือน: G00 ไม่ควรใช้ขณะสัมผัสชิ้นงาน เพราะเคลื่อนด้วยความเร็วสูงสุด
G01 — Linear Interpolation (การเคลื่อนที่เป็นเส้นตรง)
เคลื่อนหัวตัดเป็นเส้นตรงด้วยอัตราป้อนที่กำหนด — คำสั่งที่ใช้บ่อยที่สุดในการตัดชิ้นงาน

G02 — Circular Interpolation CW (วงกลมตามเข็มนาฬิกา)
G03 — Circular Interpolation CCW (วงกลมทวนเข็มนาฬิกา)

G04 — Dwell (หยุดนิ่งชั่วคราว)

ใช้เพื่อให้ความร้อนระบาย หรือรอให้สปินเดิลถึงความเร็วเต็ม
กลุ่มคำสั่งตั้งค่า (Setup Commands)
| คำสั่ง | ชื่อ | การใช้งาน |
|---|---|---|
G17 | XY Plane Selection | กำหนดระนาบทำงานเป็น XY (ค่าเริ่มต้นทั่วไป) |
G18 | XZ Plane Selection | ระนาบ XZ (ใช้กับเครื่องกลึง) |
G19 | YZ Plane Selection | ระนาบ YZ |
G20 | Inch Mode | หน่วยวัดเป็นนิ้ว |
G21 | Metric Mode | หน่วยวัดเป็นมิลลิเมตร |
G28 | Return to Home | คืนหัวเครื่องสู่ตำแหน่ง Home |
G40 | Cancel Cutter Compensation | ยกเลิกการชดเชยรัศมีเครื่องมือ |
G41 | Cutter Comp Left | ชดเชยรัศมีไปทางซ้าย |
G42 | Cutter Comp Right | ชดเชยรัศมีไปทางขวา |
G43 | Tool Length Offset | ชดเชยความยาวเครื่องมือ |
G54–G59 | Work Coordinate Systems | ระบบพิกัดชิ้นงาน (WCS) 1–6 |
G80 | Cancel Canned Cycle | ยกเลิก Canned Cycle |
G90 | Absolute Positioning | โหมดพิกัดสัมบูรณ์ |
G91 | Incremental Positioning | โหมดพิกัดส่วนเพิ่ม |
G94 | Feed per Minute | อัตราป้อนหน่วย mm/min |
G95 | Feed per Revolution | อัตราป้อนต่อรอบ mm/rev |
Canned Cycles — วงจรซ้ำสำเร็จรูป
Canned Cycle คือคำสั่ง G-Code สำเร็จรูปที่รวมลำดับการเคลื่อนที่หลายขั้นตอนไว้ในคำสั่งเดียว ช่วยย่นโปรแกรมได้มาก
G81 — Simple Drill Cycle

เครื่องจะทำงานดังนี้อัตโนมัติ:
- เคลื่อน Rapid ไปที่ X10 Y10
- ลงมาที่ระนาบ R (Z2) ด้วย Rapid
- เจาะลงถึง Z-15 ด้วยอัตราป้อน F80
- ยกหัวกลับที่ R2 อัตโนมัติ
G83 — Peck Drilling (เจาะแบบจิก)

เหมาะกับการเจาะลึก เพราะยกหัวออกมาทุก Q มม. เพื่อปล่อยเศษและระบายความร้อน
G84 — Tapping Cycle (ต๊าปเกลียว)

M-Code: คำสั่งเสริมที่ต้องรู้คู่กัน
M-Code (Miscellaneous Code) ควบคุมฟังก์ชันเสริมของเครื่อง ไม่ใช่การเคลื่อนที่
| M-Code | ชื่อ | การทำงาน |
|---|---|---|
M00 | Program Stop | หยุดโปรแกรมรอการยืนยัน |
M01 | Optional Stop | หยุดถ้าสวิตช์ Optional Stop เปิด |
M02 | End of Program | สิ้นสุดโปรแกรม |
M03 | Spindle CW | เปิดสปินเดิลหมุนตามเข็ม (Cutting) |
M04 | Spindle CCW | เปิดสปินเดิลทวนเข็ม |
M05 | Spindle Stop | หยุดสปินเดิล |
M06 | Tool Change | เปลี่ยนเครื่องมือ |
M07 | Mist Coolant On | เปิดน้ำหล่อเย็นแบบหมอก |
M08 | Flood Coolant On | เปิดน้ำหล่อเย็นแบบน้ำท่วม |
M09 | Coolant Off | ปิดน้ำหล่อเย็น |
M30 | End & Rewind | สิ้นสุดและ Reset โปรแกรม |
ตัวอย่างโปรแกรม G-Code เต็มรูปแบบ
ตัวอย่างที่ 1: กัดสี่เหลี่ยม 40×30mm ลึก 3mm

ตัวอย่างที่ 2: เจาะรูวงกลม 4 รู บนวงกลม Bolt Circle

เทคนิคเขียน G-Code ให้เครื่อง CNC ทำงานแม่นยำขึ้น
เทคนิคที่ 1: ใช้ Work Coordinate System (WCS) ให้ถูกต้อง
ปัญหาที่พบบ่อยที่สุด ในงาน CNC คือการตั้ง Work Zero (จุดอ้างอิง 0,0,0) ผิด

เหตุใดสำคัญ: ถ้า WCS ผิด 0.1mm ชิ้นงานทั้งชิ้นจะผิดตาม — ในชิ้นงานที่ต้องประกอบกัน นั่นหมายถึงของเสียทันที
เทคนิคที่ 2: คำนวณ Feed Rate และ Spindle Speed อย่างถูกต้อง
การตั้ง Feed Rate (F) และ Spindle Speed (S) ที่ผิดพลาดเป็นสาเหตุอันดับหนึ่งที่ทำให้งานไม่ได้คุณภาพ
สูตรคำนวณ Cutting Speed และ RPM

เคล็ดลับ: เริ่มต้นที่ 70-80% ของค่าที่คำนวณได้ แล้วค่อยๆ ปรับขึ้นจนชิ้นงานมีผิวดีและไม่สึกหรอผิดปกติ
เทคนิคที่ 3: ใช้ Tool Length Compensation (G43) ทุกครั้ง

ทำไมต้องทำ: เครื่องมือแต่ละชิ้นมีความยาวต่างกัน G43 บอกให้ Controller รู้ว่าปลายดอกมีดอยู่ที่ไหนจริงๆ ป้องกันการชนชิ้นงานหรือโต๊ะจับยึด
เทคนิคที่ 4: เขียน Safety Block ที่จุดเริ่มต้นเสมอ

เทคนิคที่ 5: กำหนด Safe Z Height ให้ชัดเจน

จุดสำคัญ: ไม่ควรเคลื่อน XY และ Z พร้อมกันด้วย G00 เมื่อยังไม่รู้แน่ว่าทางนั้นโล่งหรือไม่
เทคนิคที่ 6: ใช้ Subprogram สำหรับรูปแบบที่ซ้ำ

เทคนิคที่ 7: ใช้ Variables (#) แทนตัวเลขตายตัว

เทคนิคที่ 8: ป้อนลงชิ้นงานแบบ Ramp หรือ Helical เพื่อถนอมดอกมีด

เทคนิคที่ 9: ใช้ Cutter Radius Compensation (G41/G42) สำหรับงาน Finish

ข้อดี: เมื่อเปลี่ยนดอกมีด ขนาดต่างกันเล็กน้อย แค่เปลี่ยนค่า D ใน Tool Table โดยไม่ต้องแก้โปรแกรม
เทคนิคที่ 10: เขียน Comment อย่างสม่ำเสมอ

ข้อผิดพลาดที่พบบ่อยใน G-Code และวิธีป้องกัน
1. Modal Code ค้างจากโปรแกรมก่อน
Modal Code คือคำสั่งที่ยังคงมีผลอยู่จนกว่าจะถูกยกเลิก เช่น G91 (Incremental Mode) ถ้าลืม Reset จะทำให้พิกัดผิดหมดทั้งโปรแกรมถัดไป
ป้องกัน: ใส่ Safety Block ทุกครั้ง และระบุ G90/G91 ให้ชัดเจนเมื่อเปลี่ยน Mode
2. ลืมยก Z ก่อนเคลื่อน XY

3. Feed Rate เป็นศูนย์
ถ้าใช้ G01/G02/G03 โดยไม่มี F-Word และไม่มี F จากบรรทัดก่อน เครื่องบางรุ่นจะหยุดทำงาน บางรุ่นจะ Error
ป้องกัน: ระบุ F ทุกครั้งที่เริ่ม Cutting Move
4. Arc Endpoint ไม่ตรงกับ Radius ที่กำหนด

5. ทศนิยมหาย

G-Code สำหรับ 3D Printer: ความแตกต่างที่ต้องรู้
แม้ 3D Printer จะใช้ G-Code เช่นกัน แต่มีความแตกต่างสำคัญ:
| คุณสมบัติ | CNC Milling | 3D Printer (FDM) |
|---|---|---|
| คำสั่งพิเศษ | G41/G42 (Cutter Comp) | E-axis (ปริมาณ Filament) |
| Firmware | Fanuc, Siemens, Heidenhain | Marlin, Klipper, RepRap |
| Temperature | ไม่มี | M104 (Nozzle), M140 (Bed) |
| Homing | G28 Z (อ้างอิง Machine Zero) | G28 (Home ทุกแกน) |
| Layer | ไม่มีแนวคิดนี้ | Z เพิ่มทีละ Layer Height |

เครื่องมือที่ช่วยในการเขียนและตรวจสอบ G-Code
CAM Software (สร้าง G-Code อัตโนมัติ)
| ซอฟต์แวร์ | ระดับ | ข้อดี |
|---|---|---|
| Fusion 360 | กลาง | ฟรี (Personal), ครบฟีเจอร์, Cloud-based |
| Mastercam | มืออาชีพ | มาตรฐานอุตสาหกรรม, Post Processor ครบ |
| SolidCAM | มืออาชีพ | Integrated กับ SolidWorks, iMachining |
| HSMWorks | กลาง | ใน SolidWorks, ใช้ Engine เดียวกับ Fusion |
| Estlcam | เริ่มต้น | ถูก เหมาะ CNC Router งานไม้ |
| Cura / PrusaSlicer | เริ่มต้น | สำหรับ 3D Printer โดยเฉพาะ |
G-Code Simulator (จำลองก่อนรันจริง)
- CNCSimulator Pro — จำลอง 3 มิติครบ ตรวจ Collision ได้
- Vericut — มาตรฐานอุตสาหกรรมการบิน ตรวจ Simulation ละเอียดมาก
- NC Viewer (Online) — ฟรี ใช้ Browser เปิดได้เลย
- G-Wizard Editor — วิเคราะห์ Cutting Parameter และ Simulate
สรุปบทความหลักการสำคัญ 10 ข้อในการเขียน G-Code ที่ดี
การเขียน G-Code ที่ดีไม่ได้มีแค่การทำให้เครื่อง CNC ทำงานได้เท่านั้น แต่ยังต้องคำนึงถึงความปลอดภัย ความแม่นยำ และความสะดวกในการตรวจสอบโปรแกรมในระยะยาว โดยหลักการสำคัญที่ควรมีในทุกโปรแกรม เริ่มจากการใส่ Safety Block ตั้งแต่ต้นโปรแกรม เช่น G21, G90, G17, G40, G49 และ G80 เพื่อรีเซ็ตสถานะต่าง ๆ ของเครื่องให้พร้อมทำงานอย่างถูกต้อง ลดความเสี่ยงจากค่าที่ค้างมาจากโปรแกรมก่อนหน้า
อีกเรื่องที่สำคัญคือการระบุหน่วยวัดให้ชัดเจนทุกครั้ง ไม่ว่าจะเป็น G20 สำหรับนิ้ว หรือ G21 สำหรับมิลลิเมตร เพื่อป้องกันความผิดพลาดด้านขนาดชิ้นงาน รวมถึงควรยกแกน Z ขึ้นก่อนเคลื่อนที่แกน X และ Y เสมอ เพื่อหลีกเลี่ยงการชนชิ้นงานหรือฟิกซ์เจอร์ระหว่างการเคลื่อนที่
ในการตั้งตำแหน่งอ้างอิง ควรเลือกใช้ Work Coordinate System เช่น G54-G59 แทนการอ้างอิงจาก Machine Zero โดยตรง เพราะช่วยให้การตั้งงานยืดหยุ่น ปลอดภัย และสะดวกต่อการเปลี่ยนชิ้นงานมากกว่า ขณะเดียวกัน การตั้งค่า Feed Rate และ Spindle Speed ก็ควรคำนวณตามชนิดวัสดุ ขนาด Tool และลักษณะงาน ไม่ควรใช้ค่าเดิมซ้ำทุกงาน เพราะอาจทำให้ Tool สึกเร็วหรือผิวงานเสียได้
นอกจากนี้ โปรแกรมที่ดีควรมี Comment อธิบายแต่ละ Operation เพื่อให้ง่ายต่อการตรวจสอบ แก้ไข และส่งต่อให้ผู้ใช้งานคนอื่นเข้าใจได้รวดเร็ว หากเป็นงานที่มีค่าซ้ำกันหลายจุด การใช้ Variables (#) แทนตัวเลขคงที่ก็จะช่วยลดเวลาแก้ไขและลดความผิดพลาดของโปรแกรมได้มาก
ก่อนรันงานจริงทุกครั้ง ควร Simulate โปรแกรมเพื่อตรวจสอบเส้นทางการเดิน Tool และลดโอกาสเกิด Crash ที่อาจสร้างความเสียหายให้กับเครื่องจักรหรือชิ้นงาน และหากมีรูปแบบการทำงานซ้ำ ๆ ก็ควรใช้ Subprogram เพื่อทำให้โปรแกรมสั้นลง อ่านง่าย และจัดการได้สะดวกขึ้น
สุดท้าย สำหรับการทดลองโปรแกรมใหม่ หรือเมื่อต้อง Machining กับวัสดุที่ไม่คุ้นเคย ควรเริ่มทดสอบด้วย Feed Rate ต่ำประมาณ 10–20% ก่อนเสมอ เพื่อเช็กความถูกต้องของ Tool Path และลดความเสี่ยงจากความผิดพลาดที่อาจเกิดขึ้นระหว่างการทำงานจริง
คำถามที่พบบ่อย (FAQ)
Q: G-Code กับ M-Code ต่างกันอย่างไร?
A: G-Code ควบคุมการเคลื่อนที่และเรขาคณิต (Geometric) ส่วน M-Code ควบคุมฟังก์ชันเครื่อง (Miscellaneous) เช่น สปินเดิล น้ำหล่อเย็น การเปลี่ยนเครื่องมือ
Q: ต้องเรียน CAD/CAM ก่อนถึงจะเขียน G-Code ได้ไหม?
A: ไม่จำเป็น สำหรับงานง่ายๆ เขียน G-Code โดยตรงได้เลย แต่สำหรับชิ้นงานซับซ้อน CAM จะช่วยประหยัดเวลาได้มาก
Q: G-Code ของ Fanuc ใช้กับเครื่อง Siemens ได้ไหม?
A: ส่วนใหญ่ไม่ได้โดยตรง เพราะแต่ละ Controller มี Dialect ของตัวเอง ต้องใช้ Post Processor ที่ถูกต้องเมื่อ Export จาก CAM
Q: จะเรียนรู้ G-Code จากที่ไหนได้บ้าง?
A: คู่มือเครื่อง (Programming Manual) ของ Controller ที่ใช้ คือแหล่งข้อมูลที่แม่นยำที่สุด รองลงมาคือ Coursera, Udemy, และเว็บไซต์ CNC Cookbook

