AICoKhi.comAI Cơ Khí
Lập trình CNC và CAM

Mã G và mã M trong CNC: đọc hiểu cấu trúc một chương trình từ đầu đến cuối

Đọc chương trình CNC từng dòng: mã G, mã M, lệnh modal, dấu thập phân, khác biệt tiện và phay, kèm một chương trình minh hoạ giải thích kỹ.

Over-the-shoulder view of a young machinist in a Bac Ninh workshop studying a blank sheet clipped beside a CNC milling machine control panel with a dark screen, cool fluorescent light

Một chương trình CNC là chuỗi dòng lệnh, mỗi dòng gồm các "từ" địa chỉ: một chữ cái chỉ loại lệnh và một con số chỉ giá trị. Mã G điều khiển chuyển động và chế độ làm việc (chạy nhanh, cắt thẳng, cắt cung, chọn hệ toạ độ, bù dao), còn mã M bật tắt chức năng của máy (trục chính, dung dịch trơn nguội, thay dao, dừng, kết thúc). Đọc được chương trình nghĩa là ở mỗi dòng trả lời được ba câu: dao đang ở đâu, sắp đi tới đâu, và đi bằng cách nào.

Bài này dành cho thợ đứng máy muốn hiểu chương trình phần mềm CAM xuất ra, sinh viên bắt đầu lập trình tay, và người bảo trì cần đọc chương trình khi máy dừng giữa chừng. Ví dụ viết theo cú pháp kiểu Fanuc vì đây là kiểu gặp nhiều ở xưởng Việt Nam; bộ điều khiển khác có chỗ khác hẳn. Mọi đoạn mã trong bài chỉ để minh hoạ, không phải chương trình chạy được cho máy nào. Trước khi đưa bất kỳ dòng nào lên máy, bạn đối chiếu sổ tay lập trình của đúng bộ điều khiển, mô phỏng, rồi chạy thử khô.

Một dòng lệnh gồm những gì: từ địa chỉ, giá trị và lệnh modal

Mỗi dòng (block) có thể bắt đầu bằng số thứ tự N, sau đó là các từ: G và M cho lệnh, X Y Z cho toạ độ, I J K hoặc R cho tâm hay bán kính cung tròn, F cho lượng chạy dao, S cho tốc độ trục chính, T cho số dao, H và D cho số ô bù dao. Bộ điều khiển đọc trước một số dòng để tính đường chạy cho mượt, nhưng về logic thì vẫn làm tuần tự: xong dòng này mới sang dòng sau. Số N chỉ để đánh dấu và tìm kiếm, máy không chạy theo thứ tự số N mà theo thứ tự dòng trong tệp.

Khái niệm quan trọng nhất là lệnh modal: lệnh có hiệu lực cho tới khi bị một lệnh cùng nhóm thay thế. Viết G01 một lần thì các dòng sau chỉ cần ghi toạ độ, máy vẫn hiểu là cắt thẳng với lượng chạy dao F gần nhất. G90 (toạ độ tuyệt đối) và G91 (toạ độ tương đối) cũng modal, G54 cũng modal. Ngược lại, có lệnh chỉ có hiệu lực đúng dòng của nó, như G04 (dừng chờ) hay G28 (về điểm chuẩn). Một dòng chỉ ghi "X25." có thể là chạy nhanh hoặc cắt, tuỳ lệnh nhóm chuyển động nào đang hiệu lực từ phía trên.

Vì thế, khi chạy lại từ giữa chương trình, máy không tự biết những trạng thái modal phía trước nếu bạn không khởi động đúng cách. Đây là nguồn va dao kinh điển, sẽ nhắc lại ở phần lỗi.

Chi tiết thứ hai người mới hay vấp là dấu chấm thập phân. Trên nhiều bộ điều khiển kiểu Fanuc, "X10" không có dấu chấm có thể bị hiểu là 10 đơn vị nhỏ nhất của máy, tức 0,01 mm hoặc 0,001 mm tuỳ tham số, chứ không phải 10 mm. Phần mềm CAM thường xuất đúng; lỗi hay xảy ra khi sửa tay tại máy. Thói quen an toàn là luôn ghi "X10." và kiểm tham số của máy mình đang dùng.

