Mach4’te Jog İzni, Cycle Start Bekleme ve M6 Devam Mantığı Nasıl Kurulur?

📑 İçindekiler (Tıkla Aç)
Mach4’te Jog İzni, Cycle Start Bekleme ve M6 Devam Mantığı, CNC otomasyonunda güvenlik ve verimlilik için kritik öneme sahiptir. Bu mantık, genellikle Mach4’ün esnek Lua scripting yetenekleri ve OEM Trigger gibi konfigürasyon araçları kullanılarak özelleştirilmiş fonksiyonlar, giriş/çıkış sinyalleri ve durum kontrolleri ile kurulur, operatör güvenliğini ve makine iş akışını optimize eder.
Mach4’te Jog İzni, Cycle Start Bekleme ve M6 Devam Mantığı Nasıl Kurulur? Nedir?
Endüstriyel otomasyon ve özellikle CNC makinelerinde, operatör güvenliği ve işlem verimliliği en üst düzeyde tutulmalıdır. Mach4, bu gereksinimleri karşılamak üzere oldukça esnek ve özelleştirilebilir bir kontrol platformu sunar. “Jog İzni”, “Cycle Start Bekleme” ve “M6 Devam Mantığı” kavramları, bu esnekliğin temel taşlarıdır ve bir makinenin güvenli, kontrollü ve otomatik çalışmasını sağlamak için kritik öneme sahiptir. Bu üç kavram, genellikle Lua scripting ve Mach4’ün yerleşik PMC (Programmable Machine Control) özellikleriyle entegre edilerek özel makine davranışları oluşturulur.
Jog İzni (Jog Enable): Bu fonksiyon, makine eksenlerinin manuel olarak hareket ettirilmesine (jogging) izin verilip verilmeyeceğini kontrol eder. Güvenlik açısından büyük önem taşır. Örneğin, bir takım değişimi sırasında, makine kapısı açıkken veya belirli bir güvenlik kilidi aktifken jogging’in devre dışı bırakılması gerekebilir. Bu, operatörün yanlışlıkla makineyi hareket ettirerek kendisine veya makineye zarar vermesini engeller. Mach4’te bu genellikle bir fiziksel buton veya yazılımsal bir durum değişkeni ile kontrol edilir ve Lua scriptleri aracılığıyla jogging fonksiyonları etkinleştirilir veya devre dışı bırakılır.
Cycle Start Bekleme (Cycle Start Waiting): Bir G-kodu programının başlatılmadan önce belirli koşulların karşılanmasını sağlayan bir mekanizmadır. Bu, programın rastgele veya uygun olmayan bir anda başlamasını önler. Bekleme koşulları arasında kapıların kapalı olması, iş parçasının doğru şekilde sabitlenmesi, takımın doğru takılı olması, spindle’ın hazır olması veya operatörden bir onay beklenmesi gibi durumlar bulunabilir. Mach4’te Cycle Start butonuna basıldığında, bu bekleme mantığı devreye girer ve tüm gerekli kontroller tamamlanmadan programın yürütülmesine izin vermez. Bu, makine ve operatör güvenliğini artırırken, hatalı başlangıçlardan kaynaklanan maliyetli arızaları önler.
M6 Devam Mantığı (M6 Continue Logic): M6 G-kodu, CNC programlarında takım değişimi için kullanılan standart bir komuttur. Bir M6 komutuyla karşılaşıldığında, Mach4 programı duraklatır ve takım değişiminin gerçekleşmesini bekler. “M6 Devam Mantığı”, bu duraklama sırasında ne olacağını ve programın nasıl devam edeceğini belirleyen özelleştirilmiş bir süreçtir. Bu süreç, otomatik takım magazini olan makinelerde tamamen otomatik olabileceği gibi, manuel takım değişimi gerektiren makinelerde operatörün belirli adımları tamamlamasını ve ardından “Cycle Start” veya özel bir “Devam” butonuna basmasını bekleyebilir. Bu mantık, genellikle Mach4’ün özel M6 script dosyaları (örn. M6Start.mcs, M6End.mcs) aracılığıyla Lua ile programlanır, böylece takım değişiminin güvenli ve doğru bir şekilde tamamlandığından emin olunur.
Çalışma Prensibi ve Teknik Veriler
Bu üç temel mantığın Mach4’te kurulumu, platformun esnek mimarisi sayesinde büyük ölçüde Lua scripting yeteneklerine dayanır. Mach4, bir G-kodu yorumlayıcısı olmanın ötesinde, kullanıcının makine davranışını derinlemesine özelleştirmesine olanak tanıyan güçlü bir API (Application Programming Interface) sunar. Bu API, Lua scriptleri aracılığıyla makine durumunu okuma, giriş/çıkış (I/O) sinyallerini kontrol etme ve çeşitli makine fonksiyonlarını tetikleme imkanı sağlar.

