Chuyển đến nội dung chính
CƠ KHÍ.NET
CAD – CAM – CAE

G-code là gì? Cấu trúc chương trình NC và phân biệt modal / non-modal

Nguyễn Đỗ Tùng

G-code là ngôn ngữ lập trình số (NC) điều khiển chuyển động của máy CNC — mỗi lệnh G quy định một kiểu chuyển động hoặc chế độ làm việc. Trả lời trực tiếp: một chương trình CNC là chuỗi block (dòng lệnh) theo khung chuẩn quốc tế ISO 6983-1:2009, mỗi block gồm địa chỉ (N, G, X, Y, Z, F, M...) kèm giá trị số. Điểm gây lỗi nhiều nhất khi lập trình NC: phân biệt G-code MODAL (giữ hiệu lực qua nhiều block tới khi bị ghi đè bởi lệnh cùng nhóm — ví dụ G01 không cần lặp lại mỗi block) và NON-MODAL (chỉ hiệu lực đúng trong block chứa nó — ví dụ G28). Các lệnh nền tảng nhất: G00 (chạy nhanh, không cắt), G01 (cắt thẳng, cần đi kèm F), G02/G03 (cắt cung tròn theo/ngược chiều kim đồng hồ), G90/G91 (tọa độ tuyệt đối/tương đối), M30 (kết thúc chương trình).

Nội dung thuộc chuyên trang CAD – CAM – CAE của cokhi.net, cụm Lập trình CAM — ở góc nguyên lý chung theo chuẩn ISO, không phải hướng dẫn vận hành cho một dòng máy/hãng cụ thể. Ký hiệu địa chỉ khớp phần lớn hệ điều khiển phổ biến (Fanuc và tương thích) nhưng có thể khác đôi chỗ với Siemens, Heidenhain — luôn đối chiếu sổ tay lập trình của máy đang dùng trước khi chạy thật.

Cấu trúc một block lệnh

Cấu trúc một dòng lệnh (block) trong chương trình NC

Một block điển hình gồm các địa chỉ theo thứ tự quy ước:

  • N (số thứ tự dòng): đánh số block, giúp tham chiếu khi tìm lỗi hoặc chạy lại từ giữa chương trình — không bắt buộc trên nhiều hệ điều khiển hiện đại.
  • G (lệnh chuẩn bị): quy định kiểu chuyển động hoặc chế độ (chạy nhanh G00, cắt thẳng G01, cắt cung G02/G03...).
  • X, Y, Z (tọa độ đích): vị trí đích của chuyển động theo hệ trục máy.
  • F (tốc độ chạy dao — feedrate): chỉ có ý nghĩa khi đi kèm lệnh cắt có điều khiển tốc độ (G01, G02, G03); không dùng với G00 (chạy nhanh, luôn ở tốc độ tối đa của trục).
  • M (lệnh phụ trợ — M-code): điều khiển các chức năng máy không phải chuyển động trục — bật/tắt trục chính, dung dịch làm nguội, đổi dao, dừng chương trình.

G-code modal và non-modal — phân biệt hay nhầm nhất

Đây là điểm gây lỗi nhiều nhất với người mới học lập trình NC:

  • G-code modal giữ hiệu lực cho tới khi bị một G-code khác cùng nhóm ghi đè — không cần lặp lại ở mỗi block. Ví dụ: gọi G01 một lần, các block sau chỉ cần ghi tọa độ mới, máy vẫn cắt thẳng cho tới khi gặp G00/G02/G03 (cùng nhóm chuyển động) hoặc lệnh khác thay thế.
  • G-code non-modal chỉ có hiệu lực đúng trong block chứa nó, không "nhớ" sang block sau. Ví dụ: G28 (về điểm tham chiếu) chỉ thực hiện một lần tại block đó.

Nhầm modal với non-modal — hoặc nhầm hai G-code cùng nhóm modal (ví dụ tưởng G90 và G91 có thể "cộng dồn" hiệu lực) — là nguyên nhân phổ biến của chuyển động sai vị trí ngoài ý muốn.

Cấu trúc tổng thể chương trình NC

Ngoài chuỗi block lệnh, một chương trình NC hoàn chỉnh còn có:

  1. Số hiệu chương trình (ví dụ O1001 trên hệ Fanuc): định danh chương trình trong bộ nhớ máy.
  2. Khối mở đầu (safety block): thường gồm G90 (tuyệt đối), G54 (gọi hệ tọa độ gia công), G17/G18/G19 (chọn mặt phẳng), đơn vị đo — thiết lập trạng thái máy về một điểm khởi đầu chắc chắn, tránh kế thừa trạng thái từ chương trình chạy trước đó.
  3. Thân chương trình: chuỗi block gia công thực tế, thường chia theo từng nguyên công/dao.
  4. Khối kết thúc: M05 (dừng trục chính), M09 (tắt dung dịch làm nguội), G28 (về home), M30 (kết thúc và tua lại chương trình).