Các mã G gặp nhiều nhất và cách đọc

Bảng dưới gom những mã G xuất hiện trong phần lớn chương trình phay và tiện kiểu Fanuc. Cột cuối là điều bạn cần để ý khi đọc, vì cùng một mã có thể khác nghĩa giữa máy tiện và máy phay, hoặc giữa các hãng điều khiển.

MãÝ nghĩaĐiều cần để ý khi đọc
G00Chạy nhanh không cắtCác trục có thể không đi thẳng một đường mà mỗi trục tự chạy hết tốc độ, đường đi thực tế có thể gập khúc
G01Cắt theo đường thẳngCần F; dòng đầu tiên thiếu F là nhiều máy báo lỗi
G02 / G03Cắt cung theo chiều kim đồng hồ / ngược chiềuChiều được nhìn từ phía dương của trục vuông góc mặt phẳng; I J K thường tính từ điểm đầu cung
G04Dừng chờĐơn vị thời gian ghi bằng P hoặc X tuỳ máy
G17 / G18 / G19Chọn mặt phẳng XY / ZX / YZMáy tiện thường mặc định G18, máy phay G17
G20 / G21Đơn vị inch / mmLẫn đơn vị là sai gấp 25,4 lần
G28Về điểm chuẩn của máy qua một điểm trung gianNên viết cùng G91 với giá trị 0, xem giải thích bên dưới
G40 / G41 / G42Huỷ bù bán kính / bù trái / bù phảiPhải có đoạn chạy vào và chạy ra đủ dài
G43 / G49Bù chiều dài dao / huỷSố H phải đúng với dao đang lắp
G54 đến G59Chọn hệ toạ độ phôiChọn sai là cả chương trình lệch sang chỗ khác
G80 đến G89Huỷ và các chu trình khoan, ta rô, doaQuên G80 thì dòng chạy sau có thể khoan thêm một lỗ
G90 / G91Toạ độ tuyệt đối / tương đốiNhầm hai lệnh này là lỗi phổ biến nhất khi sửa tay

Trên máy tiện kiểu Fanuc còn gặp G96 (tốc độ cắt không đổi), G97 (vòng quay không đổi), G98 và G99 (lượng chạy dao theo phút hoặc theo vòng), và G50 dùng để giới hạn vòng quay tối đa. Trên máy phay, G98 và G99 lại mang nghĩa khác: chọn mặt phẳng rút dao trong chu trình khoan. Đây là ví dụ rõ nhất cho việc phải biết mình đang đọc chương trình của loại máy nào.

Mã M: những công tắc của máy

Mã M ít hơn và dễ nhớ hơn mã G, nhưng một phần lớn do nhà chế tạo máy định nghĩa chứ không phải hãng điều khiển. Hai máy cùng bộ điều khiển có thể dùng số M khác nhau cho việc mở cửa, thổi khí, kẹp phôi hay bật băng tải phoi. Các mã gần như thống nhất gồm:

  • M00: dừng chương trình bắt buộc, chờ người vận hành bấm chạy tiếp. Dùng khi cần lật phôi, đo kiểm giữa chừng, thổi sạch phoi.
  • M01: dừng có điều kiện, chỉ dừng khi công tắc dừng tuỳ chọn trên bảng điều khiển đang bật. Chương trình chạy thử thường đặt M01 trước mỗi lần thay dao để người đứng máy kiểm từng dao.
  • M03, M04, M05: trục chính quay thuận, quay ngược, dừng. Ta rô bằng chu trình sẽ tự đảo chiều, không cần viết tay.
  • M06: thay dao trên máy phay có ổ dao. Thường đi cùng T để chọn dao; nhiều máy cần về vị trí thay dao trước, việc này nằm trong chương trình con của nhà chế tạo máy.
  • M08, M09: bật, tắt dung dịch trơn nguội. Một số máy có thêm mã cho làm mát qua tâm dao hoặc thổi khí.
  • M30: kết thúc chương trình và quay về đầu. M02 cũng là kết thúc nhưng trên nhiều máy không quay về đầu.
  • M98, M99: gọi chương trình con và quay về. Hữu ích khi một biên dạng lặp ở nhiều vị trí.

