Trả lời trực tiếp: không phải mọi hệ điều khiển CNC đều dùng chung ký hiệu G-code/M-code như bảng tra Fanuc đã có trên site — mức độ khác biệt tăng dần theo thứ tự: Mitsubishi Meldas gần như tương thích hoàn toàn với Fanuc (hầu hết chương trình Fanuc chạy được không cần sửa), Haas gần Fanuc nhưng khác vài điểm cụ thể (cách gọi work offset, chương trình con), Siemens 840D khác biệt nhiều nhất — dùng chu trình dạng lệnh có cấu trúc (CYCLE...) thay cho nhiều G-code chuẩn bị của Fanuc.
Nội dung thuộc chuyên trang CAD-CAM-CAE của cokhi.net, cụm Lập trình CAM — bổ sung cho bảng tra G-code chuẩn Fanuc và bảng tra M-code chuẩn Fanuc đã có. Bài này KHÔNG liệt kê đầy đủ mọi lệnh của mọi hãng (quá rộng, dễ sai) — chỉ tập trung vào các điểm ĐAU THẬT khi thợ CNC chuyển máy giữa các hãng: ký hiệu khác nhau cho cùng 1 chức năng. Mọi lệnh dưới đây đều đối chiếu qua tài liệu/nguồn kỹ thuật công khai — không đoán ký hiệu.
Vì sao cùng là "G-code" mà mỗi hãng lại khác nhau?
G-code gốc theo chuẩn ISO 6983 (đã nhắc trong bảng tra G-code Fanuc), nhưng chuẩn này chỉ quy định khung sườn chung — mỗi hãng điều khiển (Fanuc, Siemens, Mitsubishi, Haas, Heidenhain...) triển khai thêm các lệnh riêng, đặt tên tham số riêng, và với Siemens còn xây hẳn một lớp lệnh cấu trúc cao hơn G-code thô. Hệ quả thực tế: chương trình viết đúng chuẩn Fanuc có thể chạy sai hoặc không chạy được trên máy hãng khác nếu không đối chiếu sổ tay lập trình của đúng máy đang dùng.
Mitsubishi Meldas — gần như tương thích Fanuc
Mitsubishi Meldas (dòng M500 và tương tự) triển khai mô hình lập trình gần như giống hệt Fanuc — hầu hết chương trình xuất theo hậu xử lý (post processor) "Fanuc 0M/16M/18M" trong các phần mềm CAM phổ biến chạy được trên máy Mitsubishi mà không cần sửa đáng kể. Cấu trúc block, nhóm modal, cách tổ chức bộ nhớ bù dao về cơ bản tương thích. Điểm cần đối chiếu riêng: bảng gán M-code cho thao tác máy cụ thể (đổi dao M06, chiều quay trục chính M03/M04, dung dịch làm mát M08/M09) có thể khác theo từng hãng máy công cụ lắp bộ điều khiển Mitsubishi — không phải do Meldas quy định cứng.
Haas — gần Fanuc nhưng khác ở work offset và chương trình con
Haas duy trì tương thích cao với các G-code cơ bản của Fanuc (G00, G01, G02/G03, G54-G59...), nhưng có 2 khác biệt cụ thể đáng chú ý:
- Work offset mở rộng: Fanuc dùng định dạng thập phân để mở rộng số lượng hệ tọa độ gia công (ví dụ G54.1 P1 đến G54.1 P48, tùy đời máy) — Haas không dùng cách gọi thập phân này, chủ yếu dùng trực tiếp G54 đến G59.
- Gọi chương trình con: Haas dùng
M97 P<số dòng>để gọi chương trình con NẰM TRONG CÙNG FILE (tham số là số hiệu dòng N bắt đầu chương trình con), kết thúc bằng M99 — khác với quy ước M98/M99 gọi file chương trình con RIÊNG BIỆT quen thuộc trên nhiều máy Fanuc.
Siemens 840D — khác biệt nhiều nhất, dùng chu trình dạng lệnh cấu trúc
Siemens Sinumerik 840D khác Fanuc rõ rệt nhất trong 4 hệ:
- Bù dao: Fanuc dùng số hiệu bù (chữ D cho bán kính, H cho chiều dài) gọi kèm G41/G42/G43; Siemens dùng cú pháp gọi dao theo tên
T="TÊN_DAO" D1gắn với khung tọa độ theo hướng dao (tool-orientation frame) — mô hình khác hẳn cách Fanuc tổ chức bảng offset. - Chu trình (cycle): đây là khác biệt lớn nhất — nơi Fanuc dùng G-code chuẩn bị cho các chu trình khoan/taro/tiện ren (ví dụ G83 cho khoan sâu), Siemens dùng lệnh có cấu trúc dạng tên gọi rõ nghĩa kèm tham số, ví dụ
CYCLE83(...)cho cùng chức năng khoan sâu — không phải một mã G tương đương đơn giản, mà là cả một khối lệnh với cú pháp riêng. - Biến chương trình: Fanuc dùng biến bắt đầu bằng
#(Custom Macro B, ví dụ#100); Siemens dùng tham số R (R0,R1...) và dữ liệu người dùng toàn cục (GUD — Global User Data) — hai mô hình viết macro/tham số hoá chương trình khác hẳn cú pháp.
Hệ quả thực tế: chương trình G-code thô viết theo chuẩn Fanuc (kể cả các lệnh nội suy cơ bản G01/G02/G03 dùng I/J/K vẫn chạy được) sẽ KHÔNG chạy đúng nếu có dùng chu trình khoan/tiện ren hoặc macro — phần này bắt buộc viết lại theo đúng cú pháp Siemens, không thể "dịch 1-1" từng dòng.
Bảng so sánh nhanh 4 hệ điều khiển
| Hạng mục | Fanuc (chuẩn tham chiếu) | Mitsubishi Meldas | Haas | Siemens 840D |
|---|---|---|---|---|
| Mức tương thích tổng thể | — | Gần như tương thích hoàn toàn | Gần Fanuc, khác vài điểm | Khác biệt nhiều nhất |
| Work offset | G54-G59, mở rộng G54.1 Pn | Giống Fanuc | G54-G59 (không dùng thập phân mở rộng) | G54-G57 + khung tọa độ (frame) riêng |
| Gọi chương trình con | M98/M99 (file riêng) | Giống Fanuc | M97 P<dòng>/M99 (trong cùng file) | Cơ chế gọi chương trình khác hẳn cú pháp |
| Chu trình khoan/tiện ren | G-code (vd G83) | Giống Fanuc | Giống Fanuc | Lệnh cấu trúc (vd CYCLE83) |
| Biến/macro | # (Custom Macro B) | Giống Fanuc | Giống Fanuc | R-parameter + GUD |
FAQ
Chương trình viết theo chuẩn Fanuc có chạy được trên máy Mitsubishi không? Phần lớn CÓ — Mitsubishi Meldas triển khai mô hình lập trình gần như tương thích hoàn toàn với Fanuc, hậu xử lý CAM xuất theo "Fanuc 0M/16M/18M" thường chạy được không cần sửa đáng kể, chỉ cần đối chiếu riêng bảng M-code của máy cụ thể.
Khác biệt lớn nhất giữa Fanuc và Siemens 840D là gì? Là cách xử lý chu trình (cycle) khoan/tiện ren — Fanuc dùng G-code chuẩn bị (ví dụ G83), Siemens dùng lệnh có cấu trúc dạng tên gọi kèm tham số (ví dụ CYCLE83(...)) — không phải một mã tương đương đơn giản mà là cú pháp lập trình khác hẳn.
Vì sao Haas được coi là "gần Fanuc" dù có vài khác biệt? Vì phần lớn G-code cơ bản (chạy dao, nội suy đường thẳng/cung tròn, chọn mặt phẳng...) giống Fanuc — khác biệt chỉ nằm ở 2 điểm cụ thể: cách gọi mở rộng work offset (không dùng định dạng thập phân) và cách gọi chương trình con (M97 trong cùng file thay vì M98 gọi file riêng).
Có nên tin chương trình G-code "dịch" tự động từ hãng này sang hãng khác không? Chỉ nên tin với các lệnh nội suy cơ bản (G00/G01/G02/G03 dùng chung nhiều hệ) — với chu trình khoan/tiện ren, bù dao, và macro/biến chương trình, luôn phải đối chiếu và viết lại theo đúng sổ tay lập trình của máy đích, đặc biệt khi đích là Siemens (khác biệt sâu nhất về cú pháp).
Thuật ngữ
- Chu trình (canned cycle): khối lệnh có sẵn thực hiện một thao tác lặp lại nhiều bước (khoan sâu, tiện ren...) bằng 1 lệnh gọi thay vì viết từng bước — mỗi hãng điều khiển triển khai dưới dạng khác nhau (G-code ở Fanuc, lệnh cấu trúc ở Siemens).
- Hậu xử lý (post processor): phần mềm chuyển đường chạy dao tính toán trong CAM thành G-code đúng cú pháp của hệ điều khiển máy đích — mỗi hãng điều khiển cần post processor riêng.
- Khung tọa độ theo hướng dao (tool-orientation frame): cách Siemens tổ chức hệ tọa độ gắn theo hướng dao khi bù dao, khác mô hình bù dao bằng số hiệu offset (D/H) của Fanuc.
Tài liệu tham khảo
- IndustryArena forum (thảo luận kỹ thuật giữa các kỹ sư CNC vận hành đa hệ điều khiển), Converting Fanuc G code to Siemens 840D G code: https://en.industryarena.com/forum/converting-fanuc-g-code-seimens-840d-g-code--108569.html
- Industrial Monitor Direct, G-Code Reference: Fanuc vs Siemens vs Heidenhain vs Fagor: https://industrialmonitordirect.com/de/blogs/knowledgebase/cnc-g-code-reference-fanuc-siemens-heidenhain-fagor-compared
- Jide Machinery, What is the difference between Mitsubishi CNC system programming and FANUC CNC system programming?: https://www.jidemachinery.com/info/what-is-the-difference-between-mitsubishi-cnc-58915935.html
- Productivity Inc (Haas Factory Outlet), Haas Mill Programming: https://productivity.com/wp-content/uploads/2025/05/Mill-Programming-2025.pdf
Xem thêm
- Bảng tra G-code chuẩn FANUC →
- Bảng tra M-code chuẩn FANUC →
- G-code là gì? Cấu trúc chương trình NC →
Xem thêm trong chủ đề này: Mastercam: từ mô hình 3D đến G-code → · sai kích thước CNC do set gốc phôi/bù dao sai →