Mach4’te spindle at speed bekleme mantığı, Lua scriptleri kullanılarak özel M-kodları veya G-kod makroları aracılığıyla uygulanır. Temel olarak, spindle’ın hedef hıza ulaşıp ulaşmadığını kontrol eden mc.IS_SPINDLE_AT_SPEED() veya RPM değerlerini izleyen bir döngü oluşturulur ve belirli bir zaman aşımı süresi içinde hızın doğrulanması beklenir, bu da güvenli ve hassas işleme için kritik öneme sahiptir.
Mach4’te Spindle At Speed Bekleme Mantığı Lua ile Nasıl Yazılır? Nedir?
Endüstriyel otomasyon ve CNC işleme dünyasında, bir takım tezgahının spindle’ının (iş mili) istenen dönüş hızına ulaşmadan kesme işlemine başlaması, ciddi operasyonel sorunlara yol açabilir. Bu sorunlar arasında takım kırılması, parça yüzey kalitesinin düşmesi, spindle motorunun aşırı zorlanması ve hatta güvenlik riskleri sayılabilir. Mach4, gelişmiş kontrol yetenekleri ve Lua programlama dilini kullanarak özelleştirilebilir yapısıyla, bu tür kritik bekleme mantıklarını kolayca entegre etmeye olanak tanır. Spindle at speed bekleme mantığı, spindle’a bir hız komutu verildikten sonra, kontrol sisteminin (Mach4) bu hızın fiilen ulaşıldığını doğrulamadan bir sonraki G-kodu komutuna geçmesini engelleyen bir otomasyon mekanizmasıdır. Bu, özellikle yüksek hassasiyet gerektiren veya farklı malzemelerle çalışılan uygulamalarda işleme sürecinin tutarlılığını ve güvenliğini sağlamak için hayati önem taşır. Lua ile yazılan bu mantık, makine operatörlerine daha güvenilir ve tekrarlanabilir bir işleme deneyimi sunarken, üretim verimliliğini de artırır.
Çalışma Prensibi ve Teknik Veriler
Mach4’te spindle at speed bekleme mantığını Lua ile uygulamak için temel prensip, spindle hızının kontrol edilmesi ve istenen duruma gelene kadar program akışının duraklatılmasıdır. Bu işlem genellikle Mach4’ün kendi dahili fonksiyonları ve bir döngü (loop) yapısı kullanılarak gerçekleştirilir. Spindle’ın başlatılması (M3 veya M4 komutu ile) ve hız ayarının yapılması sonrası, Lua scripti devreye girer. Bu script, belirli aralıklarla spindle’ın mevcut durumunu sorgular ve hedef hıza ulaşıldığında veya belirli bir tolerans içinde olduğunda döngüden çıkarak programın devam etmesini sağlar. Sürecin güvenliği ve verimliliği için bir zaman aşımı (timeout) mekanizması eklemek de kritik öneme sahiptir; bu sayede spindle’ın asla hıza ulaşmaması durumunda sistem sonsuz bir döngüye girmez.
Mach4’ün Lua API’si, spindle kontrolü için çeşitli fonksiyonlar sunar. En temel kontrol fonksiyonlarından biri mc.IS_SPINDLE_AT_SPEED()‘dir. Bu fonksiyon, Mach4’ün dahili spindle kontrol mekanizmalarına veya VFD (Değişken Frekans Sürücü) geri bildirimine dayanarak spindle’ın hedef hıza ulaştığını bildiren bir boole değeri (true/false) döndürür. Ancak bazı durumlarda, özellikle daha hassas kontrol veya farklı toleranslar gerektiren uygulamalarda, fiili RPM değerini almak ve bunu hedef RPM ile karşılaştırmak daha faydalı olabilir. Bu durumda mc.mcSpindleGetRPM() ve mc.mcSpindleGetTargetRPM() fonksiyonları kullanılır. Bu fonksiyonlar, spindle’ın anlık ve hedeflenen dönüş hızlarını sayısal olarak verir.
Bir Lua scripti genellikle Mach4’ün M-kod makroları (M3, M4 veya özel M1xx kodları) içine entegre edilir. Örneğin, M3 (spindle ileri yönde başlat) makrosunu özelleştirerek, spindle başlatma komutu verildikten hemen sonra bekleme mantığını devreye sokabilirsiniz. Aşağıda, bu mantığın temel yapısını açıklayan bir örnek senaryo bulunmaktadır:
- Spindle Başlatma Komutu: G-kodunda M3 S1000 gibi bir komut geldiğinde, Mach4 dahili olarak spindle’ı hedef hız olan 1000 RPM’e çıkarmaya çalışır.
- Lua Makro Tetiklenmesi: M3 makrosunun Lua scripti çalışır. Bu script içinde, önce Mach4’ün standart spindle başlatma komutunu (örneğin
mc.mcCntlMCode(3)) çağırarak spindle’ın fiziksel olarak dönmeye başlaması sağlanır. - Bekleme Döngüsü: Bir
whiledöngüsü başlatılır. Bu döngü,mc.IS_SPINDLE_AT_SPEED()fonksiyonutruedönene kadar veyamc.mcSpindleGetRPM()değerimc.mcSpindleGetTargetRPM()değerine belirli bir toleransla ulaşana kadar devam eder. - Zaman Aşımı ve Gecikme: Döngü içinde, CPU kullanımını optimize etmek ve sonsuz döngüleri önlemek için küçük bir gecikme (örneğin
os.sleep(0.01)veyamc.mcCntlSleep(10)) eklenir. Ayrıca, belirli bir süre (örneğin 5-10 saniye) içinde spindle hıza ulaşamazsa döngüyü kıracak bir zaman aşımı sayacı eklenir. Bu, operatöre hata bildirimi yapılmasına olanak tanır. - Döngüden Çıkış: Spindle hedef hıza ulaştığında (veya zaman aşımı gerçekleştiğinde), döngüden çıkılır ve makro tamamlanır. Bu noktada G-kod programının bir sonraki satırı işlenmeye başlar.
| Parametre | Değer/Açıklama |
|---|---|
| Lua Fonksiyonları | mc.IS_SPINDLE_AT_SPEED(), mc.mcSpindleGetRPM(), mc.mcSpindleGetTargetRPM(), mc.mcCntlSleep(), os.time() |
| Bekleme Mantığı | while döngüsü ile spindle hız kontrolü ve zaman aşımı |
| Spindle Toleransı | Hedef RPM’in %95-99’u gibi bir aralık (örn: currentRPM >= targetRPM * 0.95) |
| Zaman Aşımı Süresi | Genellikle 5-15 saniye arasında ayarlanır, spindle motorunun hızlanma süresine göre değişir. |
| Yoklama Aralığı | mc.mcCntlSleep() fonksiyonu ile belirlenen gecikme süresi, genellikle 10-100 ms (0.01-0.1 saniye) |
| Makro Konumu | Mach4 Profil klasöründeki M3.mcs, M4.mcs veya özel M1xx.mcs dosyaları |
| Geri Bildirim Tipi | VFD’den gelen RPM sinyali, enkoder geri bildirimi veya Mach4’ün dahili simülasyonu |