Khi gặp một mã M lạ trong chương trình cũ, đừng đoán theo máy khác. Tra sổ tay của chính máy đó hoặc hỏi người lập trình cũ; một mã M lạ có thể là lệnh mở mâm kẹp.

Đọc thử một chương trình phay minh hoạ từng dòng

Đoạn dưới là ví dụ minh hoạ phay biên ngoài một tấm chữ nhật 60 × 40 mm, gốc phôi đặt ở góc trái dưới mặt trên phôi, dao phay ngón đường kính 10 mm. Số liệu tốc độ và lượng chạy dao chỉ để dòng lệnh đủ thành phần, không phải chế độ cắt khuyến nghị.

%
O1001 (VI DU MINH HOA - PHAY BIEN)
N10 G21 G17 G40 G49 G80 G90
N20 T1 M06 (DAO PHAY NGON D10)
N30 G54 G00 X-20. Y-20.
N40 S3000 M03
N50 G43 H01 Z50. M08
N60 Z5.
N70 G01 Z-3. F150
N80 G41 D01 X0 Y-5. F400
N90 Y40.
N100 X60.
N110 Y0
N120 X-5.
N130 G40 X-20. Y-20.
N140 G00 Z50. M09
N150 M05
N160 G91 G28 Z0
N170 G90
N180 M30
%

Dòng N10 là dòng an toàn: đặt đơn vị mm, mặt phẳng XY, huỷ mọi bù dao và chu trình còn sót, chọn toạ độ tuyệt đối. Nó đảm bảo chương trình không thừa hưởng trạng thái lạ từ lần chạy trước. N20 thay dao số 1. N30 chọn hệ toạ độ G54 và chạy nhanh tới điểm nằm ngoài phôi. N40 quay trục chính. N50 bật bù chiều dài dao theo ô H01, đưa dao xuống cao độ an toàn 50 mm và mở dung dịch.

N60 và N70 hạ dao: chạy nhanh tới 5 mm trên mặt phôi rồi cắt xuống độ sâu 3 mm. Dao hạ ở toạ độ X-20 Y-20, tức ngoài phôi, nên không cắm vào vật liệu. N80 bật bù bán kính trái trong lúc đi tới mép phôi. Bốn dòng N90 đến N120 đi một vòng theo chiều kim đồng hồ quanh biên ngoài; với trục chính quay thuận và bù trái, đây là kiểu phay thuận. N130 huỷ bù khi đã rời phôi. N140 đến N180 rút dao, tắt dung dịch, dừng trục chính, về điểm chuẩn trục Z và kết thúc.

Dòng N160 đáng nói riêng. G28 đi qua một điểm trung gian rồi mới về điểm chuẩn máy. Viết kèm G91 với Z0 nghĩa là điểm trung gian cách vị trí hiện tại 0 mm, tức đi thẳng lên. Nếu viết trong chế độ G90 thì Z0 là mặt trên phôi: dao sẽ đi xuống mặt phôi trước rồi mới lên. Ngay sau đó N170 trả về G90 để chương trình kế tiếp không bị kẹt ở toạ độ tương đối.

Chương trình tiện khác chương trình phay ở chỗ nào

X là đường kính. Phần lớn máy tiện đặt X theo đường kính chứ không theo bán kính: lệnh X40. đưa mũi dao tới đường kính 40 mm. Lượng ăn dao 1 mm mỗi bên tương ứng X giảm 2 mm. Một số máy cài theo bán kính, nên chương trình mang từ máy khác sang phải kiểm tham số này.

Z0 thường ở mặt đầu phôi. Trục Z dọc theo tâm, chiều âm đi vào phôi, chiều dương đi ra phía ụ động hoặc ra khỏi mâm cặp. Chọn Z0 ở mặt đầu giúp đọc bản vẽ dễ, vì kích thước chiều dài trên bản vẽ thường ghi từ mặt đầu.