Jog İzni Kurulumu:
Çalışma Prensibi: Jog izni, genellikle bir güvenlik anahtarı, kapı kilidi sensörü veya özel bir panel butonu ile ilişkilendirilir. Bu giriş sinyali aktif olduğunda (örn. kapı kapalı veya güvenlik anahtarı açık), jogging’e izin verilir; aksi takdirde yasaklanır. Mach4’te bu, bir OEM Trigger veya bir Lua scripti ile bir giriş sinyalinin durumunu izleyerek yapılır.
- Donanım: Bir fiziksel buton veya sensör (örn. kapı sensörü) Mach4’ün kontrol kartına (örn. Ethernet SmoothStepper, PMDX-424) bağlanır.
- Mach4 Konfigürasyonu:
- Inputs (Girişler): “Configure > Control > Inputs” menüsünden ilgili fiziksel pin bir “OEM Trigger” olarak atanır. Örneğin, “JogEnable” adında bir sinyal atanabilir.
- Lua Script: Bir Lua scripti (örn. Screen Load scripti veya bir özel buton scripti) bu OEM Trigger’ın durumunu sürekli izler.
- Lua Örneği (Konsept):
function OnJogEnableInput(state) if state == 1 then -- Giriş aktifse (jog izni ver) mc.mcCntlSetJogState(mc.JOG_ENABLE) mc.mcCntlSetUserMessage("Jogging aktif.") else -- Giriş pasifse (jog izni kapat) mc.mcCntlSetJogState(mc.JOG_DISABLE) mc.mcCntlSetUserMessage("Jogging devre dışı. Güvenlik kontrolü.") end end mc.mcCntlSetInput(mc.ISIG_INPUT_OEM_TRIGGER_1, "OnJogEnableInput") -- OEM Trigger 1'i JogEnable olarak atadığımızı varsayalımBu script, ilgili giriş sinyali değiştiğinde `mc.mcCntlSetJogState()` fonksiyonunu kullanarak jogging durumunu ayarlar. Güvenlik önlemleri için E-stop ve limit switch durumları da kontrol edilebilir.

Cycle Start Bekleme Kurulumu:
Çalışma Prensibi: Cycle Start butonuna basıldığında, Mach4’ün varsayılan Cycle Start fonksiyonu yerine özel bir Lua scripti çalıştırılır. Bu script, programın başlaması için gerekli tüm koşulları (kapı kapalı, takım hazır, operatör onayı vb.) kontrol eder. Tüm koşullar karşılanırsa, script asıl Cycle Start fonksiyonunu çağırır; aksi takdirde bir hata mesajı gösterir ve programı başlatmaz.
- Mach4 Konfigürasyonu:
- Screen Editor: Ekran düzenleyici (Screen Editor) kullanılarak Cycle Start butonunun varsayılan Lua scripti üzerine yazılır.
- Lua Script: Genellikle Screen Load script veya özel bir buton scripti içinde bu mantık oluşturulur.
- Lua Örneği (Konsept):
function MyCycleStart() local doorClosed = mc.mcSignalGetState(mc.ISIG_INPUT_DOOR_CLOSED) -- Kapı kapalı sinyalini oku local toolReady = mc.mcSignalGetState(mc.ISIG_INPUT_TOOL_READY) -- Takım hazır sinyalini oku if doorClosed == 1 and toolReady == 1 then -- Tüm koşullar karşılandı, Cycle Start'ı başlat mc.mcCntlCycleStart() mc.mcCntlSetUserMessage("Program başlatılıyor...") else -- Koşullar karşılanmadı, hata mesajı göster mc.mcCntlSetLastError("Hata: Program başlatılamadı. Kapı açık veya takım hazır değil!") mc.mcCntlSetUserMessage("Program başlatılamadı. Lütfen koşulları kontrol edin.") end end -- Cycle Start butonunun "Left Click Script" özelliğini "MyCycleStart()" olarak ayarlayın.Bu script, kapı ve takım hazır sinyallerini kontrol eder. Daha karmaşık senaryolarda spindle hızı, soğutma sıvısı seviyesi gibi birçok başka parametre de kontrol edilebilir.

