Mach4’te MDI komutu, G-Code programı ve Lua makrosu aynı anda çakıştığında, sistem genellikle tanımlı bir öncelik sırasına göre işlem yapar. Genellikle Lua makroları, G-Code programını duraklatma veya üzerine yazma potansiyeline sahip en yüksek esnekliğe sahiptir; MDI komutları ise genellikle aktif bir G-Code programı tarafından bloke edilir veya kuyruğa alınır. Çakışmalar, beklenmedik makine hareketlerine, hatalara veya program duraklamalarına yol açabilir, bu da dikkatli programlama ve sıralama gerektirir.
Mach4’te MDI Komutu, G-Code Programı ve Lua Macro Aynı Anda Çakışırsa Ne Olur? Nedir?
Endüstriyel otomasyonun vazgeçilmez bir parçası olan CNC kontrol yazılımları, karmaşık makine hareketlerini ve işleme süreçlerini yönetir. Mach4, bu alanda güçlü ve esnek bir platform sunar. Ancak, bu esneklik, farklı komut giriş yöntemlerinin (MDI, G-Code, Lua Macro) aynı anda makine üzerinde işlem yapmaya çalıştığı durumlarda potansiyel çakışmaları da beraberinde getirir. Bu çakışmaların nasıl yönetildiği ve sonuçlarının ne olacağı, sistemin kararlılığı ve iş güvenliği açısından kritik öneme sahiptir.
MDI (Manual Data Input) Komutları, operatörün tek seferlik, anlık komutları doğrudan makineye girmesini sağlar. Örneğin, “G0 X100” gibi bir komut, takımın X ekseninde 100 birim hızlıca hareket etmesini emreder. Bu komutlar genellikle hızlı testler, manuel konumlandırmalar veya ufak ayarlamalar için kullanılır.
G-Code Programı, bir dizi ardışık G ve M kodundan oluşan, genellikle bir CAM yazılımı tarafından üretilen ve tüm bir işleme sürecini otomatikleştiren talimatlar bütünüdür. Bu programlar, takım yolları, ilerleme hızları, devirler, takım değişiklikleri ve diğer tüm işleme adımlarını detaylı olarak tanımlar. G-Code programları genellikle kesintisiz ve sıralı bir şekilde çalışır.
Lua Macro’lar ise Mach4’ün güçlü özelleştirme ve otomasyon yeteneklerini sağlayan, Lua programlama dilinde yazılmış scriptlerdir. Bu makrolar, özel fonksiyonlar tanımlayabilir, karmaşık mantıksal işlemler gerçekleştirebilir, makine durumunu okuyabilir, G-Code komutları gönderebilir veya hatta Mach4’ün dahili değişkenlerini doğrudan manipüle edebilir. Butonlara, olaylara veya döngülere atanabilirler.
Bu üç komut giriş yönteminin aynı anda makineye emir vermeye çalıştığı bir senaryoda, Mach4’ün dahili mimarisi bir öncelik ve kuyruklama mekanizması devreye sokar. Bu mekanizma, sistemin tutarlı ve öngörülebilir bir şekilde çalışmasını sağlamayı amaçlar, ancak yanlış programlama veya operatör müdahalesi durumunda beklenmedik sonuçlar doğurabilir. Temel olarak, Mach4’ün kontrol motoru, gelen tüm komutları bir işleme kuyruğuna alır ve bu kuyruktaki öğeleri belirli bir sıraya göre işler. Bu sıralama, komutun tipine ve sistemin mevcut durumuna bağlıdır.
Çalışma Prensibi ve Teknik Veriler
Mach4’ün komut işleme mimarisi, farklı kaynaklardan gelen talimatları yönetmek için katmanlı bir yapı kullanır. En alt katmanda donanım ve sürücüler yer alırken, en üst katmanda kullanıcı arayüzü ve Lua script motoru bulunur. Bu katmanlar arasında bir komut işleme çekirdeği (motion engine) bulunur ki bu çekirdek, hareket emirlerini yorumlar ve eksen sürücülerine gönderir.
Çakışma durumlarında, Mach4 genellikle aşağıdaki öncelik prensiplerine göre hareket eder:
- Lua Makroları: Lua makroları, Mach4 API’sine doğrudan erişim sağladığı için genellikle en yüksek esnekliğe ve potansiyel müdahale gücüne sahiptir. Bir Lua makrosu,
mc.mcCntlMdiExecute("G0 X100")veyamc.mcCntlGcodeExecute("G90 G54 G0 X0 Y0")gibi fonksiyonlar kullanarak G-Code veya MDI komutlarını programatik olarak gönderebilir. Eğer bir Lua makrosu aktif bir G-Code programı çalışırken hareket komutu gönderirse, bu durum genellikle G-Code programının duraklatılmasına veya iptal edilmesine neden olabilir. Lua makroları, makinenin durumunu okuyup buna göre karar verebildiği için, akıllıca programlandığında çakışmaları önleyebilir veya güvenli bir şekilde yönetebilir. Ancak, kötü yazılmış bir Lua makrosu, çalışan bir G-Code programını aniden durdurabilir, takım yolunu bozabilir veya makineyi beklenmedik bir konuma taşıyabilir. - MDI Komutları: MDI komutları, operatör tarafından girildiğinde genellikle anlık yürütme beklentisi taşır. Ancak, aktif bir G-Code programı çalışırken doğrudan bir MDI komutu girilirse, Mach4 genellikle bu komutu reddedecek veya kuyruğa alacaktır. Çoğu durumda, “Program Running” (Program Çalışıyor) uyarısı ile MDI komutunun yürütülmesi engellenir. MDI komutlarının işlenebilmesi için ya G-Code programının tamamlanmış, duraklatılmış (M0, M1, M60 gibi duraklatma kodları ile) ya da iptal edilmiş olması gerekir. Eğer bir MDI komutu, bir Lua makrosu tarafından gönderilmişse, o zaman Lua’nın önceliği geçerli olur.
- G-Code Programı: G-Code programı, tanımlı bir işleme sürecinin ana akışını temsil eder. Bir G-Code programı çalışırken, makine komut bloklarını sırayla işler ve hareketleri gerçekleştirir. Eğer bir MDI komutu veya bir Lua makrosu, G-Code programının hareketini değiştirmeye veya üzerine yazmaya çalışırsa, G-Code programının akışı bozulabilir. G-Code programının kendisi, makine durumunu güvenli bir şekilde yönetmek için M kodlarını (örneğin, M0 program durdurma, M1 isteğe bağlı durdurma, M6 takım değiştirme) içerir.
Özetle, Mach4’te bir öncelik hiyerarşisi mevcuttur. En yüksek esnekliğe ve potansiyel kontrol gücüne sahip olan Lua makrolarıdır, çünkü bunlar Mach4 API’sine doğrudan erişim sağlayarak diğer komut kaynaklarını etkileyebilir. G-Code programları, genellikle kesintisiz bir iş akışının temelini oluşturur ve makine çalışırken üzerine MDI ile müdahale etmek zordur. MDI komutları ise genellikle daha düşük önceliğe sahiptir ve aktif bir G-Code programı tarafından bloke edilebilir. Bu durum, özellikle güvenlik kritik uygulamalarda, programlama ve operasyonel disiplinin önemini vurgular.
| Parametre | Değer/Açıklama |
|---|---|
| Komut Tipi | MDI Komutu |
| Öncelik Seviyesi (Genel) | Orta (Aktif G-Code varsa düşük, duraklamışsa yüksek) |
| Tipik Kullanım Alanı | Manuel konumlandırma, hızlı testler, tek bloklu hareketler |
| Çakışma Davranışı | Aktif G-Code tarafından bloke edilir veya kuyruğa alınır; Lua tarafından çağrılabilir. |
| Etki Alanı | Anlık hareketler, G veya M kodu işlemleri |
| Örnek Komut/Fonksiyon | G0 X100 Y50, M3 S1000 |
| Risk Seviyesi | Orta (Yanlış kullanımda çarpışma riski) |
| Komut Tipi | G-Code Programı |
| Öncelik Seviyesi (Genel) | Yüksek (Makine hareketi için ana kaynak) |
| Tipik Kullanım Alanı | Tam otomatik işleme, kompleks takım yolları |
| Çakışma Davranışı | MDI’yı bloke eder; Lua tarafından duraklatılabilir/iptal edilebilir. |
| Etki Alanı | Sıralı hareket, takım yolları, işleme parametreleri |
| Örnek Komut/Fonksiyon | G1 X10 F100, M6 T1 |
| Risk Seviyesi | Düşük (Doğru programlandığında), Orta (Dış müdahale durumunda) |
| Komut Tipi | Lua Macro |
| Öncelik Seviyesi (Genel) | En Yüksek (API erişimi sayesinde) |
| Tipik Kullanım Alanı | Özel otomasyon, kullanıcı arayüzü özelleştirme, gelişmiş mantık |
| Çakışma Davranışı | Diğer komutları duraklatabilir, üzerine yazabilir veya kontrol edebilir. |
| Etki Alanı | Tüm Mach4 sistemi, dahili değişkenler, G-Code ve MDI komutları |
| Örnek Komut/Fonksiyon | mc.mcCntlMdiExecute(), mc.mcAxisSetPos() |
| Risk Seviyesi | Yüksek (Yanlış programlandığında kritik hatalara yol açabilir) |

