CNC Programlama ve CAMG ve M kodu referansı
G00, G01, G02, G03: hareket komutları
Bir CNC programının dört hareket kodu: hızlı hareket, düz hat üzerinde ilerleme ve dairesel interpolasyon. Yay yönünün ve düzlemin nasıl tanımlandığı, yay merkezinin I J K ya da R ile verilmesi, mutlak ve artışlı koordinatlar ve tornalardaki istisnalar, ilerleme türleri ve bekleme, modal kodlar, FANUC, Haas, Siemens, HEIDENHAIN ve LinuxCNC’nin farkları ve kaynakların uyardığı hatalar. Satır satır oynayan bir programla.
YayındaGüncellendi 30 Ekim 202610 dk okuma
Bir program ve çizdiği yol: hızlı hareket, düz hat üzerinde ilerleme, saat ibresi yönünde ve ters yönde yaylar
- Tek modal grup: bir hareket kodu, yerine aynı gruptan bir başkası gelene kadar geçerlidir (FANUC, Haas)
- G00–G03
- Yay başlangıcından yay merkezine olan uzaklık (Haas, NIST, MEB)
- I J K
- Eksi yarıçap 180°’den büyük yayı verir (Haas, NIST)
- R < 0
- Program biçimi standardı; 2009 baskısı 2025’te yeniden onaylandı (ISO)
- ISO 6983-1
Bir CNC programı takımı başlıca dört sözcükle hareket ettirir: konuma hızlı hareket için G00, ilerleme hızında düz bir kesme için G01, yaylar için G02 ve G03. Dördü de FANUC’un G kodu listesinde aynı gruptadır, 01 grubunda; Haas’ın listesinde de dördü bu gruptadır (buradaki Haas ifadeleri Haas Factory Outlet eğitim kitaplarından gelir). Bu gruptan bir kod, yerine aynı gruptan bir başkası gelene kadar geçerli kalır. Program biçimini ve adres sözcüklerini tanımlayan ISO standardı ISO 6983-1’dir: konumlama, doğrusal hareket ve kontur denetimi yapan sistemler için veri biçimi. 2009 tarihli ikinci baskısı 1982 baskısının yerini almış ve 2025’te yeniden onaylanmıştır. ABD’de dil RS274 adıyla standartlaştırıldı; NIST’e göre (2000) RS274’ün en son standart sürümü 1979’da tamamlanan RS274-D’dir.
| Kod | Ne yapar | Üreticilerin anlatımıyla |
|---|---|---|
| G00 | Hızlı hareket (konumlama) | FANUC: konumlama (hızlı hareket); MEB: “kesici takımın bir noktadan diğer bir noktaya doğrusal olarak hızlı hareketini sağlar” |
| G01 | İlerleme hızında düz hat | Haas: eksenleri komut verilen ilerlemede hareket ettirir, esas olarak kesme içindir |
| G02 | Yay, saat ibresi yönünde | MEB: “Saat ibresi yönünde dairesel hareket/interpolasyon” |
| G03 | Yay, saat ibresine ters yönde | MEB: “Saat ibresine ters yönde dairesel hareket/interpolasyon” |
- 1
G90 G17 - 2
G00 X0 Y-10 - 3
G01 X40 Y-10 F200 - 4
G03 X60 Y10 I0 J20 - 5
G01 Y40 - 6
G02 X40 Y60 R20 - 7
G00 X0 Y0
G90: koordinatlar mutlaktır, program sıfırından ölçülür. G17: yaylar XY düzleminde.
G00: hızlı, ama her zaman düz değil
G00 programlanan ilerlemeyle değil, tezgâhın hızlı hareket hızıyla gider. Hangi yoldan gittiği kumandaya bağlıdır. Haas’a göre hızlı hareket genellikle düz bir çizgide olmaz ve eksenlerin hepsi hareketlerini aynı anda bitirmeyebilir. Bir FANUC patenti de aynısını anlatır: eksenler kesme komutundaki gibi eş zamanlı gitmezse yol düz bir çizgi olmaz; patent iki türü de adlandırır: başlangıçla bitişi birleştiren yoldan giden doğrusal interpolasyonlu konumlama ve doğrusal olmayan interpolasyonlu konumlama. NIST’in RS274/NGC yorumlayıcısı ise hedefe o anki hızlı hareket hızında koordineli doğrusal bir hareket üretir; LinuxCNC de onu izler ama yolun yön değişimlerinde yuvarlanabileceğini not eder. MEB modülü G00’ı doğrusal bir hızlı hareket diye tanımlar. Haas, kumandanın sonraki satıra geçmeden bütün eksenlerin hareketini bitirmesini beklediğini ekler.
Bu yüzden kural Mt. Hood Community College’ın verdiği kuraldır: iş parçasına çok yakın bir konuma ya da o konumdan hızlı hareket yapmayın. Kırılan bir hızlı hareket, programcının beklemediği bir köşeyi kesebilir; FANUC patentinin deyişiyle takım ve iş parçası birbiriyle çakışabilir. Kolej metni, hızlı hareketin yolunu düz bir çizgi sanmaya karşı uyarırken bunu daha açık söyler: bu, gerçekleşmeyi bekleyen bir çarpışmadır.
G01, ilerleme ve bekleme
G01 kesme hareketidir ve bir ilerleme ister: kolej metni F olmazsa çoğu tezgâhın hata vereceğini uyarır. F modaldır, yani önceki bir satırda verilmiş olabilir (Haas). Birimini başka bir grup belirler. Frezelerde, Siemens kumandalarda ve G kodu sistemi B ya da C olan FANUC kumandalarda G94 dakikada ilerleme, G95 devirde ilerleme verir (FANUC, Haas, Siemens); Haas’ta ayrıca ters zaman ilerlemesi (inverse time) G93 vardır ve onda her satırda F gerekir. G kodu sistemi A olan FANUC tornalarda ve Haas tornalarda aynı çift G98 (dakikada) ve G99’dur (devirde); MEB modülü bunları “(G98) mm/dak: Dakikada aldığı milimetre cinsinden ilerleme değeridir.” ve “(G99) mm/dv : Bir devirde aldığı milimetre cinsinden ilerleme değeridir.” diye açıklar. Frezelerde G98 ve G99 başka bir şey demektir: delme gibi sabit çevrimlerin (canned cycle) geri dönüş seviyesi.
G04 beklemedir: eksenler bir süre durur ve kod yalnızca kendi satırında geçerlidir. Süre LinuxCNC’de ve NIST’te saniyedir, P de saniye olarak yazılır; Siemens de saniye cinsinden beklemeyi G04 F1 diye yazar. MEB modülü de bekleme süresini saniye cinsinden verir (“Kesicinin bekleme süresi saniye cinsindendir.”), ama P’yi ondalıksız, binde bir olarak yazar: aynı 2,5 saniyelik bekleme örnekte G04 X2.5 ve G04 P2500 diye verilir. P’nin nasıl okunduğunu kumandanın kitabından kontrol edin.
G02 ve G03: yön ve düzlem
Saat ibresi yönü bir bakış noktası ister. LinuxCNC tanımlar: yön, dairesel hareketin çevresinde döndüğü eksenin artı ucundan bakılarak belirlenir; NIST de XY düzlemi için aynısını, artı Z ekseninden bakılarak diye söyler. Düzlemi G17 (XY), G18 (ZX) ve G19 (YZ) seçer; FANUC, Haas, Siemens ve LinuxCNC listelerinde aynıdır. G18 tornalama düzlemidir (Siemens: XZ düzlemi, tornalama G18) ve yay etkin düzlemde olmalıdır: Haas’a göre dairesel interpolasyon iki eksende hareket ister ve doğru düzlemi (G17–G19) kullanmalıdır.
Yay merkezi: I J K ya da R
Yayın merkezini söylemenin iki yolu vardır. I, J ve K ile: Haas’a göre I, J ve K başlangıç noktasından yay merkezine olan bağıl uzaklıklardır; NIST, LinuxCNC, CIMCO ve MEB modülü de aynısını söyler (“I:Yay başlangıcından yay merkezine X ekseninde artışlı (eklemeli) uzaklık”). Haas’ın torna kitabına göre I ya da K’dan yalnızca biri verilirse öteki sıfır sayılır. Tam bir daireyi yalnızca bu yöntem kesebilir: Haas’a göre bitiş noktası yazılmayıp yalnızca I, J ya da K verilirse tam daire çıkar. LinuxCNC merkezi G90.1 ve G91.1 ile mutlak koordinat olarak da alabilir; varsayılanı artışlıdır.
R ile merkezi kumanda kendisi bulur ve işaret, uyan iki yaydan birini seçer: Haas’a göre artı R 180° ya da daha küçük, eksi R 180°’den büyük yaylar içindir; NIST de aynı kuralı verir. R’nin iki sınırı var. Haas: tam daire için I, J, K yöntemi kullanılmalıdır, R değeri tam bir daire veremez. Bu durumlara yakınken de R hassas değildir; NIST’e göre tam daireye yakın yaylar son derece kötüdür, yarım daireler ve yarım daireye yakın olanlar ise yalnızca çok kötüdür. LinuxCNC merkez biçimli yayları yarıçap biçimlilerden daha hassas sayar. Bir satırda ikisinden biri kullanılır: Haas’a göre I ve K kullanılınca R kullanılamaz. Siemens yarıçapı CR= diye yazar ve bir ara noktadan geçen yay da sunar, CIP.
- 1
% - 2
T01 M06 ; - 3
G00 X4. Y2. ; - 4
G01 F20.0 Z-0.1 ; - 5
G03 F20.0 I-2.0 J0. X0. Y2. ; - 6
M30 ; - 7
%
% programın başladığını gösterir (Haas).
Mutlak ve artışlı
G90 koordinatları mutlak, G91 artışlı yapar. Haas’a göre G90’da komut verilen konumlar etkin koordinat sisteminin orijinine göre yorumlanır; G91’de ise o anki konumdan sayılır. Siemens: artışlı ölçüler bir önceki noktanın konumuna göredir. MEB modülü ikisi için mutlak ve artışlı ölçülendirme der: “Mutlak ölçülendirmede bütün noktalar, koordinat sisteminde belirlenmiş olan sıfır noktasına göre alınır.”
Tornalar istisnadır. G kodu sistemi A olan bir FANUC tornada mutlak ya da artışlı oluş bir G koduyla (G90/G91) değil adresle belirlenir: X ve Z mutlak, U ve W artışlıdır. Haas tornalar da böyle çalışır (X ya da Z yerine U ya da W yazılırsa artışlı programlama yapılır), MEB modülü de: “Fanuc kontrollü tezgahlarda X için (U) , Z için (W) kullanılır.” Bu tornalarda G90 mutlak programlama değil, bir tornalama çevrimidir (FANUC sistem A; Haas). G kodu sistemi B ya da C olan FANUC tornalarda kumandanın G90 ile mi G91 ile mi açılacağını No. 3402#3 parametresi belirler.
Modal kodlar ve yalnızca kendi satırında geçerli kodlar
FANUC’a göre bir G kodu, aynı gruptan başka bir G kodu verilene kadar geçerlidir; bu modal koddur. MEB modülü de bu kodlar için “Başka bir G kodu kullanılıncaya kadar aktif kalırlar.” der. Bazı kodlar ise yalnızca verildiği satırda geçerlidir (FANUC; İngilizcesi one-shot); bekleme böyledir. Haas modal kuralı uygulamayla anlatır: G00 olan bir satırdan sonraki bütün satırlar, başka bir hareket kodu gelene kadar hızlı harekettir. Farklı gruplardan kodlar aynı satırda olabilir, yukarıdaki G90 G17 gibi (FANUC). Aynı gruptan iki kodu kumandalar farklı ele alır: Haas’a göre aynı gruptan iki G kodu bir program satırına konamaz, NIST de aynısını söyler; FANUC’un torna kitabına göre ise bu durumda yalnızca en son yazılan G kodu geçerlidir.
Kumandalar nasıl ayrışır
| FANUC | Haas | Siemens SINUMERIK | HEIDENHAIN (conversational) | LinuxCNC | |
|---|---|---|---|---|---|
| Hızlı hareket | G00; türüne göre düz ya da değil | G00, genellikle düz değil | G0, RTLION ve RTLIOF ile | ilerleme olarak FMAX | G0, koordineli |
| Düz hat | G01 | G01 | G1 | L | G1 |
| Yay | G02 / G03 | G02 / G03, I J K ya da R ile | G2 / G3, I J K ya da CR= ile; CIP | merkez CC çevresinde C; yarıçapla CR; teğet CT | G2 / G3, I J K ya da R ile |
| Yön | G02 saat ibresi yönünde, G03 ters | aynı | aynı | DR– saat ibresi yönünde, DR+ ters yönde | aynı |
| Artışlı | G91 (sistem B ve C) ya da U W (sistem A) | frezede G91, tornada U W | G91 | burada ele alınmadı | G91 |
| İlerleme türü | G94 / G95 (B, C), G98 / G99 (A) | frezede G93 / G94 / G95, tornada G98 / G99 | G94 mm/dak, G95 mm/dv | burada ele alınmadı | G93 / G94 / G95 |
TNC 410 kitabına göre HEIDENHAIN’in kendi programlama dilinin (conversational) yanında ISO biçiminde ya da DNC kipinde programlamak da mümkündür.
Kaynakların uyardığı hatalar
- Parçaya fazla yakın hızlı hareket. Yol düz olmayabilir (Haas, FANUC); iş parçasına yakın bir konuma ya da o konumdan hızlı hareket yapmayın (Mt. Hood Community College).
- Geçerli kalmış bir hareket kodu. Hareket kodları modaldır: CIMCO’ya göre bir yaydan sonra sonraki hareket G01 ya da G00 ile doğrusalsa G02 ya da G03 iptal edilmelidir.
- Yanlış düzlemde yay. Doğru düzlemi, G17–G19, kullanmalıdır (Haas).
- Tam daire ya da yarım daireye yakın yay için R. Tam daire I J K ister (Haas); 180°’ye ve 360°’ye yakın yarıçaplı yaylar hassas değildir (NIST, LinuxCNC).
- I K ile R birlikte. Bir satırda olmaz (Haas).
- F’siz G01. Ne satırda ne de daha önce F verilmemişse çoğu tezgâh hata verir (Mt. Hood Community College); G93’te her satırda F gerekir (Haas).
- Ondalık nokta. Ondalık noktaya dikkat (Mt. Hood Community College). MEB’in bekleme örneğinde X2.5 ile P2500 aynı 2,5 saniyedir.
- Tornada G90. FANUC sistem A’da ve Haas tornalarda bir tornalama çevrimidir, mutlak programlama değil.
Kaynaklar (13)
Bu sayfadaki her değer ve alıntı aşağıdaki belgelerden alındı.
- Productivity Inc (Haas Factory Outlet), HAAS Mill Programming Manual, rev. 06/26, s. 9, 15–18, 24, 34–35, 83–84 (Haas Automation içeriğini izinle kullanan eğitim kitabı)
- Productivity Inc (Haas Factory Outlet), Haas Lathe Programming Manual, rev. 12/2024, s. 8–14, 25–26, 55, 68
- FANUC, User’s Manual (For Lathe System) B-64304EN-1/01, açıklama notları ve G kodu listesi, s. 16–19 (üçüncü taraf bir kopyadan okundu, bu yüzden bağlantı verilmedi)
- FANUC Corp. (M. Ito, H. Minami), US 10,444,728 B2, “Numerical controller performing positioning for avoiding interference with workpiece”
- T. R. Kramer, F. M. Proctor, E. Messina, The NIST RS274/NGC Interpreter – Version 3, NISTIR 6556, NIST, 2000
- LinuxCNC belgeleri, “G-Codes”
- ISO 6983-1:2009, Automation systems and integration — Numerical control of machines — Program format and definitions of address words — Part 1 (katalog sayfası)
- Siemens, SINUMERIK Handbook: G codes & M codes (tornalama), C101
- Siemens, SINUMERIK 840D sl/840D/840Di/810D Fundamentals, Programming Manual, 08/2005 baskısı (içindekiler ve 1. bölüm)
- DR. JOHANNES HEIDENHAIN GmbH, TNC 410 User’s Manual, Conversational Programming, 6/2001
- CIMCO, CIMCO Edit v8 belgeleri, “Exercises – Turning – Circular Interpolation”
- L. Hillyard, Support for CNC, Mt. Hood Community College, “G00, G01 (Code Practice)”, CC BY 4.0
- T.C. Millî Eğitim Bakanlığı, MEGEP, CNC Tornada Programlama (521MMI121), Ankara 2012