M6 Devam Mantığı Kurulumu:
Çalışma Prensibi: Bir M6 komutu işlendiğinde, Mach4 otomatik olarak duraklar. Bu duraklama sırasında, genellikle M6Start.mcs ve M6End.mcs adındaki özel Lua scriptleri tetiklenir. Bu scriptler, takım değişim sürecini yönetir, operatöre talimatlar verir ve değişim tamamlandığında programın devam etmesini sağlar.
- Mach4 Konfigürasyonu:
- M6 Scriptleri: Mach4’ün profil klasöründeki “Macros” dizini altında (örn. C:Mach4HobbyProfilesMyProfileMacros) M6Start.mcs ve M6End.mcs adında Lua script dosyaları oluşturulur veya düzenlenir.
- Lua Örneği (Konsept):
M6Start.mcs:
-- M6 komutu başladığında çalışır mc.mcCntlSetLastError("M6: Takım Değişimi Bekleniyor. Lütfen yeni takımı takın ve Cycle Start'a basın.") mc.mcCntlSetUserMessage("Takım Değişimi: Yeni takım takın.") -- Spindle'ı durdur mc.mcSpindleSetState(mc.SPINDLE_STOP) -- Z eksenini güvenli bir pozisyona taşı (isteğe bağlı) -- mc.mcCntlGcodeExecute("G53 G0 Z-100") -- Mutlak koordinatta güvenli Z pozisyonu mc.mcCntlSetState(mc.STATE_IS_PAUSED) -- Programı duraklatM6End.mcs:
-- M6 komutu bittiğinde ve Cycle Start'a basıldığında çalışır local toolChangedOK = mc.mcSignalGetState(mc.ISIG_INPUT_TOOL_CHANGE_CONFIRM) -- Operatör onay sinyali if toolChangedOK == 1 then mc.mcCntlSetUserMessage("Takım değişimi tamamlandı. Programa devam ediliyor.") mc.mcCntlSetState(mc.STATE_IS_RUNNING) -- Programı devam ettir return 1 -- Başarılı else mc.mcCntlSetLastError("Hata: Takım değişimi onaylanmadı. Lütfen tekrar deneyin.") mc.mcCntlSetUserMessage("Takım Değişimi: Onay bekleniyor.") return 0 -- Başarısız, program duraklamaya devam etsin endBu mantıkta, M6Start programı duraklatır ve operatöre talimat verir. Operatör takımı değiştirdikten sonra “Cycle Start” butonuna bastığında, M6End scripti tetiklenir. Bu script, bir “Tool Change Confirm” (Takım Değişimi Onayı) sinyalini kontrol ederek takım değişiminin başarıyla tamamlandığını doğrular ve ardından programın devam etmesine izin verir. Bu onay sinyali, bir fiziksel buton veya bir sensörden gelebilir.
| Parametre | Değer/Açıklama |
|---|---|
| Lua API Fonksiyonu (Jog) | mc.mcCntlSetJogState(mc.JOG_ENABLE / mc.JOG_DISABLE): Jogging durumunu ayarlar. |
| Lua API Fonksiyonu (Cycle Start) | mc.mcCntlCycleStart(): Programın başlatılmasını tetikler. |
| Lua API Fonksiyonu (Durum) | mc.mcCntlSetState(mc.STATE_IS_PAUSED / mc.STATE_IS_RUNNING): Makine durumunu kontrol eder/ayarlar. |
| Mach4 Konfigürasyonu | “Configure > Control > Inputs” menüsü, OEM Trigger’lar, Lua scriptleri. |
| G-kodu Komutu | M6: Takım değişimi komutu. |
| M6 Script Dosyaları | M6Start.mcs, M6End.mcs: M6 komutunun başlangıcında ve bitiminde çalışan özel Lua scriptleri. |
| Sinyal Türleri | mc.ISIG_INPUT_...: Fiziksel giriş sinyalleri (kapı, güvenlik, onay butonları). |