Sahada Dikkat Edilmesi Gerekenler
- Spindle Geri Bildiriminin Doğruluğu: Spindle’ın gerçek hızını Mach4’e doğru bir şekilde ileten bir geri bildirim mekanizması (örneğin, VFD üzerinden analog veya dijital RPM sinyali, enkoder) kritik öneme sahiptir. Yanlış veya gecikmeli geri bildirim, bekleme mantığının hatalı çalışmasına neden olabilir. Geri bildirim sinyalinin kalibrasyonu ve doğruluğu düzenli olarak kontrol edilmelidir.
- Zaman Aşımı (Timeout) Mekanizması: Lua scriptinizde mutlaka bir zaman aşımı mekanizması bulunmalıdır. Spindle’ın herhangi bir nedenle hedef hıza ulaşamaması durumunda (örneğin, motor arızası, VFD hatası, yanlış parametreler), programın sonsuz bir döngüde takılı kalmasını önler. Zaman aşımı süresi, spindle’ın maksimum hızlanma süresinden biraz daha uzun olmalıdır, ancak gereksiz beklemeye yol açmayacak kadar da kısa olmamalıdır. Zaman aşımı durumunda kullanıcıya görsel veya işitsel bir uyarı verilmesi ve programın güvenli bir şekilde durdurulması önemlidir.
- RPM Toleransı ve Hassasiyet:
mc.IS_SPINDLE_AT_SPEED()fonksiyonu genellikle yeterli olmakla birlikte, bazı uygulamalarda daha hassas kontrol gerekebilir. Bu durumdamc.mcSpindleGetRPM()kullanılarak hedef RPM’in belirli bir yüzdesi (örneğin %95-99) içinde olup olmadığı kontrol edilmelidir. Bu tolerans, spindle’ın dinamik tepkimesine ve işleme gereksinimlerine göre ayarlanmalıdır. Çok dar bir tolerans, spindle’ın asla “at speed” durumunu bildirememesine yol açabilirken, çok geniş bir tolerans erken başlamaya neden olabilir. - Makro Konumu ve Entegrasyon: Bekleme mantığı genellikle M3 (spindle ileri) ve M4 (spindle geri) makroları içine entegre edilir. Mevcut M-kod makrolarını düzenlerken dikkatli olunmalı, Mach4’ün varsayılan davranışını bozmamak için orijinal kodların yedeği alınmalıdır. Ayrıca, eğer birden fazla spindle veya farklı spindle profilleri kullanılıyorsa, her bir durum için mantığın doğru şekilde uygulandığından emin olunmalıdır.
- Kullanıcı Arayüzü Geri Bildirimi: Spindle’ın hızlanma sürecinde operatöre görsel bir geri bildirim sağlamak faydalıdır. Mach4’ün ekran setinde “Spindle At Speed” göstergesi veya özel bir durum mesajı görüntülemek, operatörün makinenin durumu hakkında bilgi sahibi olmasını sağlar. Bu, özellikle hata durumlarında sorunun tespiti için önemlidir.
- Performans ve Gecikme: Bekleme döngüsü içindeki yoklama aralığı (
mc.mcCntlSleep()) çok kısa tutulursa CPU yükü artabilir, çok uzun tutulursa ise bekleme süresi uzayabilir. Genellikle 10-100 milisaniye arası bir gecikme, iyi bir denge sağlar. Bu, sistemin diğer görevleri yerine getirmesine izin verirken, spindle hızını yeterince sık kontrol etmeyi sağlar.