Sahada Dikkat Edilmesi Gerekenler
- Sıralı İşlem Mantığını Anlama: Makine operatörleri ve programcılar, Mach4’ün komut işleme sırasını ve önceliklerini net bir şekilde anlamalıdır. Bir G-Code programı çalışırken MDI komutlarının veya bir Lua makrosunun devreye girmesinin olası sonuçları hakkında bilgi sahibi olmak, beklenmedik durumları engeller.
- Güvenli Lua Macro Programlama Pratikleri: Lua makroları yazarken, aktif bir G-Code programının durumunu kontrol etmek (örneğin,
mc.mcCntlIsRunning()fonksiyonu ile) ve buna göre hareket etmek esastır. Makrolar, G-Code’u durdurma veya üzerine yazma yetkisi kullanmadan önce operatörden onay almalı veya güvenli bir duruma geçiş yapmalıdır. G-Code programının kritik bölümlerinde Lua makrolarının müdahalesini kısıtlamak önemlidir. - MDI Kullanım Disiplini: MDI komutları, özellikle bir G-Code programı çalışırken veya makine hassas bir operasyon yaparken çok dikkatli kullanılmalıdır. MDI ile manuel hareket ettirme ihtiyacı varsa, G-Code programının güvenli bir şekilde duraklatıldığından (M0, M1) veya iptal edildiğinden emin olunmalıdır.
- Acil Durum Prosedürleri ve E-Stop: Her zaman erişilebilir bir acil durdurma (E-Stop) butonunun bulunduğundan ve operatörlerin bunu kullanma konusunda eğitildiğinden emin olun. Çakışmalar sonucu oluşan kontrol kaybı durumunda, E-Stop makineyi anında durdurarak ciddi hasarları veya yaralanmaları önleyebilir.
- Hata Yakalama ve Loglama: Lua makrolarında kapsamlı hata yakalama mekanizmaları kullanmak ve Mach4’ün sistem loglarını düzenli olarak kontrol etmek, çakışmaların nedenlerini ve nasıl meydana geldiğini anlamak için kritik öneme sahiptir. Loglar, hangi komutun ne zaman ve hangi kaynaktan geldiğini gösterebilir.
- Simülasyon ve Kuru Çalıştırma: Özellikle yeni veya karmaşık G-Code programları ve Lua makroları için, gerçek işleme başlamadan önce simülasyon modunda veya kuru çalıştırma (dry run) ile test yapmak, potansiyel çakışmaları ve hataları önceden tespit etmeye yardımcı olur.
- Operatör Eğitimi ve Bilinçlendirme: Operatörlerin ve programcıların Mach4’ün tüm özelliklerini, özellikle de komut önceliklerini ve çakışma davranışlarını tam olarak anlamaları sağlanmalıdır. Bilinçli kullanım, riskleri minimize eder.

