Nguyên lý hoạt động
G-code giao tiếp với bộ điều khiển CNC thông qua một chuỗi khối lệnh tuần tự, mỗi khối tương ứng với một hành động cụ thể của máy. Các lệnh nhóm G (preparatory function) điều khiển chế độ chuyển động: nội suy thẳng, nội suy cung tròn, chu trình cố định khoan-tarô-doa. Các lệnh nhóm M (miscellaneous function) đảm nhiệm chức năng phụ trợ như khởi động/dừng trục chính, đóng mở dung dịch trơn nguội, kết thúc chương trình.
Bộ điều khiển đọc từng khối, tính toán quỹ đạo nội suy rồi phát xung đến các trục động cơ servo hoặc bước. Bù dao (tool offset) và bù bán kính dao được khai báo trong chương trình hoặc gọi từ bảng bù của máy, cho phép hiệu chỉnh mà không cần sửa lại toàn bộ code khi thay dao mới.
Phân loại lệnh thường gặp
Trong thực tế gia công, G-code được nhóm theo chức năng:
- Lệnh định vị và nội suy: G00 (định vị nhanh), G01 (nội suy thẳng có ăn dao), G02/G03 (nội suy cung tròn thuận/ngược chiều kim đồng hồ).
- Chu trình cố định (canned cycle): Nhóm G80–G89 trên phay, G70–G76 trên tiện — đóng gói các bước lặp như khoan nhiều lỗ, tiện ren, tiện thô nhiều lần vào một lệnh gọn.
- Thiết lập hệ tọa độ và bù: G54–G59 (hệ tọa độ phôi), G41/G42 (bù bán kính dao trái/phải), G43/G44 (bù chiều dài dao).
- Lệnh M phụ trợ: M03/M04/M05 (quay trục chính), M08/M09 (tưới nguội), M30 (kết thúc và về đầu chương trình).
Cú pháp cụ thể có thể khác nhau tùy hãng bộ điều khiển — Fanuc, Siemens Sinumerik, Heidenhain — vì vậy kỹ thuật viên cần đối chiếu tài liệu của từng dòng máy.
Lưu ý khi sử dụng
Với chi tiết đơn giản, lập trình tay giúp người vận hành kiểm soát từng khối lệnh, dễ tinh chỉnh chiến lược cắt tại máy. Với chi tiết phức tạp, phần mềm CAM như Mastercam sinh G-code tự động, giảm sai sót và rút ngắn thời gian lập trình đáng kể.
Dù viết tay hay xuất từ CAM, bước mô phỏng (verify/backplot) trước khi chạy thật là bắt buộc — giúp phát hiện va chạm dao–phôi–đồ gá, kiểm tra thứ tự bước gia công và xác nhận chiều quay bù dao đúng phía. Một lỗi nhỏ trong khối G-code có thể dẫn đến gãy dao, hỏng phôi hoặc nguy hiểm cho máy, đặc biệt ở bước chạy dao nhanh G00 khi không có nội suy kiểm soát.
Modal và non-modal — phân biệt quan trọng nhất khi đọc chương trình
| Loại lệnh | Hành vi | Hệ quả khi đọc chương trình |
|---|---|---|
| Modal | Giữ hiệu lực cho tới khi có lệnh cùng nhóm thay thế | Một dòng không ghi G01 vẫn có thể đang chạy ở chế độ G01 do dòng trước để lại |
| Non-modal | Chỉ có hiệu lực đúng khối lệnh chứa nó | Muốn lặp lại thì phải ghi lại ở mỗi khối |
Đối chiếu: phân biệt modal / non-modal và cấu trúc chương trình NC — G-code là gì: cấu trúc chương trình NC và phân biệt modal / non-modal. Tra cứu 02/09/2026.
Đây là nguồn hiểu nhầm phổ biến nhất khi đọc chương trình của người khác: nhìn một dòng đơn lẻ và tưởng nó nói hết mọi thứ đang xảy ra. Trạng thái thật của máy tại một dòng là tích lũy của tất cả lệnh modal phía trên.
Vì sao G-code của mỗi hãng lại khác nhau
Nhóm lệnh chuyển động cơ bản gần như thống nhất giữa các hãng, nhưng chu trình cố định, lệnh gọi chương trình con và cú pháp tham số thì khác nhau đáng kể giữa Fanuc, Siemens, Mitsubishi và Haas. Hệ quả thực tế: chương trình chạy tốt trên máy này không đảm bảo chạy đúng trên máy khác, kể cả khi hai máy cùng hình dạng và cùng số trục.
Vì vậy khi CAM xuất chương trình, bộ hậu xử lý (post-processor) phải khớp đúng bộ điều khiển của máy đích, chứ không chỉ khớp loại máy.
Chương trình G-code chạy sai vì nguyên nhân gì
Lỗi G-code ít khi là lỗi cú pháp — máy bắt được cú pháp sai và báo ngay. Nguy hiểm nằm ở chương trình đúng cú pháp nhưng sai ý đồ: máy chạy trơn tru đúng thứ nó được bảo, chỉ có điều đó không phải thứ người lập trình định làm.
| Hiện tượng | Hướng nguyên nhân | Chỗ kiểm trước |
|---|---|---|
| Dao lao vào phôi ở đoạn chạy dao nhanh | Lệnh định vị nhanh đi qua vùng có vật cản | Mô phỏng toàn đường chạy, không chỉ đoạn cắt |
| Chi tiết lệch đúng một lượng cố định theo trục | Sai hệ tọa độ phôi, hoặc chuẩn đặt sai | Hệ tọa độ đang gọi và giá trị chuẩn |
| Biên dạng lệch đều đúng bằng bán kính dao | Sai bù bán kính, hoặc bù nhầm phía trái/phải | Lệnh bù và hướng vòng quanh biên dạng |
| Dao cắm sâu hơn dự tính | Sai bù chiều dài dao sau khi thay dao | Bảng bù, quy trình đo chiều dài dao |
| Một dòng chạy khác hẳn dự đoán khi đọc riêng nó | Lệnh modal từ dòng trên còn hiệu lực | Đọc ngược lên tìm lệnh modal đang chi phối |
| Chương trình chạy tốt trên máy cũ, lỗi trên máy mới | Chu trình cố định và cú pháp tham số khác giữa các hãng điều khiển | Xuất lại bằng bộ hậu xử lý đúng của máy đích |
Giới hạn cần nói rõ: mô phỏng kiểm được va chạm và hình học, nhưng không kiểm được chế độ cắt có hợp lý hay không. Một chương trình qua mô phỏng sạch vẫn có thể làm gãy dao nếu bước tiến và chiều sâu vượt sức dao ở độ vươn đang dùng.
Mẹo sai hay gặp: sửa nhanh tại máy rồi chạy luôn. Sửa tay tại máy không quay ngược về file CAM, nên lần xuất chương trình sau mất hết phần sửa đó — và lỗi cũ quay lại đúng như cũ.
Đối chiếu: so sánh G-code và M-code giữa các hãng điều khiển — Bảng tra G-code, M-code Siemens, Mitsubishi, Haas khác Fanuc. Tra cứu 16/09/2026.
Chương trình chạy được trên máy này, đem sang máy hãng khác thì sửa ở đâu
Đây là câu tốn giờ máy nhiều nhất trong nhóm lập trình, và nó không giải bằng cách đọc kỹ hơn chương trình cũ.
Phần lệnh chuyển động cơ bản gần như dùng chung. Phần lệnh phụ trợ và chu trình đóng gói của từng hãng thì không — đó mới là chỗ chương trình đứng máy hoặc chạy sai. Biết ranh giới giữa hai phần là biết chỗ nào phải rà tay khi đổi máy.
Và câu đi kèm: khi phát hiện sai, sửa ở G-code hay sửa ở CAM rồi xuất lại. Sửa tay nhanh cho lần này nhưng lần xuất sau mất hết — nên nó chỉ đúng khi chương trình đó không chạy lại nữa.
⇒ So sánh G-code giữa các hãng: Fanuc, Siemens, Mitsubishi, Haas · Bảng tra G-code chuẩn FANUC.
FAQ
G-code là gì? Là ngôn ngữ điều khiển máy CNC, gồm các khối lệnh chữ–số quy định chuyển động dao, tốc độ trục chính, bù dao và các chức năng phụ trợ. Bộ điều khiển đọc tuần tự từng khối và chuyển thành tín hiệu điều khiển các trục.
G-code và M-code khác nhau thế nào? Lệnh G điều khiển chuyển động và chế độ gia công (chạy nhanh, nội suy thẳng, nội suy cung, chu trình cố định). Lệnh M điều khiển chức năng phụ trợ của máy: quay và dừng trục chính, bật tắt tưới nguội, thay dao, kết thúc chương trình.
Modal nghĩa là gì trong G-code? Nghĩa là lệnh giữ hiệu lực cho tới khi bị một lệnh cùng nhóm thay thế. Vì vậy nhiều dòng trong chương trình không ghi lại lệnh chuyển động mà vẫn chạy đúng chế độ — chế độ đó do dòng phía trên đặt và còn hiệu lực.
Có cần biết viết tay G-code khi đã dùng CAM không? Có. CAM sinh phần lớn chương trình, nhưng đọc hiểu G-code là điều kiện để soát lỗi trước khi chạy, để sửa nhanh tại máy và để biết post-processor có xuất đúng ý đồ hay không.
Vì sao phải mô phỏng trước khi chạy thật? Vì một lỗi nhỏ trong khối lệnh có thể dẫn tới va chạm dao – phôi – đồ gá, gãy dao hoặc hỏng trục chính. Mô phỏng phát hiện va chạm, sai thứ tự nguyên công và sai chiều bù dao trước khi máy thực sự chuyển động — đặc biệt ở đoạn chạy dao nhanh, nơi máy đi hết tốc độ.
Chương trình chạy máy này đem sang máy khác có chạy được không? Không đảm bảo. Lệnh chuyển động cơ bản thì giống, nhưng chu trình cố định và cú pháp tham số khác nhau giữa các hãng điều khiển. Phải kiểm lại hoặc xuất lại từ CAM bằng post-processor đúng của máy đích.
Đọc sâu trên chuyên trang CAD – CAM – CAE
Trang thuật ngữ này trả lời nhanh "G-code là gì". Nội dung đầy đủ theo từng tình huống nằm ở chuyên trang CAD – CAM – CAE:
- G-code là gì: cấu trúc chương trình NC, modal và non-modal — bài đầy đủ về cấu trúc một chương trình NC.
- Bảng tra G-code chuẩn FANUC và bảng tra M-code chuẩn FANUC — khi cần tra nghĩa một lệnh cụ thể đang đọc dở.
- So sánh G-code giữa Fanuc, Siemens 840D, Mitsubishi và Haas — khi phải chuyển chương trình sang máy khác hãng.
- Nguyên lý lập trình CAM: từ mô hình CAD đến đường chạy dao — khi muốn hiểu G-code được sinh ra như thế nào.
- Mastercam: từ mô hình 3D đến G-code và lỗi thường gặp — quy trình thực tế và những chỗ hay sai.
- Khái niệm nền liên quan: CNC, máy phay CNC, chế độ cắt.