Tốc độ cắt không đổi cần giới hạn vòng quay. G96 giữ vận tốc cắt ở mép dao không đổi, nên khi dao tiến về tâm, đường kính nhỏ dần thì vòng quay tăng dần. Không có dòng giới hạn vòng quay tối đa phía trước, mâm cặp có thể quay vượt mức an toàn của mâm hay của phôi kẹp. Khi khoả mặt tới tâm, kiểm kỹ dòng giới hạn này.

Mã dao gồm cả số bù. Kiểu T0101 nghĩa là dao ở vị trí 1, dùng ô bù số 1. Nếu ô bù lệch số so với vị trí dao, chương trình vẫn chạy nhưng dao đi sai kích thước.

Lượng chạy dao tính theo vòng. Máy tiện thường dùng mm trên vòng thay cho mm trên phút. F0.2 trên máy tiện và F0.2 trên máy phay là hai đại lượng khác hẳn nhau.

Bù bán kính mũi dao có thêm hướng mũi. Mũi dao tiện có bán kính nhỏ; khi tiện côn hay cung mà không bù, kích thước bị lệch. Bộ điều khiển cần biết hướng mũi dao, thường là một số ghi trong bảng bù. Chu trình tiện thô, tiện tinh và tiện ren có bài riêng trong danh mục này.

Dùng AI để học đọc chương trình: hỏi thế nào cho có ích

Một trợ lý AI trò chuyện giải thích chương trình khá tốt nếu bạn cho đủ ngữ cảnh, và cũng nhầm khá tự tin nếu bạn không cho. Quy trình dưới đây giúp bạn học nhanh mà không bị dẫn sai.

  1. Che thông tin trước khi dán: xoá tên khách, mã bản vẽ, tên công ty trong dòng chú thích, những đoạn chứa bí quyết riêng của xưởng. Chương trình của khách là tài sản của khách.
  2. Nói rõ ngữ cảnh ở câu đầu: loại máy (tiện hay phay, mấy trục), kiểu bộ điều khiển, đơn vị, gốc phôi đặt ở đâu.
  3. Yêu cầu giải thích dạng bảng ba cột: số dòng, việc máy làm, những lệnh modal đang có hiệu lực tại dòng đó. Cột thứ ba buộc AI theo dõi trạng thái thay vì giải nghĩa rời từng mã.
  4. Hỏi tiếp câu then chốt: dòng nào sẽ gây va hoặc hỏng chi tiết nếu một con số trên đó sai, và vì sao.
  5. Đối chiếu mọi giải thích về mã G, mã M với sổ tay lập trình của đúng máy. AI hay trộn nghĩa giữa các hãng, đôi khi tự đặt ra mã M không tồn tại.
  6. Ghi những gì vừa học vào sổ tay riêng của xưởng, kèm tên máy, để lần sau người khác không phải hỏi lại.

Câu lệnh mẫu: "Đây là chương trình phay ba trục, bộ điều khiển kiểu Fanuc, đơn vị mm, gốc phôi ở góc trái dưới mặt trên. Giải thích từng dòng thành bảng gồm số dòng, việc máy làm, các lệnh modal đang hiệu lực. Sau bảng, liệt kê những dòng nguy hiểm nhất nếu sai số liệu. Chỗ nào không chắc theo bộ điều khiển này thì ghi rõ là không chắc." Câu cuối quan trọng: nó cho AI một lối ra thay vì đoán.

Những lỗi đọc hiểu người mới hay mắc

