Hệ Tọa Độ CNC: G54-G59, G10, G54.1 & G52
Tại sao cần thay đổi Work Offset trong chương trình CNC?
Có hai trường hợp chính cần “điều chỉnh” coordinate system trong một chương trình G-code:
- Khi có nhiều phôi (blank) được kẹp trên pallet của máy.
- Khi một chi tiết có các đặc trưng hình học (geometrical features) giống nhau lặp lại ở nhiều vị trí khác nhau.
Bài viết này sẽ giải thích tất cả các G-Code liên quan đến work offset và coordinate system.

Các G-Code được đề cập trong bài:
- G54–G59: Work Offsets
- G10: Datum setting cho G54–G59
- G54.1: Additional Work Offsets
- G52: Temporary work offset (Offsets from offset)
- G92: Shift Work Offset
- G53: Machine Datum
G54 – G59 CNC Codes: Work Offsets & Coordinate Systems
G54, G55, G56, G57, G58 và G59 (thường gọi chung là “G54–G59”) là một nhóm CNC code dùng để xác định work offset — tức là vị trí của phôi trên bàn máy. Chúng bù đắp cho sự thay đổi vị trí của phôi so với điểm zero của máy (machine zero point). Khi lệnh G54 (hoặc G55, G56, v.v.) được thực thi, máy CNC sẽ sử dụng offset mới làm điểm zero cho tất cả các G-code tiếp theo. Đây là các modal command, và vẫn có hiệu lực cho đến khi bị hủy bởi lệnh G53 hoặc một G54–G59 CNC code khác.
G54 là work offset được sử dụng phổ biến nhất, và hầu hết các máy CNC khởi động với G54 được chọn làm mặc định. Thực hành tốt là luôn bao gồm G54 trong safety lines ở đầu chương trình để đảm bảo bạn biết work offset nào đang active, trừ khi bạn cần một offset khác.
G54 được coi là coordinate system thứ 1, G55 là thứ 2, và tiếp tục như vậy.
Cú pháp chỉ đơn giản là G54. Ví dụ:
N10 G54; (Chọn work offset thứ 1)
N20 G56; (Chọn work offset thứ 3)
Máy biết vị trí của từng coordinate system như thế nào? Offset của mỗi coordinate system so với machine datum được đặt bằng các parameter có thể chỉnh sửa trên màn hình controller, hoặc bằng CNC code G10 (xem bên dưới).
G10 CNC Code: Đặt Zero Point cho G54–G59
G10 xác định tọa độ của các work offset G54–G59.
Cú pháp: G10 Pn Xxx Yyy Zzz
- P: Số thứ tự Work Offset (1 – G54, 2 – G55, … , 6 – G59)
- xx, yy, zz: Tọa độ của work offset so với machine datum point.
N10 G10 P5 X250.0 Y250.0 (Đặt Datum của G58)
N20 G10 P2 X250.0 Y450.0 (Đặt Datum của G59)
Ví dụ: Pallet với nhiều phôi (G10 & G54–G59)