Sık Karşılaşılan Sorunlar ve Çözümleri
Mach4 ortamında MDI, G-Code ve Lua makrolarının çakışması, çeşitli sorunlara yol açabilir. İşte sık karşılaşılan bazı senaryolar ve çözüm önerileri:
-
Sorun 1: Makine Beklenmedik Şekilde Duruyor veya Hareket Ediyor.
Senaryo: Bir G-Code programı çalışırken makine aniden duruyor veya planlanmamış bir hareket yapıyor.
Neden: Genellikle bir Lua makrosunun (bir butona atanmış veya bir olay tetikleyicisiyle çalışan) yanlışlıkla bir hareket komutu göndermesi veya G-Code programını durdurmasıdır. MDI komutunun aktif G-Code’u bloke etme girişimi de olabilir.
Çözüm: Mach4’ün Diagnostics (Teşhis) sekmesindeki logları kontrol edin. Hangi komutun ne zaman geldiğini gösterir. Lua scriptlerini inceleyin, özelliklemc.mcCntlMdiExecute()veyamc.mcCntlGcodeExecute()gibi fonksiyonları içerenleri. Bu scriptlerin yalnızca makine güvenli bir durumdayken (örneğin,mc.mcCntlIsRunning()false döndüğünde) çalışacak şekilde düzenlendiğinden emin olun. MDI komutlarının G-Code çalışırken engellendiğini doğrulayın. -
Sorun 2: MDI Komutları Çalışmıyor veya “Program Running” Hatası Veriyor.
Senaryo: Operatör MDI penceresine bir komut giriyor, ancak komut yürütülmüyor ve Mach4 “Program Running” veya benzeri bir hata mesajı gösteriyor.
Neden: Aktif bir G-Code programının çalışıyor olması ve Mach4’ün MDI komutlarının önceliğini düşürmesi.
Çözüm: MDI komutunu girmeden önce G-Code programının duraklatıldığından (M0, M1, M60 gibi kodlarla) veya tamamen iptal edildiğinden emin olun. G-Code programının tamamlanmasını bekleyin. Eğer Lua makrosu MDI komutu göndermeye çalışıyorsa, makronun bu komutu göndermeden önce G-Code’un durumunu kontrol ettiğinden emin olun. -
Sorun 3: Lua Macro’su G-Code Değişkenlerini Bozuyor veya Üzerine Yazıyor.
Senaryo: Bir Lua makrosu çalıştıktan sonra, G-Code programının ilerleme hızı (feedrate), iş ofseti (work offset) veya takım ofseti (tool offset) gibi parametreleri beklenmedik şekilde değişiyor.
Neden: Lua makrosunun,mc.mcCntlSetFeedRate(),mc.mcCntlSetWorkOffset()veyamc.mcToolSetToolOffset()gibi API fonksiyonlarını kullanarak bu değerleri doğrudan değiştirmesi.
Çözüm: Lua makrolarını, G-Code programının aktif olduğu sırada kritik parametreleri değiştirmekten kaçınacak şekilde yeniden yazın. Eğer bir değişiklik yapmak zorunluysa, değişikliğin G-Code programının bağlamını bozmayacak şekilde ve uygun bir zamanda yapıldığından emin olun. G-Code programı bu değişiklikleri kendi içinde yönetmelidir veya Lua makrosu, G-Code’u güvenli bir duruma getirip değişikliği yaptıktan sonra G-Code’u devam ettirmelidir. -
Sorun 4: Eksen Kilitlenmeleri veya Limit Hataları.
Senaryo: Bir Lua makrosu veya MDI komutu ile manuel hareket denemesi sonrası eksenler kilitleniyor veya yazılım limit hatası veriyor.
Neden: Çakışan bir hareket komutunun, makinenin mekanik veya yazılımsal limitlerini ihlal etmesi. G-Code programı eksenleri belirli bir aralıkta tutarken, Lua veya MDI’dan gelen komut bu aralığın dışına çıkmaya çalışıyor olabilir.
Çözüm: Lua makrolarında veya MDI kullanımında, eksenlerin mevcut konumunu ve limitlerini her zaman göz önünde bulundurun. Lua makroları içinmc.mcAxisGetPos()vemc.mcAxisGetSoftLimitMin()/Max()gibi fonksiyonları kullanarak limit kontrolleri ekleyin. MDI kullanırken, her zaman ekrandaki eksen konumlarını takip edin ve makinenin çalışma zarfı içinde kalın. Hata durumunda, eksenleri manuel olarak güvenli bir bölgeye taşıyın ve limit ayarlarını gözden geçirin.
Uzman Tavsiyesi
Mach4 gibi gelişmiş CNC kontrol yazılımları, endüstriyel otomasyonda yüksek verimlilik ve esneklik sunar. Ancak, bu esneklik, MDI komutları, G-Code programları ve Lua makroları gibi farklı komut kaynaklarının aynı anda makine üzerinde işlem yapmaya çalıştığı durumlarda dikkatli yönetim gerektirir. Mach4, dahili bir öncelik ve kuyruklama mekanizması ile bu çakışmaları yönetmeye çalışsa da, kötü programlama pratikleri veya deneyimsiz operatör müdahaleleri, ciddi makine hasarlarına, iş parçası firelerine ve hatta personel güvenliği risklerine yol açabilir. Unutulmamalıdır ki, bir Lua makrosu, Mach4 API’sine doğrudan erişimi sayesinde en yüksek müdahale gücüne sahiptir ve bu güç, hem büyük fırsatlar hem de büyük sorumluluklar getirir. G-Code programları genellikle ana iş akışını yönetirken, MDI komutları anlık müdahaleler için kullanılır ve genellikle aktif G-Code tarafından bloke edilir. Bu karmaşık etkileşimi anlamak, Mach4 sistemlerinin güvenli ve verimli çalışması için temeldir.
Uzman tavsiyesi olarak, her zaman için disiplinli programlama ve kapsamlı test etme prensiplerini benimseyin. Lua makrolarını yazarken, makine durumunu (çalışıyor mu, duraklatıldı mı, boşta mı) her zaman kontrol edin ve kritik işlemleri gerçekleştirmeden önce güvenlik kontrolleri ekleyin. MDI komutlarını kullanmadan önce aktif bir G-Code programının güvenli bir şekilde duraklatıldığından veya iptal edildiğinden emin olun. Tüm operatörlerin ve programcıların Mach4’ün dahili çalışma prensiplerini, özellikle de komut önceliklerini ve olası çakışma senaryolarını tam olarak anlamasını sağlayacak düzenli eğitimler düzenleyin. Sistem loglarını düzenli olarak izlemek, potansiyel sorunları erken aşamada tespit etmek ve çözmek için paha biçilmez bir kaynaktır. Son olarak, herhangi bir beklenmedik makine davranışı durumunda, acil durdurma (E-Stop) butonuna erişimin her zaman açık olduğundan ve bunun nasıl kullanılacağının bilindiğinden emin olun. Bu önlemler, Mach4 sisteminizin güvenilirliğini ve verimliliğini en üst düzeye çıkaracaktır.