Phần lớn sai lầm khi đọc chương trình không nằm ở chỗ không biết mã, mà ở chỗ quên ngữ cảnh. Danh sách dưới đây đáng dán cạnh máy trong những tháng đầu.

  • Đọc G02 và G03 theo cảm giác. Chiều kim đồng hồ được nhìn từ phía dương của trục vuông góc với mặt phẳng; trên máy tiện, vị trí đài dao trước hay sau tâm làm hình ảnh trên giấy đảo ngược.
  • Hiểu I J K là toạ độ tuyệt đối của tâm cung. Trên phần lớn máy kiểu Fanuc, đó là khoảng cách từ điểm đầu cung tới tâm. Dùng R thì gọn hơn nhưng với cung lớn hơn nửa vòng phải ghi R âm, và cung đúng một vòng tròn không viết được bằng R.
  • Quên lệnh modal đang treo, nhất là G91 sót lại sau một dòng về điểm chuẩn, hoặc chu trình khoan chưa được G80 huỷ.
  • Không để ý số H, D khác số dao. Dao số 5 dùng ô H05 là quy ước của nhiều xưởng chứ không phải luật của máy.
  • Mang chương trình từ máy này sang máy khác chỉ vì cùng hãng điều khiển. Khác nhà chế tạo máy là khác mã M, khác điểm thay dao, khác hành trình.
  • Sửa một con số giữa chương trình mà không đọc lại các dòng phía trước và phía sau. Một thay đổi ở dòng chạy vào có thể làm hỏng đường bù dao của cả biên dạng.

Khi đã đọc trôi một chương trình, bạn sẽ thấy phần lớn công việc lập trình hằng ngày không nằm ở việc nhớ mã, mà ở việc giữ trong đầu dao đang ở đâu và máy đang ở trạng thái nào.

Câu hỏi thường gặp

Học mã G có cần thiết không khi phần mềm CAM đã tự xuất chương trình?

Có. CAM xuất chương trình, nhưng người đứng máy vẫn phải đọc để kiểm gốc phôi, số bù, điểm hạ dao và các dòng rút dao trước khi chạy. Khi máy báo lỗi hay cần sửa nhanh một kích thước, người đọc được mã xử lý trong vài phút thay vì phải chờ người lập trình quay lại máy tính.

Chương trình kiểu Fanuc có chạy được trên bộ điều khiển hãng khác không?

Các lệnh cơ bản như G00, G01, G02, G03 khá giống nhau giữa nhiều hãng, nhưng chu trình, cách gọi chương trình con, mã M và cú pháp đặc biệt có thể khác hoàn toàn. Một số bộ điều khiển có chế độ tương thích, số khác dùng ngôn ngữ riêng. Muốn chuyển, cách đúng là xuất lại từ CAM với bộ hậu xử lý của máy đích.

Vì sao dòng đầu chương trình thường lặp lại G40 G49 G80 dù chưa dùng?

Đó là dòng an toàn để xoá trạng thái còn sót từ chương trình trước hoặc từ thao tác tay. Nếu lần chạy trước dừng giữa chừng khi bù bán kính đang bật, chương trình mới có thể khởi động với bù cũ. Dòng an toàn tốn vài ký tự nhưng loại bỏ cả một nhóm lỗi khó đoán.

Có nên nhờ AI viết nguyên một chương trình CNC từ bản vẽ không?

Không nên dùng làm chương trình chạy máy. AI có thể viết bản nháp cho chi tiết đơn giản để bạn học cấu trúc, nhưng nó không biết máy, đồ gá, dao thật và hay sai toạ độ, chiều cung, số bù. Chương trình thật nên lập bằng CAM hoặc tự viết, sau đó mô phỏng và chạy thử khô theo quy trình của xưởng.

Số thứ tự N có bắt buộc không?

Không bắt buộc. Nhiều chương trình CAM chỉ đánh số ở dòng thay dao hoặc bỏ hẳn để tệp gọn. Số N giúp tìm dòng nhanh khi muốn chạy lại từ một điểm, nhưng máy không dựa vào số N để chạy theo thứ tự, và trùng số N trên một số máy không gây lỗi nhưng làm việc tìm kiếm rối.

Dấu phần trăm ở đầu và cuối chương trình để làm gì?

Đó là ký hiệu đánh dấu đầu và cuối tệp khi truyền chương trình qua cổng truyền dữ liệu hoặc thẻ nhớ, theo thói quen từ thời băng đục lỗ. Nhiều máy cần có nó để nhận tệp đúng, một số máy khác bỏ qua. Bạn nên giữ đúng định dạng mà bộ hậu xử lý của máy mình xuất ra.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138