Một kỹ thuật phổ biến trong CNC Milling là đặt nhiều phôi (blank) trên một pallet và để máy gia công tất cả chúng cùng một lúc. Kỹ thuật này giúp tiết kiệm thời gian gia công và giảm khối lượng công việc cho người vận hành. Cùng một chương trình CNC được thực thi nhiều lần, và datum của chương trình dịch chuyển giữa các vị trí phôi.
CNC Program:
N10 G10 P1 X50.0 Y50.0 (Đặt Datum của G54)
N20 G10 P2 X50.0 Y250.0 (Đặt Datum của G55)
N30 G10 P3 X50.0 Y450.0 (Đặt Datum của G56)
N40 G10 P4 X250.0 Y50.0 (Đặt Datum của G57)
N50 G10 P5 X250.0 Y250.0 (Đặt Datum của G58)
N60 G10 P6 X250.0 Y450.0 (Đặt Datum của G59)
N70 G54; (Chuyển Datum 0,0 về origin của pallet thứ 1)
N80 M98 P1000 (Gọi chương trình gia công chi tiết)
N80 G55; (Chuyển Datum 0,0 về origin của pallet thứ 2)
N90 M98 P1000 (Gọi chương trình gia công chi tiết)
.
.
. Và tiếp tục như vậy…
G54.1 CNC Code: Additional Work Offsets
Sáu work offset có sẵn với G54–G59 có giới hạn nếu máy có một fixture plate lớn với nhiều phôi. Để giải quyết vấn đề này, các CNC controller đã mở rộng cú pháp để cho phép số lượng offset lớn hơn. Cú pháp phổ biến là G54.1 Pnnn, trong đó “nnn” là số từ 1 đến 48 (và trên một số máy, lên đến 300).
- Các offset 54.1 là bổ sung thêm vào sáu offset cơ bản.
- Một số controller có thể sử dụng cú pháp khác.
G-Code Ví dụ:
N10 G54.1 P28; (Chọn work offset số 28)
G52 CNC Code: Offsets to the Offset
G52 xác định một temporary shift (dịch chuyển tạm thời) trong active coordinate system. Nó cho phép máy điều chỉnh vị trí cho các G-code tiếp theo so với active work offset. G52 được sử dụng sau khi G54–G59 đã chọn một work offset.
Cú pháp: G52 Xxx Yyy Zzz
- Khi controller gặp G52, nó sẽ dịch chuyển datum của active work offset (G54–G59) theo giá trị xx, yy, zz.
- Temporary datum mới sẽ có hiệu lực cho đến khi gặp lệnh G52 tiếp theo hoặc khi một lệnh G54–G59 thay đổi work offset.
- Trường hợp sử dụng chính của G52 là chi tiết cơ khí có các đặc trưng hình học (geometrical features) giống nhau lặp lại. Trong trường hợp đó, chương trình CNC có thể gọi một subroutine để gia công feature, và G52 được dùng để dịch chuyển datum.
Ví dụ: Các Feature Lặp Lại Trên Cùng Một Chi Tiết