Sahada Dikkat Edilmesi Gerekenler
- Kapsamlı Güvenlik Entegrasyonu: Jog izni, Cycle Start bekleme ve M6 devam mantığı sadece yazılımsal değil, donanımsal güvenlik önlemleriyle (E-stop, kapı kilitleri, ışık bariyerleri) entegre çalışmalıdır. Makine kapısının kapalı olduğunu algılayan sensörler, güvenlik röleleri ve acil durdurma devreleri, Lua scriptlerindeki mantığın temelini oluşturmalıdır. Hiçbir yazılımsal çözüm, fiziksel güvenlik bariyerlerinin yerini tutmaz.
- Net ve Anlaşılır Kullanıcı Geri Bildirimi: Operatör, makinenin neden durduğunu, neden başlamadığını veya neden jog yapamadığını her zaman net bir şekilde anlamalıdır. Mach4’ün kullanıcı mesajı (`mc.mcCntlSetUserMessage()`) ve hata mesajı (`mc.mcCntlSetLastError()`) fonksiyonları, bu bilgilendirmeyi sağlamak için kritik öneme sahiptir. Karmaşık hata kodları yerine, “Kapı açık, lütfen kapatın” gibi anlaşılır mesajlar kullanılmalıdır.
- Modüler ve Okunabilir Lua Scriptleri: Karmaşık mantıkları tek bir büyük script yerine, daha küçük, yönetilebilir fonksiyonlara bölmek (modüler yapı) hem hata ayıklamayı kolaylaştırır hem de gelecekteki değişiklikleri veya genişletmeleri basitleştirir. Scriptlerin içine yeterli yorum satırı eklemek, kodun anlaşılırlığını artırır ve farklı operatörlerin veya bakım personelinin kolayca müdahale etmesini sağlar.
- Detaylı Test ve Senaryo Doğrulama: Kurulan tüm mantıklar, her olası senaryo düşünülerek kapsamlı bir şekilde test edilmelidir. Bu, hem beklenen başarılı durumları hem de beklenmeyen hata durumlarını (örn. kapı açıkken Cycle Start’a basma, M6 sırasında sensör hatası) kapsar. Her bir güvenlik koşulunun doğru çalıştığından ve makinenin her durumda güvenli bir duruma geçtiğinden emin olunmalıdır.
- Yedekleme ve Versiyon Kontrolü: Tüm Mach4 profil dosyaları, Lua scriptleri ve konfigürasyon ayarları düzenli olarak yedeklenmelidir. Özellikle önemli değişiklikler yapıldığında versiyon kontrolü (manuel veya otomatik) uygulamak, olası sorunlarda önceki çalışan versiyonlara geri dönmeyi sağlar. Bu, uzun vadede zaman ve maliyet tasarrufu sağlar.
- Performans Optimizasyonu: Aşırı karmaşık veya sık çalışan Lua scriptleri, Mach4’ün performansını etkileyebilir. Scriptlerin verimli yazıldığından, gereksiz döngülerden kaçınıldığından ve sadece gerektiğinde çalıştığından emin olunmalıdır. Özellikle yüksek hızlı uygulamalarda, scriptlerin makinenin gerçek zamanlı kontrolünü engellemediğinden emin olunması önemlidir.

