Mach4’te Macro Sonunda Makineyi Önceki G90 G91, G20 G21, G54 ve Feed Ayarına Döndürmek Neden Gereklidir?
📑 İçindekiler (Tıkla Aç)
Mach4’te bir makronun sonunda makineyi önceki G90/G91 (mutlak/artımsal), G20/G21 (inç/milimetre), G54 (iş koordinat sistemi) ve ilerleme hızı (feed rate) ayarlarına döndürmek, işleme süreçlerinin güvenliğini, tutarlılığını ve sonraki G-kod programlarının doğru çalışmasını sağlamak için hayati öneme sahiptir. Bu geri dönüşler, beklenmedik makine davranışlarını, parça hatalarını ve potansiyel çarpışmaları önler.
Mach4’te Macro Sonunda Makineyi Önceki G90 G91, G20 G21, G54 ve Feed Ayarına Döndürmek Neden Gereklidir? Nedir?
Endüstriyel otomasyon ve CNC işleme dünyasında, makine kontrol yazılımları olan Mach4 gibi platformlar, karmaşık işlemleri otomatikleştirmek için makroları kullanır. Makrolar, belirli görevleri (örneğin, takım değiştirme, prob ölçme, parça yükleme/boşaltma) gerçekleştiren küçük program parçacıklarıdır. Bu makrolar çalışırken, makinenin varsayılan çalışma modlarını (konumlandırma modu, birim sistemi, iş koordinat sistemi ve ilerleme hızı) geçici olarak değiştirebilirler. Ancak, bir makro bittiğinde ve makine ana G-kodu programına döndüğünde, bu geçici değişikliklerin kalıcı olmaması ve makinenin önceki güvenli ve beklenen durumuna geri dönmesi esastır. Aksi takdirde, makine programın beklediği ayarlar yerine makronun bıraktığı ayarlarla çalışmaya devam eder ki bu durum ciddi operasyonel problemlere yol açabilir.
Bu ayarların her biri, CNC işleme sürecinin farklı ama kritik bir yönünü kontrol eder:
- G90 (Mutlak Konumlandırma) ve G91 (Artımsal Konumlandırma): Bu komutlar, makinenin hareket komutlarını nasıl yorumlayacağını belirler. G90’da tüm hareketler iş parçası sıfır noktasına göre yapılırken, G91’de hareketler mevcut konuma göre yapılır. Bir makro G91’e geçip geri G90’a dönmezse, sonraki G-kodları yanlış eksen hareketlerine neden olabilir, bu da hatalı parça boyutlarına veya makine çarpışmalarına yol açar.
- G20 (İnç Birimi) ve G21 (Milimetre Birimi): Bu komutlar, makinenin ölçü birimini ayarlar. Bir makro G20’ye geçip G21’e geri dönmezse (veya tam tersi), sonraki programlar yanlış birim sistemiyle çalışır ve bu da parça boyutlarında büyük tutarsızlıklara neden olur. Örneğin, milimetre cinsinden tasarlanmış bir parça inç olarak işlenirse, sonuçlar tamamen kullanılamaz olacaktır.
- G54 (İş Parçası Koordinat Sistemi): CNC makineleri birden fazla iş parçası koordinat sistemine (G54, G55, G56 vb.) sahip olabilir. Makrolar, belirli bir görevi yerine getirirken (örneğin, bir sensörün konumunu belirlemek için geçici bir koordinat sistemi kullanmak) bu sistemlerden birini geçici olarak değiştirebilir. Makro sonunda orijinal G54 (veya aktif olan herhangi bir WCS) geri yüklenmezse, ana program yanlış sıfır noktasını kullanarak işlem yapmaya çalışır, bu da takımın yanlış yerde başlamasına veya çarpışmasına neden olabilir.
- İlerleme Hızı (Feed Rate): Makrolar genellikle belirli işlemler için farklı ilerleme hızları kullanır. Örneğin, prob ölçme için çok düşük bir hız veya takım değiştirme için daha hızlı bir hareket. Makro bu hızı orijinal değerine döndürmezse, ana program ya çok yavaş çalışarak zaman kaybına neden olur ya da çok hızlı çalışarak takım kırılmasına, yüzey kalitesinin bozulmasına veya parça hasarına yol açabilir.
Özetle, bu ayarların makro sonunda geri yüklenmesi, CNC işleme ortamında öngörülebilirlik, güvenlik ve verimlilik sağlamanın temel bir parçasıdır. Geri yükleme yapılmadığında ortaya çıkabilecek potansiyel maliyetler (hurda parça, takım hasarı, makine hasarı, üretim duruşu) göz önüne alındığında, bu adım asla atlanmamalıdır.
Çalışma Prensibi ve Teknik Veriler
CNC kontrol sistemlerinde, G-kodları genellikle modal komutlardır. Modal komutlar, bir kez aktif hale getirildikten sonra, başka bir komutla değiştirilene veya kontrol sistemi sıfırlanana kadar aktif kalır. Bu özellik, G-kod programlamayı basitleştirirken, makrolar gibi ara programlar kullanıldığında dikkatli olunması gereken bir durum yaratır. Bir makro, özel bir görev için makinenin çalışma modunu geçici olarak değiştirir ve bu değişiklik modal olduğu için, makro bittikten sonra da aktif kalmaya devam eder.
Örneğin, bir takım probu makrosu düşünelim. Bu makro, probun hassas bir şekilde yüzeye yaklaşması için ilerleme hızını çok düşük bir değere (örneğin F10) ayarlayabilir. Ayrıca, probun hareketlerini mevcut konumdan bağımsız olarak hassas bir şekilde kontrol etmek için G91 (Artımsal Konumlandırma) moduna geçebilir. Eğer makro sonunda ilerleme hızı eski değerine (örneğin F500) ve G90 moduna geri döndürülmezse, ana program bir sonraki kesme işlemini F10 hızıyla yapmaya çalışacak ve bu da inanılmaz derecede yavaş bir işleme süreci anlamına gelecektir. Daha da kötüsü, G91 modunda kalmak, ana programın beklediği mutlak koordinatlara göre değil, mevcut konumdan hareket etmesine neden olacak ve bu da büyük olasılıkla bir çarpışmaya yol açacaktır.
Benzer şekilde, bazı makrolar, probun veya sensörün kalibrasyonu için geçici bir iş koordinat sistemi (WCS) kullanabilir (örneğin, G59). Bu geçici WCS, makronun kendi iç referans noktasını oluşturmasına olanak tanır. Ancak, makro bittiğinde ana programın orijinal G54 WCS’ine geri dönmesi zorunludur. Aksi takdirde, makine yanlış bir referans noktasına göre çalışacak ve bu da parçanın yanlış işlenmesine veya takımın fikstürlere çarpmasına neden olacaktır.
Birim sistemleri (G20/G21) de kritik bir konudur. Uluslararası standartlara göre çoğu atölye milimetre (G21) kullanırken, bazı özel uygulamalar veya eski makineler inç (G20) kullanabilir. Bir makro, harici bir cihazla iletişim kurarken veya belirli bir standarda uyum sağlamak için birim sistemini değiştirebilir. Eğer bu değişiklik makro sonunda geri alınmazsa, tüm sonraki boyutlar yanlış yorumlanacak ve bu da kesinlikle hurda parçalarla sonuçlanacaktır.
Mach4 gibi modern CNC kontrol yazılımları, bu modal durumları dahili olarak yönetir. Bir G-kodu komutu gönderildiğinde, kontrolör bu durumu kaydeder ve yeni bir modal komut gelene kadar aktif tutar. Makro programcılarının görevi, makronun başında mevcut durumu sorgulayıp kaydetmek ve makronun sonunda bu kaydedilmiş durumu geri yüklemektir. Bu, genellikle Lua betikleri (Mach4’ün kullandığı programlama dili) içinde yapılır. Örneğin, mc.mcCntlGetGcodeModal(inst, GCODE_MODAL_GROUP_3) gibi fonksiyonlarla mevcut G-kodu modlarını okuyabilir ve makro sonunda mc.mcCntlGcode(inst, "G90") gibi komutlarla geri yükleyebilirsiniz.
| Parametre | Değer/Açıklama |
|---|---|
| G90 | Mutlak Konumlandırma Modu: Tüm eksen hareket komutları, iş parçası sıfır noktasına (WCS) göre yorumlanır. Makine her zaman referans noktasına göre hareket eder. |
| G91 | Artımsal Konumlandırma Modu: Tüm eksen hareket komutları, takımın mevcut konumuna göre yorumlanır. Her hareket, son konumdan itibaren bir artış veya azalıştır. |
| G20 | İnç Birimi Modu: Makine, tüm uzunluk ve hız değerlerini inç (imperial) biriminde yorumlar. |
| G21 | Milimetre Birimi Modu: Makine, tüm uzunluk ve hız değerlerini milimetre (metrik) biriminde yorumlar. |
| G54 | İş Parçası Koordinat Sistemi 1: Makinenin işleme için kullandığı ana sıfır noktasını tanımlar. Birden fazla WCS (G54-G59) bulunabilir. |
| F (Feed Rate) | İlerleme Hızı: Takımın malzeme üzerinde veya boşta hareket etme hızı. Birim sistemine göre inç/dakika veya mm/dakika olarak ifade edilir. |
| Modal Komut | Bir kez ayarlandığında, başka bir ilgili komutla değiştirilene kadar aktif kalan G-kodu komutudur. |
Sahada Dikkat Edilmesi Gerekenler
- Kapsamlı Makro Tasarımı ve Entegrasyonu: Her makronun, makine durumunu değiştiren herhangi bir komut içermesi durumunda, makro başlangıcında mevcut modal durumları (G90/G91, G20/G21, aktif WCS, feed rate) okuyup bir değişkende saklaması kritik öneme sahiptir. Makronun sonunda ise bu kaydedilen durumların eksiksiz bir şekilde geri yüklenmesi gerekmektedir. Bu, makronun bağımsız ve diğer programlardan izole çalışmasını sağlar, böylece ana programın işleyişini etkilemez. Gelişmiş makrolarda, bu yedekleme ve geri yükleme işlemleri için özel fonksiyonlar veya alt rutinler oluşturulmalıdır.
- Sıkı Test ve Doğrulama Prosedürleri: Yeni geliştirilen veya üzerinde değişiklik yapılan her makro, gerçek iş parçası veya takım kullanmadan önce güvenli bir ortamda (örneğin, boş havada veya simülasyon modunda) titizlikle test edilmelidir. Bu testler, makronun sadece kendi görevini doğru yapıp yapmadığını değil, aynı zamanda makineyi doğru duruma geri döndürüp döndürmediğini de doğrulamalıdır. Testler sırasında, makine ekranındaki aktif G-kodlarını ve parametreleri dikkatlice izlemek, potansiyel hataları erken aşamada tespit etmeye yardımcı olur. Hata ayıklama günlükleri (debug logs) bu süreçte vazgeçilmez bir araçtır.
- Operatör Eğitimi ve Farkındalığı: CNC operatörleri, makroların makine üzerindeki etkileri ve bu tür ayarların geri yüklenmesinin önemi konusunda eğitilmelidir. Operatörler, makro çalıştıktan sonra makinenin davranışında herhangi bir anormallik fark ettiklerinde (örneğin, beklenenden farklı hızda hareket, yanlış başlangıç noktası), durumu hemen durdurma ve kontrol etme yeteneğine sahip olmalıdır. Bu farkındalık, potansiyel makine hasarlarını veya hurda parça üretimini önlemede ilk savunma hattını oluşturur.
- Standartlaştırılmış Makro Kütüphanesi ve Sürüm Kontrolü: Atölye veya fabrika genelinde kullanılan makrolar için standart bir kütüphane oluşturulması ve bu kütüphanedeki makroların sürüm kontrolü altında tutulması, tutarlılık ve güvenilirlik sağlar. Her makro, belirli bir format ve güvenlik protokolleriyle yazılmalı, değişiklikler belgelenmeli ve test edilmeden üretime alınmamalıdır. Bu yaklaşım, farklı programcılar tarafından yazılan makroların bile aynı güvenlik ve geri yükleme standartlarına uymasını garantiler.
- Acil Durum ve Hata Kurtarma Protokolleri: En iyi önlemlere rağmen, insan hatası veya beklenmedik yazılım davranışları nedeniyle ayarların geri yüklenemediği durumlar ortaya çıkabilir. Bu tür senaryolar için acil durum durdurma (E-stop) prosedürleri ve makineyi güvenli bir duruma getirme protokolleri belirlenmelidir. Ayrıca, makro kaynaklı bir hata durumunda, operatörün makineyi nasıl manuel olarak güvenli bir duruma getireceği veya programı nasıl sıfırlayacağı konusunda net talimatlar olmalıdır.
- Güvenlik Sınırları ve Çarpışma Önleme Sistemleri: Mach4’ün sunduğu yazılımsal limitler (soft limits) ve çarpışma önleme özellikleri aktif olarak kullanılmalıdır. Bu sistemler, yanlış bir G-kodu veya makro ayarı nedeniyle makinenin fiziksel limitlerini aşmasını veya fikstürlere çarpmasını engelleyebilir. Her ne kadar bu özellikler birincil çözüm olmasa da, son savunma hattı olarak ek bir güvenlik katmanı sağlarlar.
Sık Karşılaşılan Sorunlar ve Çözümleri
Makro sonunda makine ayarlarının geri yüklenmemesi, sahada birçok can sıkıcı ve maliyetli soruna yol açabilir. İşte en sık karşılaşılan sorunlar ve bu sorunlara yönelik çözümler:
-
Sorun 1: Takımın Beklenmedik Yerlere Hareket Etmesi veya Çarpışması (G90/G91 Hatası)
Senaryo: Bir makro G91 (artımsal) modunda çalıştıktan sonra G90’a (mutlak) geri dönmez. Ana program, mutlak koordinatlara göre hareket beklerken, makine mevcut konumdan itibaren hareket etmeye çalışır. Bu durum, takımın iş parçasına veya fikstüre çarpmasına, yanlış kesimler yapmasına veya boşta beklemesi gereken yerlerde hareket etmesine neden olabilir.
Çözüm: Makronun başında aktif G-kodu modunu (
mc.mcCntlGetGcodeModal(inst, GCODE_MODAL_GROUP_2)ile G90/G91 için) kaydedin. Makronun sonunda, kaydedilen bu modu (örneğin,mc.mcCntlGcode(inst, "G90")veyamc.mcCntlGcode(inst, "G91")ile) geri yükleyin. Çoğu durumda, makro bittiğinde varsayılan olarak G90’a dönmek en güvenli yaklaşımdır, aksi belirtilmedikçe. -
Sorun 2: İşlenen Parçaların Boyutlarının Tamamen Yanlış Olması (G20/G21 Hatası)
Senaryo: Bir makro, belirli bir işlem için birim sistemini (örneğin, G20 inç) değiştirdikten sonra orijinal birime (örneğin, G21 milimetre) geri dönmez. Ana program milimetre cinsinden koordinatlar ve ilerleme hızları beklerken, makine bunları inç olarak yorumlar. Bu durum, parçaların olması gerekenden 25.4 kat daha büyük veya daha küçük işlenmesine neden olur, bu da doğrudan hurda parça demektir.
Çözüm: Makronun başında aktif birim sistemini (
mc.mcCntlGetGcodeModal(inst, GCODE_MODAL_GROUP_7)ile G20/G21 için) kaydedin. Makronun sonunda, kaydedilen birim sistemini geri yükleyin (örneğin,mc.mcCntlGcode(inst, "G21")). İşletmenizin standart birimi ne ise, makro sonunda ona dönmeyi bir kural haline getirin. -
Sorun 3: Takımın Yanlış Sıfır Noktasından Başlaması veya İşleme Yapması (G54 Hatası)
Senaryo: Bir makro, özel bir ölçüm veya kalibrasyon için geçici olarak farklı bir iş koordinat sistemi (örneğin, G59) kullandıktan sonra ana G54’e geri dönmez. Ana program G54’ü beklerken, makine G59’u aktif tutar. Bu, takımın tamamen yanlış bir başlangıç noktasından hareket etmesine, iş parçasına veya fikstüre çarpmasına neden olabilir.
Çözüm: Makronun başında aktif WCS’i (
mc.mcCntlGetGcodeModal(inst, GCODE_MODAL_GROUP_12)ile G54-G59 için) kaydedin. Makronun sonunda,mc.mcCntlGcode(inst, "G" .. savedWCS)komutuyla kaydedilen WCS’i geri yükleyin. Çoğu zaman makro bittiğinde G54’e dönmek en güvenli yaklaşımdır. -
Sorun 4: İşlemenin Aşırı Yavaş veya Aşırı Hızlı Gerçekleşmesi (Feed Rate Hatası)
Senaryo: Bir makro, hassas bir işlem için çok düşük bir ilerleme hızı (örneğin F10) ayarladıktan sonra veya hızlı bir boşta hareket için yüksek bir hız ayarladıktan sonra ana programın beklediği ilerleme hızına geri dönmez. Ana program, normal kesme hızında işlem yapmayı beklerken, makine ya aşırı yavaş çalışarak zaman kaybına neden olur ya da aşırı hızlı çalışarak takım kırılmasına, yüzey kalitesi bozulmasına veya parça hasarına yol açar.
Çözüm: Makronun başında mevcut ilerleme hızını (
mc.mcCntlGetF(inst)ile) bir değişkene kaydedin. Makronun sonunda,mc.mcCntlSetF(inst, savedFeedRate)komutuyla kaydedilen ilerleme hızını geri yükleyin. Alternatif olarak, makro sonunda genel bir “güvenli” ilerleme hızı (örneğin F200) ayarlayarak, programın ilk G-kod bloğunda kendi ilerleme hızını tanımlamasını bekleyebilirsiniz. -
Sorun 5: Makine Durumu Tamamen Kontrol Dışı Kalması
Senaryo: Birden fazla makro aynı anda veya ardışık olarak çalıştırıldığında ve hiçbiri ayarları doğru şekilde geri yüklemediğinde, makine durumu öngörülemez hale gelir. Bu durum, karmaşık arızalara, tekrarlayan parça hatalarına ve hatta ciddi makine hasarlarına yol açabilir.
Çözüm: Her makroyu bağımsız ve “temiz” bir şekilde çalışacak şekilde tasarlayın. Bir makronun diğer makroların veya ana programın durumunu değiştirmesine izin vermeyin. Tüm makroların bir “güvenli başlangıç” ve “güvenli bitiş” bloğu içermesini sağlayın. Makro içinde hata oluştuğunda dahi, makinenin güvenli bir duruma dönmesini sağlayacak hata yakalama (error handling) mekanizmaları ekleyin.
Uzman Tavsiyesi
Endüstriyel otomasyonun kalbinde yer alan CNC makineleri, hassasiyet, hız ve güvenilirlik gerektirir. Mach4 gibi gelişmiş kontrol sistemleri, bu gereksinimleri karşılamak için güçlü programlama yetenekleri sunar. Ancak, bu güçle birlikte büyük bir sorumluluk da gelir: makineyi her zaman öngörülebilir ve güvenli bir durumda tutmak. Bir makronun sonunda makineyi önceki G90/G91, G20/G21, G54 ve ilerleme hızı ayarlarına döndürme gerekliliği, bu sorumluluğun temel bir parçasıdır ve asla göz ardı edilmemelidir.
Uzmanlar olarak, bu adımın sadece bir “iyi uygulama” olmaktan öte, operasyonel bütünlük, iş güvenliği ve üretim kalitesi için mutlak bir zorunluluk olduğunu vurguluyoruz. Modal G-kodlarının doğası gereği, bir makronun yaptığı geçici bir değişiklik, geri alınmadığı takdirde kalıcı hale gelir ve ana programın tamamen yanlış varsayımlarla çalışmasına neden olur. Bu durum, en iyi ihtimalle üretimde zaman kaybına ve hurda parçalara, en kötü ihtimalle ise pahalı takım ve makine hasarlarına, hatta operatörler için güvenlik risklerine yol açabilir.
Bu nedenle, tüm CNC programcılarına ve otomasyon mühendislerine şu tavsiyelerde bulunuyoruz: Makro geliştirme sürecinizin ayrılmaz bir parçası olarak, her makronun başında mevcut makine durumunu güvenli bir şekilde kaydetmeyi ve makro sonunda bu durumu eksiksiz bir şekilde geri yüklemeyi bir prensip haline getirin. Bu, sadece birkaç satır kod eklemekle kalmaz, aynı zamanda gelecekteki olası sorunları, arıza giderme sürelerini ve maliyetli üretim duruşlarını da önler. Makrolarınızı her zaman titizlikle test edin, operatörlerinizi bu konuda eğitin ve atölyenizde standartlaştırılmış makro yazım kuralları uygulayın. Bu proaktif yaklaşım, hem makine parkurunuzun ömrünü uzatacak hem de üretim süreçlerinizin verimliliğini ve güvenilirliğini en üst düzeye çıkaracaktır. Unutmayın, iyi programlanmış bir makro, sadece işini yapan değil, aynı zamanda makineyi ve sonraki işlemleri de koruyan makrodur.




















































































































































