Nhiều chi tiết cơ khí có các geometrical features giống nhau lặp lại. Nếu chỉ có một phôi trên pallet, bạn có thể sử dụng kỹ thuật G54–G59 đã mô tả ở trên. Tuy nhiên, nếu bạn có nhiều phôi trên pallet, một cách phổ biến để xử lý các datum bổ sung trong phôi là dùng G52.
* G52 đặt một temporary coordinate system tương đối so với coordinate system đã được chọn trước đó.
CNC Program:
G54 (Chọn datum cho chi tiết thứ 1)
G52 X50 Y20 (Dịch chuyển datum đến vị trí của feature thứ 1 trên chi tiết)
M98 P2000 (Gia công feature)
G52 X150 Y20 (Dịch chuyển Datum đến feature tiếp theo trên chi tiết)
M98 P2000 (Gia công feature)
.
.
. Và tiếp tục như vậy…
G92 CNC Code: Dịch Chuyển Tạm Thời Toàn Bộ Work Coordinate System
G92 CNC code dịch chuyển toàn bộ các coordinate system (G54–G59 và G54.1) sao cho tọa độ đã cho trở thành datum của active work offset. Tất cả các coordinate system không active cũng dịch chuyển cùng với active coordinate system, duy trì quan hệ vị trí giữa chúng.
Ví dụ: giả sử G55 là active work offset, và lệnh G92 X10 Y10 được thực thi. Datum của G55 dịch chuyển (10, 10), và tọa độ (10, 10) trở thành (0, 0). Ngoài ra, datum của G54–G59 (và G54.1) cũng đều dịch chuyển (10, 10), duy trì mối quan hệ ban đầu giữa tất cả các work offset.
- G92 là non-modal (chỉ có hiệu lực trong block mà nó được đặt).
- G92 hủy bỏ offset được đặt bởi G52.
- Để hủy lệnh G92, bạn cần nhập một lệnh G92 khác với giá trị ngược lại.
CNC Program Ví Dụ:
G00 G90 G55 X0 Y0 (Rapid về origin của G55)
G92 X10 Y10 (Dịch chuyển origin của G55 đi 10,10 - Không có chuyển động)
G00 G90 G55 X0 Y0 (Rapid đến origin mới vừa được xác định)
G92 X-10 Y-10 (Dịch chuyển origin trở về giá trị ban đầu - Không có chuyển động)
G00 G90 G55 X0 Y0 (Rapid về origin G55 ban đầu)
G53: Temporary Machine Datum
G53 tạm thời hủy bỏ active work offset (G54–G59) và sử dụng “machine coordinate system” làm datum.
- Lệnh là non-modal (chỉ có hiệu lực trong block mà nó được đặt).
- Lệnh bỏ qua tool offset.
Điểm zero của mỗi trục là vị trí mà máy di chuyển đến khi thực hiện Zero Return (G28). Thông thường đây là vị trí thay dao (tool-change position).
Cú pháp: G53 G0 X0 Y0 Z0 (Đặt machine datum làm active coordinate system và di chuyển đến vị trí đó)
Work Offset Safety Practices
Work offset là modal command và vẫn còn hiệu lực ngay cả sau khi khởi động lại chương trình. Điều này có thể gây ra vấn đề nếu bạn không chú ý. Các chương trình CNC nên bao gồm safety lines ở đầu mỗi phần chương trình để đảm bảo work offset đúng đang active.
Ví dụ tình huống: Nếu bạn chỉ chạy phần drilling của một chương trình đã từng sử dụng G55 cho roughing, máy sẽ tiếp tục sử dụng G55 thay vì G54 dự định, trừ khi được chỉ định rõ ràng. Điều này có thể dẫn đến máy bị crashed hoặc chi tiết bị hỏng.
Best practice: Bao gồm lệnh work offset cần thiết ở đầu mỗi phần chương trình, không chỉ một lần ở đầu chương trình.
Work Offset Macro Variables
Trên các máy CNC có khả năng lập trình tham số (parameterized programming), macro variable tương ứng với từng tọa độ work offset. Đối với Fanuc controls:
#5221– G54 X Axis Offset#5222– G54 Y Axis Offset#5223– G54 Z Axis Offset#5224– G54 Fourth Axis Offset
Các biến này có thể được truy cập để đọc giá trị hiện tại hoặc chỉnh sửa offset coordinate theo cách lập trình (programmatically).
Kết Luận
Hiểu và sử dụng thành thạo các G-Code liên quan đến coordinate system — từ G54–G59, G10, G54.1, G52, G92 đến G53 — là nền tảng quan trọng để lập trình CNC chuyên nghiệp. Việc nắm vững work offset giúp bạn:
- Gia công nhiều phôi trên cùng một pallet một cách hiệu quả và tự động.
- Xử lý các geometrical feature lặp lại trên chi tiết mà không cần viết lại chương trình nhiều lần.
- Tránh các lỗi nguy hiểm do sai work offset, bảo vệ máy và chi tiết gia công.
- Tối ưu hóa thời gian lập trình và vận hành máy CNC.
Dù bạn đang sử dụng controller Fanuc, Siemens, hay Mitsubishi, các khái niệm về coordinate system và work offset đều có vai trò cốt lõi trong mọi hệ thống CNC hiện đại. Hãy luôn kiểm tra và đặt đúng work offset trước khi chạy chương trình để đảm bảo an toàn và chất lượng gia công.
👉 Liên hệ HiCADCAM để được tư vấn miễn phí về khóa học Lập trình CAM và dịch vụ Post Processor chuyên nghiệp
#CNC #GCode #WorkOffset #CoordinateSystem #G54 #G55 #G56 #G57 #G58 #G59 #G10 #G52 #G53 #G92 #CNCProgramming #LậpTrìnhCNC #CAM #PostProcessor #CNCMilling #Fanuc #HiCADCAM #MáyCNC #GiaCôngCNC #CNCViệtNam #LậpTrìnhCAM #KhóaHọcCNC