Sık Karşılaşılan Sorunlar ve Çözümleri
Bu sistemlerin kurulumu sırasında ve sonrasında çeşitli sorunlarla karşılaşılabilir. İşte bazı yaygın sorunlar ve çözüm önerileri:
- Sorun: Jog fonksiyonu çalışmıyor veya sürekli aktif.
- Çözüm: Öncelikle Mach4’ün “Diagnostics” ekranından ilgili giriş sinyalinin (örn. Jog Enable butonu veya sensörü) doğru durumu gösterip göstermediğini kontrol edin. Lua scriptindeki `mc.mcCntlSetJogState()` çağrısının doğru koşullar altında tetiklendiğinden emin olun. E-stop veya limit switch gibi diğer güvenlik sinyallerinin aktif olup olmadığını kontrol edin, çünkü bunlar da jogging’i engelleyebilir.
- Sorun: Cycle Start butonuna basıldığında program başlamıyor ve hiçbir hata mesajı görünmüyor.
- Çözüm: Cycle Start butonuna atanan Lua scriptini kontrol edin. Scriptin içinde hata olabilir veya `mc.mcCntlSetLastError()` veya `mc.mcCntlSetUserMessage()` fonksiyonları düzgün kullanılmamış olabilir. “Diagnostics” ekranından Cycle Start için belirlenen tüm ön koşul sinyallerinin (kapı, takım hazır vb.) durumunu doğrulayın. Mach4’ün log dosyalarını (Mach4Hobby.log) kontrol ederek script hatalarını veya tetiklenmeyen olayları arayın.
- Sorun: M6 komutu programda takılı kalıyor, devam etmiyor.
- Çözüm: M6Start.mcs ve M6End.mcs scriptlerini dikkatlice inceleyin. Genellikle M6End.mcs scripti, programın devam etmesi için belirli bir koşulun (örn. operatörün “Takım Değişimi Onay” butonuna basması veya bir sensörün tetiklenmesi) karşılanmasını bekler. “Diagnostics” ekranından bu onay sinyalinin doğru durumu gösterip göstermediğini kontrol edin. Bazen operatör, takım değişimini tamamladıktan sonra tekrar Cycle Start’a basmayı unutabilir; bu durumda M6End.mcs scripti tetiklenmez.
- Sorun: Scriptler düzgün çalışıyor gibi görünüyor ancak makine beklenen davranışı sergilemiyor (örn. Z ekseni güvenli pozisyona gitmiyor).
- Çözüm: Lua scriptlerindeki G-kodu komutlarının (örn. `mc.mcCntlGcodeExecute(“G53 G0 Z-100”)`) doğru yazıldığından ve makinenin geçerli koordinat sisteminde (G53 mutlak koordinat) anlamlı olduğundan emin olun. Ayrıca, Mach4’ün “Configure > Control > Motion” ayarlarındaki hız ve ivme limitlerinin, script içindeki hareket komutlarıyla çakışmadığından emin olun.
- Sorun: Mach4 beklenmedik şekilde çöküyor veya donuyor.
- Çözüm: Genellikle bu durum, hatalı veya sonsuz döngüye giren Lua scriptlerinden kaynaklanır. En son yapılan script değişikliklerini geri alın ve sorunun devam edip etmediğini kontrol edin. Mach4’ün log dosyaları, çökme öncesi son olayları ve olası hata mesajlarını gösterebilir. Scriptleri adım adım (debug modunda mümkünse) çalıştırmak veya print komutları ekleyerek akışı takip etmek yardımcı olabilir.
Uzman Tavsiyesi
Mach4’te Jog İzni, Cycle Start Bekleme ve M6 Devam Mantığının doğru bir şekilde kurulması, modern CNC otomasyonunda güvenlik, verimlilik ve operasyonel esneklik açısından vazgeçilmezdir. Bu sistemler, sadece makinenin fiziksel hareketlerini kontrol etmekle kalmaz, aynı zamanda operatör ile makine arasındaki etkileşimi de güvenli ve öngörülebilir bir çerçeveye oturtur. Bir uzman olarak, bu tür sistemlerin entegrasyonunda izlenmesi gereken en kritik adımların başında detaylı planlama, modüler programlama ve titiz test süreçleri gelmektedir.
Mach4’ün sunduğu Lua scripting ve geniş API desteği, mühendislere ve teknisyenlere kendi makine davranışlarını en ince detayına kadar özelleştirme gücü verir. Bu güç, standart bir makineyi, belirli üretim süreçlerine ve güvenlik gereksinimlerine mükemmel şekilde uyarlanmış, yüksek performanslı bir otomasyon çözümüne dönüştürme potansiyeli taşır. Ancak bu güç, aynı zamanda büyük bir sorumluluğu da beraberinde getirir. Yanlış yazılmış bir script veya eksik bir güvenlik kontrolü, ciddi kazalara, makine hasarına ve üretim kayıplarına yol açabilir. Bu nedenle, her zaman bir adım önde düşünmek, olası tüm senaryoları göz önünde bulundurmak ve her bir güvenlik katmanını hem yazılımsal hem de donanımsal olarak doğrulamak esastır.
Sahadaki tecrübelerime dayanarak şunu rahatlıkla söyleyebilirim: Başarılı bir implementasyonun anahtarı, sadece kod yazma becerisi değil, aynı zamanda makinenin mekanik, elektriksel ve operasyonel dinamiklerini derinlemesine anlamaktan geçer. Operatörlerle yakın çalışarak onların iş akışlarını ve karşılaştıkları potansiyel riskleri anlamak, kullanıcı dostu ve güvenli çözümler geliştirmek için hayati öneme sahiptir. Unutulmamalıdır ki, bir CNC makinesi sadece bir araç değil, aynı zamanda bir yaşam döngüsü boyunca sürekli bakım, optimizasyon ve güvenlik denetimi gerektiren karmaşık bir sistemdir. Kurulan her mantık, bu yaşam döngüsü boyunca sürdürülebilir, belgelenebilir ve kolayca adapte edilebilir olmalıdır. Bu yaklaşımla, Mach4 platformunun sunduğu potansiyeli tam anlamıyla kullanarak, hem güvenli hem de yüksek verimli endüstriyel otomasyon çözümleri yaratmak mümkündür.





















































































































































































