Memahami G-Code & M Code: Dasar Panduan untuk Operator CNC Pemula
Apa Itu G-Code? Panduan Dasar Membaca Program CNC untuk Pemula
Kalau kamu menggunakan mesin CNC, cepat atau lambat kamu akan bertemu dengan G-code.
G-code adalah bahasa instruksi yang digunakan controller CNC untuk menentukan bagaimana mesin harus bergerak dan bekerja.
Melalui G-code, controller menerima perintah seperti:
-
bergerak ke posisi tertentu,
-
memotong dengan kecepatan tertentu,
-
menaikkan atau menurunkan sumbu Z,
-
membuat gerakan lurus atau melingkar,
-
menyalakan spindle,
-
mengatur kecepatan spindle,
-
melakukan pause,
-
hingga mengakhiri program.
Contoh sederhana:
G0 X10 Y20 Z5
G1 X50 Y20 Z-3 F800
M3 S18000
Bagi pemula, baris-baris tersebut mungkin terlihat seperti kode yang rumit.
Padahal setelah memahami beberapa perintah dasar, G-code sebenarnya cukup mudah dibaca.
Dan kabar baiknya, dalam penggunaan CNC modern kamu tidak perlu menulis seluruh G-code secara manual.
Software CAM seperti Fusion 360, Vectric Aspire, VCarve, Estlcam, dan software lainnya akan membuat G-code secara otomatis berdasarkan desain dan toolpath yang sudah kamu tentukan.
Namun memahami dasar G-code tetap sangat penting.
Pengetahuan ini sangat membantu ketika kamu ingin:
-
mencari penyebab mesin bergerak ke arah yang salah,
-
mengecek kedalaman cutting,
-
memeriksa feed rate,
-
memastikan spindle menyala,
-
mencari penyebab tool menabrak material,
-
atau melakukan perubahan kecil pada program.
Bagaimana Alur G-Code dari Desain Sampai Mesin Bergerak?
Secara sederhana, alurnya seperti ini:
DESAIN
↓
CAD / CAM
↓
TOOLPATH
↓
POST PROCESSOR
↓
G-CODE
↓
SENDER
↓
CONTROLLER CNC
↓
MOTOR / SPINDLE
↓
MESIN BERGERAK
Misalnya kamu membuat sebuah kotak berukuran:
100 × 50 mm
di Fusion 360 atau Vectric Aspire.
Kemudian kamu menentukan:
-
endmill yang digunakan,
-
kedalaman potong,
-
feed rate,
-
spindle speed,
-
jumlah pass,
-
dan strategi cutting.
Software CAM kemudian menghitung lintasan tool.
Setelah dilakukan post-process, lintasan tersebut diterjemahkan menjadi G-code yang dapat dipahami oleh controller CNC.
Contohnya:
G21
G90
G0 X0 Y0
G1 Z-2 F300
G1 X100 F1000
G1 Y50
G1 X0
G1 Y0
Controller kemudian membaca perintah tersebut satu per satu dan mengubahnya menjadi pulsa untuk motor stepper serta sinyal untuk spindle.
Struktur Dasar Satu Baris G-Code
Satu baris G-code biasanya terdiri dari beberapa kombinasi huruf dan angka.
Contoh:
G1 X50 Y20 Z-3 F800
Baris tersebut dapat dibaca sebagai:
G1 → bergerak lurus
X50 → menuju posisi X = 50 mm
Y20 → menuju posisi Y = 20 mm
Z-3 → menuju posisi Z = -3 mm
F800 → feed rate 800 mm/menit
Setiap kombinasi huruf dan angka sering disebut sebagai word.
Hurufnya disebut address, sedangkan angka setelahnya adalah nilai.
Contohnya:
X50
berarti:
Address = X
Value = 50
Beberapa address yang paling sering ditemukan adalah:
G → fungsi gerakan atau mode
M → fungsi mesin
X → posisi sumbu X
Y → posisi sumbu Y
Z → posisi sumbu Z
F → feed rate
S → spindle speed
I/J/K → parameter arc
Dengan memahami beberapa huruf ini saja, kamu sudah bisa membaca sebagian besar G-code CNC router sederhana.
G-Code dan M-Code: Apa Bedanya?
Dalam program CNC kamu akan sering menemukan dua jenis perintah:
G-code
dan
M-code.
Secara sederhana:
G-code lebih banyak mengatur gerakan dan sistem koordinat.
Sedangkan:
M-code lebih banyak mengatur fungsi mesin.
Contohnya:
G0 X50 Y50
memerintahkan mesin bergerak.
Sedangkan:
M3 S18000
memerintahkan spindle menyala.
Tidak semua controller mendukung seluruh G-code dan M-code yang ada pada mesin industri.
GRBL dan grblHAL menggunakan subset tertentu yang memang relevan untuk CNC router, laser, dan mesin sejenis.
G-Code Gerakan yang Paling Sering Digunakan
G0 — Rapid Move
G0 digunakan untuk menggerakkan mesin dengan cepat menuju posisi tertentu.
Contoh:
G0 X50 Y30
Artinya mesin bergerak cepat menuju:
X = 50
Y = 30
Gerakan G0 biasanya digunakan untuk:
-
menuju titik awal cutting,
-
berpindah dari satu area toolpath ke area lain,
-
menaikkan Z,
-
positioning tanpa memotong material.
Contoh:
G0 Z10
G0 X100 Y50
Artinya:
-
naikkan tool ke Z10,
-
kemudian pindah cepat ke X100 Y50.
Urutan seperti ini jauh lebih aman karena tool terlebih dahulu diangkat sebelum melakukan rapid di X dan Y.
G1 — Linear Cutting Move
G1 digunakan untuk gerakan lurus dengan feed rate tertentu.
Contoh:
G1 X100 Y50 F800
Artinya:
bergerak lurus menuju X100 Y50 dengan feed rate 800 mm/menit.
G1 merupakan salah satu perintah yang paling sering digunakan saat cutting.
Contoh lainnya:
G1 Z-3 F300
Artinya tool turun menuju kedalaman:
Z = -3 mm
dengan feed:
300 mm/menit.
Gerakan turun seperti ini sering disebut:
plunge move.
Apa Bedanya G0 dan G1?
Perbedaannya sangat penting.
G0 → gerakan cepat / positioning
G1 → gerakan terkontrol menggunakan feed rate
Bayangkan kamu ingin berpindah dari satu lubang ke lubang lain.
Tool sebaiknya:
naik
↓
rapid ke lokasi berikutnya
↓
turun
↓
mulai cutting
Bukan:
rapid sambil tool masih berada di dalam material
Karena hal tersebut bisa menyebabkan:
-
endmill patah,
-
material rusak,
-
clamp tertabrak,
-
atau motor kehilangan langkah.
G2 dan G3 — Gerakan Melingkar
Untuk membuat lingkaran atau arc, controller dapat menggunakan:
G2 → clockwise / searah jarum jam
G3 → counter-clockwise / berlawanan arah jarum jam
Contoh:
G2 X50 Y50 I25 J0
Parameter:
X/Y → titik akhir arc
I/J → offset pusat lingkaran terhadap titik awal
Pada beberapa sistem, radius juga dapat ditentukan menggunakan R.
Contohnya:
G2 X50 Y50 R25
Namun penggunaan dan dukungan format arc dapat bergantung pada controller dan post processor.
Pada penggunaan sehari-hari, kamu biasanya tidak perlu menghitung G2/G3 secara manual karena software CAM akan membuatnya otomatis.
G20 dan G21 — Menentukan Unit
Controller harus mengetahui apakah angka yang diterima menggunakan:
inch
atau:
millimeter.
Untuk itu digunakan:
G20 → inch
G21 → millimeter
Pada CNC yang umum digunakan di Indonesia biasanya digunakan:
G21
Setelah G21 aktif:
G1 X100
berarti bergerak ke:
X = 100 mm
Sedangkan jika G20 aktif:
G1 X1
berarti:
1 inch
Kesalahan unit bisa menyebabkan gerakan mesin menjadi sangat berbeda dari yang diharapkan.
Karena itu program CNC biasanya menentukan unit pada bagian awal program.
G90 dan G91 — Absolute vs Incremental
Ini adalah salah satu konsep G-code yang sangat penting.
G90 — Absolute Positioning
Pada mode G90, semua posisi dihitung dari titik nol Work Coordinate.
Contoh:
G90
G0 X20
G0 X50
Gerakan pertama menuju:
X = 20
Gerakan kedua menuju:
X = 50
Bukan bertambah 50 mm.
G91 — Incremental Positioning
Pada mode G91, posisi dihitung relatif terhadap posisi sekarang.
Contoh:
G91
G0 X20
G0 X50
Jika posisi awal adalah X0:
gerakan pertama:
X0 → X20
gerakan kedua:
X20 → X70
karena perintah kedua berarti:
bergerak lagi +50 mm dari posisi sekarang.
Kenapa G90 dan G91 Harus Dipahami?
Bayangkan mesin sedang berada pada:
X = 300 mm
kemudian kamu menjalankan:
G91
G0 X100
Mesin tidak menuju X100.
Mesin bergerak:
300 + 100 = 400 mm
Karena itu salah memahami G90/G91 bisa menyebabkan gerakan yang tidak terduga.
Pada toolpath CNC router, G90 atau absolute positioning sangat umum digunakan.
X, Y, dan Z
Tiga parameter ini menentukan posisi axis.
X → kiri / kanan
Y → depan / belakang
Z → naik / turun
Contoh:
G0 X100 Y50 Z10
memerintahkan mesin menuju:
X = 100
Y = 50
Z = 10
Koordinat tersebut biasanya mengacu pada Work Coordinate aktif seperti G54.
Mengenal Nilai Z Positif dan Negatif
Pada banyak setup CNC router, permukaan material dibuat sebagai:
Z0
Maka:
Z+5
berarti tool berada 5 mm di atas material.
Sedangkan:
Z-3
berarti tool masuk 3 mm ke dalam material.
Contoh:
G0 Z5
G1 Z-3 F300
Artinya:
rapid ke 5 mm di atas material
↓
turun sampai kedalaman 3 mm
Karena itu nilai Z merupakan salah satu bagian pertama yang perlu diperiksa ketika debugging G-code.
F — Feed Rate
F menentukan kecepatan gerakan cutting.
Contoh:
G1 X100 F800
berarti bergerak menuju X100 dengan feed:
800 mm/menit
jika menggunakan G21.
Feed rate yang tepat bergantung pada:
-
material,
-
diameter endmill,
-
jumlah flute,
-
RPM spindle,
-
depth of cut,
-
rigiditas mesin,
-
dan kemampuan spindle.
Feed terlalu tinggi dapat menyebabkan:
-
motor kehilangan langkah,
-
tool patah,
-
spindle overload,
-
hasil potongan kasar.
Tetapi feed terlalu rendah juga tidak selalu baik karena dapat menyebabkan tool lebih banyak menggesek daripada memotong dan menghasilkan panas.
S — Spindle Speed
Parameter S biasanya digunakan untuk menentukan kecepatan spindle.
Contoh:
S18000
berarti target spindle speed:
18.000 RPM
Biasanya digunakan bersama M3:
M3 S18000
Namun apakah spindle benar-benar berputar tepat 18.000 RPM tergantung sistem kontrol spindle.
Jika CNC menggunakan router manual tanpa kontrol RPM dari controller, nilai S mungkin tidak memiliki efek langsung terhadap kecepatan aktual router.
M3 — Menyalakan Spindle
Contoh:
M3 S18000
secara umum berarti:
nyalakan spindle dengan arah normal/clockwise dan target speed 18.000 RPM.
Pada CNC router, M3 merupakan perintah spindle yang paling umum.
M5 — Mematikan Spindle
Untuk menghentikan spindle digunakan:
M5
Biasanya terdapat pada akhir program.
Contoh:
G0 Z10
M5
Artinya:
-
tool naik ke posisi aman,
-
spindle dimatikan.
M0 — Program Pause
M0 digunakan untuk menghentikan program sementara dan menunggu tindakan operator.
Contoh penggunaan:
M0
dapat digunakan ketika operator harus:
-
mengganti tool,
-
memindahkan clamp,
-
memeriksa benda kerja,
-
atau melakukan operasi manual tertentu.
Perilaku pause dapat sedikit berbeda tergantung controller dan software sender yang digunakan.
M30 — Akhir Program
M30 secara tradisional digunakan sebagai penanda:
end of program.
Contoh:
M5
M30
Artinya spindle dimatikan dan program selesai.
Namun jangan menganggap M30 otomatis membuat mesin kembali ke titik awal atau posisi tertentu.
Perilaku akhir job tergantung controller, sender, dan isi G-code.
Jika kamu ingin mesin bergerak ke posisi tertentu setelah cutting, gerakan tersebut harus memang ditentukan dalam program atau ditangani oleh sender/controller.
G54 — Work Coordinate System
Pada CNC, titik nol benda kerja biasanya menggunakan Work Coordinate System.
Yang paling umum adalah:
G54
Selain G54 tersedia pula sistem seperti:
G55
G56
G57
G58
G59
Masing-masing dapat memiliki offset zero sendiri.
Ini berguna jika satu meja CNC mempunyai beberapa fixture.
Misalnya:
G54 → fixture pertama
G55 → fixture kedua
G56 → fixture ketiga
Untuk penggunaan sederhana, G54 biasanya sudah cukup.
Modal Command: Kenapa G1 Tidak Selalu Ditulis Ulang?
Salah satu karakter penting G-code adalah banyak perintah bersifat modal.
Artinya sebuah mode tetap aktif sampai diganti oleh perintah lain.
Contoh:
G1 X50 F800
Y30
X0
Y0
Setelah G1 aktif, baris berikutnya masih dianggap sebagai gerakan G1 selama belum diganti dengan G0, G2, G3, atau mode gerakan lainnya.
Secara konseptual program tersebut sama seperti:
G1 X50 F800
G1 Y30
G1 X0
G1 Y0
Hal yang sama berlaku untuk banyak mode seperti:
G20 / G21
G90 / G91
G54 / G55
Karena itu ketika membaca G-code, jangan hanya membaca satu baris secara terpisah.
Perhatikan juga mode yang sudah aktif dari baris sebelumnya.
Contoh Program G-Code Sederhana
Berikut contoh sederhana untuk membuat lintasan persegi panjang:
50 × 30 mm
dengan kedalaman:
3 mm
G21
G90
G54
G0 Z5
G0 X0 Y0
M3 S18000
G0 Z1
G1 Z-3 F300
G1 X50 F800
G1 Y30
G1 X0
G1 Y0
G0 Z10
M5
M30
Sekarang mari kita baca satu per satu.
Membaca Program Baris per Baris
G21
Gunakan unit milimeter.
G90
Gunakan absolute positioning.
G54
Gunakan Work Coordinate G54.
G0 Z5
Angkat tool menuju Z5.
G0 X0 Y0
Rapid menuju titik X0 Y0.
M3 S18000
Nyalakan spindle dengan target 18.000 RPM.
G0 Z1
Turunkan cepat sampai 1 mm di atas permukaan material.
G1 Z-3 F300
Masuk ke material hingga kedalaman 3 mm menggunakan plunge feed 300 mm/menit.
Kemudian:
G1 X50 F800
G1 Y30
G1 X0
G1 Y0
Tool membuat lintasan persegi panjang.
Terakhir:
G0 Z10
Tool dinaikkan.
M5
Spindle dimatikan.
M30
Program selesai.
Gambaran Gerakan Program
Secara visual:
X0 Y30 X50 Y30
●────────────────────●
│ │
│ │
│ │
│ │
●────────────────────●
X0 Y0 X50 Y0
Tool mulai dari:
X0 Y0
kemudian:
X0 Y0
↓
X50 Y0
↓
X50 Y30
↓
X0 Y30
↓
X0 Y0
Dengan memahami pola sederhana seperti ini, membaca program CNC yang lebih panjang akan terasa jauh lebih mudah.
Jangan Langsung Menjalankan G-Code yang Tidak Dikenal
Jika mendapatkan file G-code dari orang lain atau dari internet, jangan langsung menjalankannya pada mesin.
Periksa terlebih dahulu beberapa hal penting.
Apakah unitnya:
G20 atau G21?
Apakah positioning-nya:
G90 atau G91?
Apakah koordinat X/Y masih berada dalam area kerja?
Apakah Z bergerak terlalu dalam?
Apakah spindle command sesuai dengan mesin?
Apakah feed rate masuk akal?
Apakah post processor memang dibuat untuk controller yang digunakan?
G-code yang dibuat untuk mesin tertentu belum tentu aman dijalankan pada mesin lain.
Cara Debugging G-Code
Memahami G-code sangat berguna ketika mesin melakukan sesuatu yang tidak sesuai harapan.
Berikut beberapa hal yang bisa diperiksa.
1. Periksa Kedalaman Z
Cari nilai seperti:
Z-3
Z-5
Z-10
Kemudian bandingkan dengan ketebalan material.
Jika material hanya:
10 mm
tetapi ada perintah:
Z-50
jelas ada sesuatu yang perlu diperiksa.
Tetapi jangan langsung menilai nilai Z hanya dari angkanya.
Periksa juga apakah program menggunakan:
G90
atau:
G91
karena artinya bisa berbeda.
2. Periksa Safe Z
Sebelum rapid move X/Y, biasanya tool perlu berada pada clearance yang aman.
Contoh yang lebih aman:
G0 Z10
G0 X100 Y100
Yang berpotensi berbahaya:
G0 X100 Y100
ketika tool masih berada di dalam material.
CAM yang dikonfigurasi dengan benar biasanya mengatur retract dan clearance secara otomatis.
3. Periksa Feed Rate
Cari parameter:
F
Contoh:
F800
atau:
F3000
Pastikan nilainya sesuai dengan:
-
material,
-
tool,
-
spindle,
-
dan kemampuan mesin.
Jika CNC kecil tiba-tiba diperintah cutting aluminium dengan:
F10000
tentu perlu diperiksa.
4. Periksa Spindle
Cari:
M3
dan:
M5
Pastikan spindle menyala sebelum tool benar-benar mulai masuk material.
Secara ideal urutannya:
Spindle ON
↓
tunggu spindle mencapai RPM
↓
plunge
↓
cutting
Pada beberapa setup CAM atau controller, dwell dapat digunakan agar spindle mempunyai waktu mencapai kecepatan.
5. Periksa G20 dan G21
Salah unit dapat menghasilkan perbedaan gerakan sebesar:
25,4 kali.
Misalnya kamu mengira program menggunakan millimeter tetapi ternyata:
G20
maka angka:
X10
berarti:
10 inch
atau sekitar:
254 mm.
Karena itu G20/G21 termasuk hal pertama yang perlu diperiksa.
6. Periksa G90 dan G91
Kesalahan antara absolute dan incremental positioning dapat menghasilkan gerakan mesin yang sangat tidak terduga.
Jika melihat:
G91
perhatikan seluruh perintah setelahnya.
Pastikan program kembali ke:
G90
jika memang diperlukan.
7. Periksa Posisi X dan Y
Lihat nilai terbesar yang muncul.
Contoh:
X850
Y1200
Jika mesin hanya mempunyai area kerja:
X = 800 mm
Y = 1000 mm
maka program jelas membutuhkan perhatian.
Soft limit dapat membantu mencegah beberapa gerakan di luar area kerja jika homing dan konfigurasi mesin sudah benar.
G-Code Error Belum Tentu Berarti G-Code Salah
Jika sender menampilkan error saat menjalankan program, ada beberapa kemungkinan:
-
command tidak didukung controller,
-
post processor tidak sesuai,
-
format arc tidak sesuai,
-
karakter tertentu tidak dikenali,
-
parameter berada di luar batas,
-
mesin sedang dalam alarm,
-
soft limit aktif,
-
atau modal state tidak sesuai.
Karena itu sangat penting menggunakan post processor yang sesuai dengan firmware CNC.
Jika mesin menggunakan GRBL atau grblHAL, gunakan post processor yang memang dibuat untuk GRBL/grblHAL.
Jangan sembarang menggunakan post processor Fanuc, Mach3, LinuxCNC, atau controller industri lain tanpa memahami perbedaannya.
Apa Itu Post Processor?
Software CAM sebenarnya tidak langsung membuat satu jenis G-code universal.
Setelah toolpath dibuat, post processor menerjemahkan toolpath tersebut menjadi format G-code yang cocok dengan controller.
Contohnya:
Fusion 360
↓
Toolpath
↓
GRBL Post Processor
↓
G-code untuk GRBL
Post processor menentukan banyak hal seperti:
-
format G-code,
-
command spindle,
-
arc,
-
tool change,
-
program header,
-
program footer,
-
dan command tertentu yang didukung mesin.
Karena itu pemilihan post processor sama pentingnya dengan toolpath itu sendiri.
Apakah Harus Hafal Semua G-Code?
Tidak.
Operator CNC tidak perlu menghafal ratusan perintah.
Untuk CNC router berbasis GRBL/grblHAL, memahami beberapa command utama saja sudah sangat membantu:
G0
G1
G2
G3
G20
G21
G90
G91
G54
M3
M5
X
Y
Z
F
S
Setelah memahami perintah tersebut, kamu sudah dapat membaca bagian besar dari G-code CNC router sehari-hari.
Perintah lainnya dapat dipelajari sesuai kebutuhan.
Tips Aman Sebelum Menjalankan G-Code Baru
Sebelum menekan Start, biasakan melakukan beberapa pemeriksaan:
-
lakukan homing,
-
pastikan Work Zero benar,
-
pastikan CAM origin sama dengan zero mesin,
-
cek ukuran material,
-
cek ukuran endmill,
-
cek Z depth,
-
cek feed rate,
-
cek spindle speed,
-
cek posisi clamp,
-
cek clearance Z,
-
dan lihat preview toolpath.
Untuk program yang baru pertama kali dijalankan, lakukan air cut jika memungkinkan.
Naikkan Z di atas material lalu jalankan mesin tanpa cutting.
Perhatikan apakah gerakan X/Y sesuai dengan area benda kerja.
Beberapa menit pengecekan dapat mencegah:
-
tool patah,
-
material rusak,
-
clamp tertabrak,
-
spoilboard terpotong terlalu dalam,
-
bahkan crash mesin.
Kesimpulan
G-code adalah bahasa yang menghubungkan software CAM dengan mesin CNC.
Software CAM menentukan toolpath.
Post processor mengubah toolpath menjadi G-code.
Controller membaca G-code dan menerjemahkannya menjadi gerakan motor dan kontrol spindle.
Secara sederhana:
CAD
↓
CAM
↓
TOOLPATH
↓
POST PROCESSOR
↓
G-CODE
↓
CONTROLLER
↓
CNC BERGERAK
Kamu tidak harus menjadi programmer untuk menggunakan CNC.
Sebagian besar G-code akan dibuat otomatis oleh software CAM.
Tetapi memahami perintah dasar seperti:
G0, G1, G2, G3, G20, G21, G90, G91, M3, M5, X, Y, Z, F dan S
akan membuat kamu jauh lebih mudah memahami apa yang sedang dilakukan mesin.
Lebih penting lagi, kemampuan membaca G-code dapat membantu mendeteksi kesalahan sebelum kesalahan tersebut berubah menjadi crash mesin.
Jadi ketika mesin CNC melakukan gerakan yang terasa aneh, jangan langsung menyalahkan motor, controller atau firmware.
Buka G-code-nya.
Lihat beberapa baris sebelum kejadian.
Sering kali, dari sana kita sudah bisa mengetahui:
apa yang diperintahkan software, apa yang dibaca controller, dan kenapa mesin melakukan gerakan tersebut.