Sai lầm thực tế khi đọc/viết chương trình NC

  • Quên đổi lại G90 sau khi dùng G91. Nếu chương trình có đoạn tạm chuyển sang G91 (tương đối) rồi quên chuyển lại G90 (tuyệt đối), các block sau sẽ di chuyển sai vị trí hoàn toàn — đây là lỗi gây va chạm dao/phôi phổ biến nhất liên quan tới G-code modal.
  • Đặt F ngay sau G00. G00 luôn chạy ở tốc độ tối đa của trục, giá trị F đặt cùng dòng không có tác dụng — dễ gây hiểu nhầm khi đọc lại chương trình.
  • Không kiểm tra hệ tọa độ gia công (G54...) trước khi chạy. Gọi nhầm hệ tọa độ đã lưu offset của phôi/đồ gá khác là nguyên nhân va chạm nghiêm trọng, đặc biệt trên máy nhiều đồ gá.
  • Copy chương trình từ máy khác mà không đối chiếu sổ tay. Cùng là G-code nhưng địa chỉ/mã có thể khác đôi chỗ giữa các hệ điều khiển — chạy thẳng chương trình chưa đối chiếu là rủi ro va chạm.

Bảng tra nhanh các lệnh G/M cơ bản

LệnhÝ nghĩaModal/Non-modal
G00Chạy nhanh, không cắt (F không có tác dụng)Modal
G01Cắt thẳng, có điều khiển tốc độ (cần F)Modal
G02 / G03Cắt cung tròn theo / ngược chiều kim đồng hồModal
G90 / G91Tọa độ tuyệt đối / tương đốiModal
G28Về điểm tham chiếu máyNon-modal
G54Gọi hệ tọa độ gia công (offset phôi)Modal
M05Dừng trục chính
M09Tắt dung dịch làm nguội
M30Kết thúc và tua lại chương trình

FAQ

G-code modal và non-modal khác nhau thế nào? Modal giữ hiệu lực qua nhiều block liên tiếp cho tới khi bị ghi đè bởi một lệnh khác cùng nhóm; non-modal chỉ có tác dụng đúng trong block chứa nó, không "nhớ" sang block sau.

G00 và G01 khác nhau ở đâu? G00 chạy nhanh không cắt, luôn ở tốc độ tối đa của trục nên giá trị F đi kèm không có tác dụng; G01 cắt thẳng có điều khiển tốc độ chính xác theo giá trị F đặt trong block.

Lỗi phổ biến nhất khi viết chương trình NC là gì? Quên đổi lại G90 (tuyệt đối) sau khi tạm dùng G91 (tương đối) — các block sau sẽ di chuyển sai vị trí hoàn toàn, đây là nguyên nhân va chạm dao/phôi phổ biến nhất liên quan tới tính chất modal của G-code.

G-code có giống nhau giữa các hãng máy CNC không? Phần lớn địa chỉ/mã khớp chuẩn Fanuc và các hệ tương thích, nhưng có thể khác đôi chỗ với Siemens, Heidenhain — luôn đối chiếu sổ tay lập trình của máy đang dùng trước khi chạy chương trình thật.

Thuật ngữ

  • Block: một dòng lệnh trong chương trình NC.
  • Modal: thuộc tính của G-code giữ hiệu lực qua nhiều block cho tới khi bị ghi đè bởi lệnh cùng nhóm.
  • Non-modal: thuộc tính của G-code chỉ có hiệu lực trong đúng block chứa nó.
  • Post-processor: phần mềm dịch đường chạy dao từ CAM thành G-code đúng định dạng máy cụ thể — xem thêm tại Nguyên lý lập trình CAM.
  • Safety block: khối lệnh mở đầu chương trình, thiết lập lại trạng thái máy về một điểm chắc chắn.

Tài liệu tham khảo

  1. CNCCookBook, G-Code and M-Code List [Easy Examples & Tutorials] (định nghĩa G00/G01/G02/G03/G17-19/G20-21/G28/G40-43/G54-59/G90-91): https://www.cnccookbook.com/g-code-m-code-command-list-cnc-mills/
  2. ISO, ISO 6983-1:2009 — Automation systems and integration — Numerical control of machines — Program format and definitions of address words: https://www.iso.org/standard/34397.html

Xem thêm: Mastercam: từ mô hình 3D đến G-code →

Xem thêm trong chủ đề này: bảng tra G-code chuẩn FANUC → · bảng tra M-code FANUC →

Xem thêm liên quan: chuẩn bị file CAD để gia công → · Nguyên lý định dạng file CAD → · Mô phỏng ứng suất chi tiết máy bằng Ansys →

Thuộc chuyên trang: CAD – CAM – CAELập trình CAM