Sık Karşılaşılan Sorunlar ve Çözümleri
Mach4’te Lua ile spindle at speed bekleme mantığı uygularken karşılaşılabilecek bazı yaygın sorunlar ve bunların çözüm yolları şunlardır:
-
Sorun: Makine, spindle hıza ulaşmasına rağmen sonsuz döngüde takılı kalıyor.
Çözüm: Bu genellikle ya spindle geri bildiriminin doğru çalışmadığı ya da Lua scriptindeki koşulun yanlış olduğu anlamına gelir. Öncelikle, Mach4’ün Diagnostics ekranında “Spindle At Speed” göstergesinin veya RPM değerinin doğru çalıştığından emin olun. Eğer manuel olarak spindle’ı çalıştırdığınızda bu göstergeler doğruysa, Lua scriptinizdeki
whiledöngüsü koşulunu kontrol edin.mc.IS_SPINDLE_AT_SPEED()yerinemc.mcSpindleGetRPM()kullanıyorsanız, tolerans değerinizi (örn.targetRPM * 0.95) gözden geçirin. Çok dar bir tolerans, spindle’ın asla tam olarak hedefe ulaşamadığı durumlarda döngüden çıkışı engelleyebilir. Ayrıca,mc.mcCntlSleep()gibi bir gecikme fonksiyonunun döngü içinde olduğundan emin olun. -
Sorun: Spindle hıza ulaşmadan program bir sonraki adıma geçiyor.
Çözüm: Bu durum, bekleme mantığının ya hiç uygulanmadığı ya da yanlış yapılandırıldığı anlamına gelir. M-kod makrolarınızın (M3.mcs, M4.mcs) doğru klasörde (Mach4 profil klasörü içindeki Macros klasörü) bulunduğundan ve Lua scriptinizin doğru şekilde kaydedildiğinden emin olun. Script içindeki
whiledöngüsünün koşulunu ve eğer kullanılıyorsamc.IS_SPINDLE_AT_SPEED()veya RPM karşılaştırmasının doğru olup olmadığını kontrol edin. Tolerans değeri çok genişse, spindle tam hıza ulaşmadan “at speed” olarak algılanabilir. Mach4’ün dahili spindle ayarlarının (örn. hızlanma/yavaşlama süreleri) doğru yapıldığından da emin olun. -
Sorun: Spindle hıza hiç ulaşamıyor ve program zaman aşımına uğruyor.
Çözüm: Öncelikle, spindle motorunun ve VFD’nin fiziksel olarak çalıştığından ve doğru hız komutunu aldığından emin olun. VFD parametrelerini kontrol edin (maksimum frekans, hızlanma/yavaşlama rampaları). Mach4’ün spindle konfigürasyonunda (Output Mapping, Spindle Setup) yanlış ayarlar olabilir. Eğer fiziksel bir sorun yoksa, Lua scriptinizdeki zaman aşımı süresinin spindle’ın gerçek hızlanma süresinden kısa olup olmadığını kontrol edin. Gerekirse zaman aşımı süresini artırın. Zaman aşımı durumunda üretilen hata mesajının açıklayıcı olduğundan ve operatöre sorunun kaynağı hakkında bilgi verdiğinden emin olun.
-
Sorun: Makine çalışırken yavaşlama veya takılma yaşanıyor.
Çözüm: Bu genellikle Lua bekleme döngüsü içinde çok kısa bir
mc.mcCntlSleep()süresi kullanıldığında veya hiç kullanılmadığında ortaya çıkar. Çok sık yoklama (polling) CPU kaynaklarını aşırı kullanabilir.mc.mcCntlSleep(10)(10 milisaniye) gibi makul bir gecikme ekleyerek bu sorunu çözebilirsiniz. Bu, Mach4’ün diğer görevleri yerine getirmesine olanak tanırken, spindle hızını yeterince sık kontrol etmesini sağlar. -
Sorun: Farklı spindle hızlarında bekleme süresi tutarsız.
Çözüm: Spindle motorlarının hızlanma ve yavaşlama profilleri hızdan hıza değişebilir. Eğer bekleme mantığınız sadece tek bir sabit zaman aşımı kullanıyorsa, düşük hızlarda gereksiz beklemeye, yüksek hızlarda ise yetersiz beklemeye neden olabilir. Gelişmiş bir çözüm, hedef RPM’e göre dinamik bir zaman aşımı süresi hesaplamaktır. Örneğin, daha yüksek RPM’ler için daha uzun bir zaman aşımı süresi belirleyebilirsiniz. Ayrıca, VFD’nin hızlanma rampalarını optimize etmek de bu tutarsızlığı azaltmaya yardımcı olabilir.
Uzman Tavsiyesi
Mach4’te Lua ile spindle at speed bekleme mantığının uygulanması, modern CNC otomasyonunda işleme kalitesi, takım ömrü ve operasyonel güvenlik açısından vazgeçilmez bir adımdır. Bu detaylı saha rehberi ve teknik makale boyunca ele aldığımız üzere, Mach4’ün esnek Lua scripting yetenekleri sayesinde, her türlü spindle konfigürasyonu ve işleme gereksinimi için özelleştirilmiş ve güvenilir bekleme mekanizmaları geliştirmek mümkündür. Temel olarak, mc.IS_SPINDLE_AT_SPEED() veya mc.mcSpindleGetRPM() gibi fonksiyonları kullanarak spindle hızını doğrulamak ve bir zaman aşımı ile desteklenmiş while döngüleri ile program akışını kontrol etmek, bu mantığın temelini oluşturur.
Uzman tavsiyesi olarak, bu tür kritik bir sistemi entegre ederken yalnızca Lua kodunun doğruluğuna değil, aynı zamanda fiziksel donanım entegrasyonuna ve sistem kalibrasyonuna da azami özen gösterilmelidir. Spindle’dan gelen RPM geri bildiriminin doğru ve gecikmesiz olması, tüm bekleme mantığının temelidir. VFD ayarları, enkoder bağlantıları ve Mach4’ün spindle konfigürasyonu, Lua scripti kadar önemlidir. Ayrıca, geliştirilen her makro veya scriptin, gerçek bir işleme başlamadan önce kapsamlı testlerden geçirilmesi şarttır. Farklı spindle hızlarında, farklı yük koşullarında ve potansiyel hata senaryolarında sistemin nasıl davrandığı gözlemlenmeli ve gerekli ince ayarlar yapılmalıdır. Zaman aşımı değerleri, makinenin ve spindle’ın dinamik tepkilerine göre hassasça belirlenmelidir. Son olarak, operatörün makinenin durumu hakkında her zaman bilgi sahibi olmasını sağlayacak açık ve anlaşılır kullanıcı arayüzü geri bildirimleri eklemek, iş güvenliğini ve operasyonel verimliliği artıracaktır. Mach4’ün Lua ile sunduğu bu özgürlük, CNC makinelerinizi daha akıllı, daha güvenli ve daha verimli hale getirmenize olanak tanır, ancak bu gücü doğru ve sorumlu bir şekilde kullanmak, endüstriyel otomasyonun temel prensibidir.

