Mach4’te Macro İçinde Operator Message, Error Message ve Cycle Stop Nasıl Kullanılır?
📑 İçindekiler (Tıkla Aç)
- Mach4’te Macro İçinde Operator Message, Error Message ve Cycle Stop Nasıl Kullanılır? Nedir?
- Çalışma Prensibi ve Teknik Veriler
- Operator Message (mc.mcCntlM.OperatorMessage())
- Error Message (mc.mcCntlM.ErrorBox())
- Cycle Stop (mc.mcCntlM.CycleStop())
- Sahada Dikkat Edilmesi Gerekenler
- Sık Karşılaşılan Sorunlar ve Çözümleri
Mach4 makrolarında operatör mesajları (mc.mcCntlM.OperatorMessage()), hata mesajları (mc.mcCntlM.ErrorBox()) ve çevrim durdurma (mc.mcCntlM.CycleStop()) fonksiyonları, işleme süreçlerini kontrol etmek, kullanıcıya bilgi vermek, kritik durumları yönetmek ve güvenliği artırmak için Lua betikleri aracılığıyla kullanılır. Bu fonksiyonlar, program akışını yönlendirerek otomasyon sistemlerinin daha interaktif ve hataya dayanıklı olmasını sağlar.
Mach4’te Macro İçinde Operator Message, Error Message ve Cycle Stop Nasıl Kullanılır? Nedir?
Endüstriyel otomasyon sistemlerinde, özellikle CNC makineleri gibi karmaşık işleme merkezlerinde, operatör ile makine arasındaki etkileşim hayati öneme sahiptir. Mach4, gelişmiş bir CNC kontrol yazılımı olarak, kullanıcılara bu etkileşimi özelleştirmek ve otomatikleştirmek için güçlü bir Lua betikleme ortamı sunar. Bu ortam içerisinde, süreç kontrolünü, kullanıcı bilgilendirmeyi ve hata yönetimini sağlayan üç temel fonksiyon bulunur: Operator Message, Error Message ve Cycle Stop. Bu fonksiyonlar, makine operatörüne anlık geri bildirim sağlamak, olası sorunları bildirmek ve gerektiğinde işleme çevrimini güvenli bir şekilde durdurmak için makrolar içinde stratejik olarak kullanılır.
Operator Message, genellikle kritik olmayan bilgilendirmeler için tercih edilir. Makine durumunu, bir sonraki adımı veya bir işlemin başarıyla tamamlandığını operatöre bildirmek amacıyla kullanılır. Bu mesajlar genellikle Mach4 arayüzünün alt kısmında, durum çubuğunda veya küçük bir açılır pencerede görünür ve programın akışını durdurmaz. Örneğin, bir takım değişiminden sonra “Takım #3 başarıyla yüklendi” gibi bir mesaj vermek için idealdir.
Error Message ise adından da anlaşılacağı gibi daha kritik durumlar için tasarlanmıştır. Bir sensör hatası, limit anahtarı tetiklenmesi, yanlış parça yüklenmesi veya programlama hatası gibi durumlarda operatörü uyarmak ve genellikle programın daha fazla ilerlemesini engellemek amacıyla kullanılır. Bu fonksiyon, genellikle bir modal iletişim kutusu (ErrorBox) açar ve operatörün “Tamam” düğmesine basarak hatayı onaylamasını gerektirir. Bu durum, makinenin güvenli bir moda geçmesini veya operatörün müdahalesini zorunlu kılar.
Cycle Stop, mevcut işleme çevrimini anında durdurmak için kullanılan bir fonksiyondur. Bu, genellikle bir hata durumuyla birlikte veya belirli bir işlem adımının tamamlanmasının ardından manuel müdahale gerektiren durumlarda kullanılır. Örneğin, bir ölçüm işlemi sonrasında değerler tolerans dışı ise, hem bir hata mesajı gösterilip hem de çevrim durdurularak operatörün durumu değerlendirmesi sağlanabilir. Cycle Stop, makinenin hareketini durdurur ve programın daha fazla G-kodu işlemesini engeller, ancak genellikle makinenin güç beslemesini kesmez.
Bu üç fonksiyonun doğru ve etkin kullanımı, endüstriyel otomasyon sistemlerinin güvenilirliğini, verimliliğini ve operatör güvenliğini önemli ölçüde artırır. Lua makroları içinde bu fonksiyonları kullanarak, Mach4 kullanıcıları kendi özel ihtiyaçlarına göre gelişmiş otomasyon senaryoları oluşturabilirler.
Çalışma Prensibi ve Teknik Veriler
Mach4’ün Lua betikleme motoru, makine kontrolü için geniş bir API (Uygulama Programlama Arayüzü) sağlar. Bu API üzerinden, makine durumunu okuyabilir, eksenleri kontrol edebilir ve kullanıcı arayüzü ile etkileşim kurabiliriz. Operator Message, Error Message ve Cycle Stop fonksiyonları da bu API’nin önemli bir parçasıdır ve mc.mcCntlM nesnesi üzerinden erişilir. Her bir fonksiyonun kendine özgü bir çalışma prensibi ve kullanım senaryosu vardır.
Operator Message (mc.mcCntlM.OperatorMessage())
Bu fonksiyon, operatöre anlık ve genellikle non-kritik bildirimler sunar. En basit haliyle, bir metin dizesini parametre olarak alır ve bu metni Mach4 arayüzünde görüntüler. Genellikle durum çubuğunda veya kısa süreli bir pop-up olarak belirir ve operatörün herhangi bir etkileşimini gerektirmez. Program akışı kesintisiz devam eder.
Kullanım Amacı:
- İşlem adımlarının başarıyla tamamlandığını bildirme.
- Operatöre sonraki adımlar hakkında yönlendirme yapma (örn. “Takımı temizleyin”).
- Makine durum değişikliklerini duyurma (örn. “Otomatik mod aktif”).
- Periyodik bakım hatırlatmaları (örn. “Yağ seviyesini kontrol edin”).
Teknik Uygulama Örneği:
-- M101.m1s dosyası içinde bir örnek
local inst = mc.mcGetInstance()
local toolNumber = mc.mcToolGetSelected(inst)
mc.mcCntlM.OperatorMessage("Mevcut Takım: " .. tostring(toolNumber) .. " yüklendi. İşleme devam ediyor.")
Bu örnekte, seçili takım numarasını alıp operatöre bilgi veren basit bir mesaj gösterilir. Mesaj, programın çalışmasını durdurmaz.
Error Message (mc.mcCntlM.ErrorBox())
Bu fonksiyon, kritik hata durumlarında operatörü uyarmak ve genellikle programın ilerlemesini durdurmak için kullanılır. Bir metin dizesi parametresi alır ve bu metni içeren bir modal iletişim kutusu (ErrorBox) açar. Operatör bu kutuyu “Tamam” düğmesine basarak kapatana kadar Mach4 arayüzü bloklanır ve programın daha fazla G-kodu işlemesi durur. Bu, operatörün hatayı fark etmesini ve gerekli önlemleri almasını sağlar.
Kullanım Amacı:
- Limit anahtarı tetiklenmesi gibi güvenlik ihlallerini bildirme.
- Sensörlerden gelen kritik arıza verilerini iletme.
- Takım kırılması veya yanlış takım yüklenmesi gibi üretim hatalarını duyurma.
- Programlama mantığındaki kritik hataları (örn. geçersiz parametre) belirtme.
Teknik Uygulama Örneği:
-- M102.m1s dosyası içinde bir örnek
local inst = mc.mcGetInstance()
local sensorInput = mc.mcIoGetInput(inst, 10) -- Örnek olarak dijital giriş 10'u okur
if sensorInput == 0 then -- Sensör düşük sinyal veriyorsa (hata durumu)
mc.mcCntlM.ErrorBox("KRİTİK HATA: Parça algılama sensörü hatası! Lütfen parçayı kontrol edin ve tekrar deneyin.")
mc.mcCntlM.CycleStop(inst) -- Hata mesajıyla birlikte çevrimi durdur
end
Bu örnekte, belirli bir sensörden gelen girişin durumuna göre bir hata mesajı gösterilir ve ardından CycleStop() ile işleme çevrimi durdurulur. Operatör hatayı onaylayana kadar makine durmuş vaziyette kalır.
Cycle Stop (mc.mcCntlM.CycleStop())
Bu fonksiyon, mevcut G-kodu işleme çevrimini anında durdurur. Genellikle bir hata durumuyla birlikte veya bir işlem adımının sonunda manuel müdahale gerektiğinde kullanılır. CycleStop(), Mach4’ün dahili durum makinesini “Duraklatıldı” veya “Durduruldu” durumuna geçirir, ancak genellikle makinenin güç beslemesini kesmez. Operatör daha sonra çevrimi yeniden başlatabilir veya manuel müdahalelerde bulunabilir.
Kullanım Amacı:
- Kritik bir hata durumunda makine hareketini durdurma.
- Manuel ölçüm veya ayarlama gerektiren noktalarda programı duraklatma.
- Güvenlik prosedürleri gereği belirli noktalarda otomatik akışı kesme.
- Bir alt programın veya döngünün sonunda bekletme.
Teknik Uygulama Örneği:
-- M103.m1s dosyası içinde bir örnek
local inst = mc.mcGetInstance()
local partMeasuredValue = mc.mcCntlGetVar(inst, mc.SV_USER_VAR_1) -- Kullanıcı değişkeninden ölçüm değerini alır
if partMeasuredValue > 10.5 or partMeasuredValue < 9.5 then -- Tolerans dışı ise
mc.mcCntlM.ErrorBox("TOLERANS DIŞI: Ölçülen değer (" .. tostring(partMeasuredValue) .. ") tolerans dışı. Lütfen parçayı kontrol edin!")
mc.mcCntlM.CycleStop(inst)
else
mc.mcCntlM.OperatorMessage("Ölçüm başarılı: " .. tostring(partMeasuredValue) .. ". İşleme devam ediyor.")
end
Bu örnekte, bir ölçüm değerinin tolerans içinde olup olmadığı kontrol edilir. Tolerans dışı ise hem bir hata mesajı gösterilir hem de çevrim durdurulur. Aksi takdirde, bilgilendirici bir operatör mesajı ile işleme devam edilir.
| Parametre | Değer/Açıklama |
|---|---|
| Fonksiyon Adı | mc.mcCntlM.OperatorMessage(string message) |
| Amaç | Operatöre bilgilendirici, non-kritik mesajlar göstermek. |
| Bloklama Durumu | Non-bloklayıcı. Program akışı devam eder. |
| Görüntüleme | Durum çubuğu veya kısa süreli pop-up. |
| Tipik Kullanım | İşlem adımı tamamlandı, takım bilgisi, hatırlatmalar. |
| Fonksiyon Adı | mc.mcCntlM.ErrorBox(string message) |
| Amaç | Kritik hata durumlarını bildirmek ve operatör onayı beklemek. |
| Bloklama Durumu | Bloklayıcı (modal diyalog kutusu). Operatör onayı gereklidir. |
| Görüntüleme | Modal iletişim kutusu (ErrorBox). |
| Tipik Kullanım | Sensör hatası, limit anahtarı, takım kırılması, kritik programlama hatası. |
| Fonksiyon Adı | mc.mcCntlM.CycleStop(number instance) |
| Amaç | Mevcut G-kodu işleme çevrimini anında durdurmak. |
| Bloklama Durumu | Anında durdurma. Makine hareketini keser, program akışını durdurur. |
| Etki | Makineyi güvenli bir duraklama durumuna getirir. |
| Tipik Kullanım | Hata sonrası durdurma, manuel müdahale noktaları, acil durum senaryoları. |
Sahada Dikkat Edilmesi Gerekenler
- Mesaj Netliği ve Anlaşılırlığı: Makrolarda kullanılan mesajlar, makine operatörleri tarafından kolayca anlaşılır olmalıdır. Teknik jargon yerine, operatörün aşina olduğu terimler ve net ifadeler kullanılmalıdır. Mesajlar kısa ve öz olmalı, gereksiz bilgi içermemelidir. Örneğin, “Eksen X limit anahtarı tetiklendi” yerine “X ekseni aşırı hareket etti. Lütfen engeli kaldırın ve sıfırlayın” gibi yönlendirici ifadeler, operatörün hızlı ve doğru tepki vermesini sağlar.
- Hata Yönetimi ve Kurtarma Prosedürleri: Özellikle
ErrorBoxkullanıldığında, sadece hatayı bildirmekle kalmayıp, operatöre hatayı gidermek için ne yapması gerektiği konusunda da bilgi verilmelidir. Bu, “Sorunu giderdikten sonra ‘Devam’ düğmesine basın” veya “Bakım departmanıyla iletişime geçin” gibi yönlendirmelerle sağlanabilir. Hata sonrası makinenin hangi durumda olacağı ve nasıl güvenli bir şekilde kurtarılacağı önceden planlanmalı ve makro koduna yansıtılmalıdır. - Güvenlik Protokolleri ve Entegrasyon:
ErrorBoxveCycleStopfonksiyonları, makine güvenliği ile doğrudan ilişkilidir. Bu fonksiyonlar tetiklendiğinde makinenin güvenli bir duruma geçtiğinden emin olunmalıdır. Bu, sadece hareketin durdurulması değil, aynı zamanda potansiyel tehlikelerin (örn. dönen mil, yüksek basınç) de kontrol altına alınması anlamına gelebilir. Gerekirse, makro içinde ek güvenlik komutları (örn. mili durdurma, soğutmayı kapatma) entegre edilmelidir. Acil durum durdurma (E-stop) devresi ile bu makroların etkileşimi de gözden geçirilmelidir. - Kapsamlı Test ve Doğrulama: Makrolar sahaya sürülmeden önce, mümkün olan tüm senaryolar altında (normal çalışma, hata durumları, kullanıcı yanlış girişleri vb.) kapsamlı bir şekilde test edilmelidir. Özellikle hata mesajlarının ve çevrim durdurmaların beklenen şekilde çalıştığından, makinenin güvenli bir duruma geçtiğinden ve operatörün doğru şekilde bilgilendirildiğinden emin olunmalıdır. Gerçek dünya koşullarını taklit eden testler, potansiyel sorunları erkenden tespit etmeye yardımcı olur.
- Operatör Eğitimi ve Dokümantasyon: Makroların ve ürettikleri mesajların anlamı, operatörlere açıkça anlatılmalıdır. Hangi mesajın ne anlama geldiği, bir hata durumunda ne yapılması gerektiği ve çevrim durdurma sonrasında nasıl hareket edileceği konusunda eğitim verilmelidir. Ayrıca, makroların işlevselliğini, kullanım kılavuzlarını ve hata giderme adımlarını içeren açık ve erişilebilir bir dokümantasyon sağlanmalıdır.
- Loglama ve İzleme: Kritik hata durumlarının veya önemli olayların Mach4’ün log dosyalarına kaydedilmesi, uzun vadede sorun giderme, süreç analizi ve iyileştirme için değerli veriler sağlar.
mc.mcCntlM.LogMessage()fonksiyonu, bu amaçla kullanılabilir. Bu sayede, hangi hataların ne sıklıkta meydana geldiği ve bu hatalara nasıl tepki verildiği takip edilebilir. - Performans ve Kullanıcı Deneyimi: Aşırıya kaçan veya sürekli tekrarlayan mesaj kutuları, özellikle
ErrorBox, operatörün iş akışını kesintiye uğratabilir ve verimliliği düşürebilir. Mesajların sıklığı ve türü dengeli bir şekilde ayarlanmalı, sadece gerçekten gerekli olan durumlarda bloklayıcı mesajlar kullanılmalıdır. Kullanıcı deneyimini optimize etmek, otomasyon sisteminin genel kabulünü ve etkinliğini artıracaktır.
Sık Karşılaşılan Sorunlar ve Çözümleri
Mach4 makrolarında operatör mesajları, hata mesajları ve çevrim durdurma fonksiyonlarını kullanırken karşılaşılabilecek bazı yaygın sorunlar ve bu sorunlara yönelik çözüm önerileri aşağıda listelenmiştir:
1. Sorun: Mesajlar Görünmüyor veya Yanlış Yerde Çıkıyor.
- Açıklama: Makro çalışıyor gibi görünse de,
OperatorMessageveyaErrorBoxile gönderilen mesajlar Mach4 arayüzünde belirmiyor ya da beklenmeyen bir yerde (örn. log penceresinde) görünüyor. - Çözüm:
- Mach4 Profil Ayarları: Öncelikle Mach4’ün profil ayarlarını kontrol edin. Bazı ekran setleri veya profil konfigürasyonları, mesajların belirli bir alanda görünmesini engelleyebilir veya yönlendirebilir. Mach4’ün varsayılan ekran setini kullanarak test edin.
- Lua Betiği Konumu: Makronun doğru dosyada (örn. M-kodu numarasına karşılık gelen .m1s dosyası) ve doğru dizinde (
Profiles/[ProfilAdı]/Macros) olduğundan emin olun. mc.mcCntlMNesnesi: Fonksiyon çağrılarının doğru nesne üzerinden yapıldığından emin olun (mc.mcCntlM.OperatorMessagevemc.mcCntlM.ErrorBox). Büyük/küçük harf duyarlılığı önemlidir.- Loglama Kontrolü: Mesajın gerçekten tetiklenip tetiklenmediğini anlamak için, makronun başında ve sonunda
mc.mcCntlM.LogMessage("Makro çalıştı")gibi bir log mesajı ekleyerek Mach4’ün log dosyasını kontrol edin.
2. Sorun: ErrorBox Makineyi Tamamen Durdurmuyor veya Hatalı Bir Durumda Bırakıyor.
- Açıklama:
ErrorBoxmesajı beliriyor, ancak makine hareket etmeye devam ediyor veya güvenli olmayan bir durumda kalıyor. - Çözüm:
CycleStop()Kullanımı:ErrorBoxsadece bir mesaj kutusu gösterir ve operatörün onayını bekler; otomatik olarak makine hareketini durdurmaz. Kritik hata durumlarında,ErrorBoxçağrısından hemen sonramc.mcCntlM.CycleStop(inst)komutunu ekleyerek çevrimi durdurmanız gerekir.- Eksenleri Durdurma Komutları: Gerekirse, makro içinde eksenlerin hızını sıfırlayan veya motorları durduran ek komutlar kullanılabilir (örn.
mc.mcAxisSetVel(inst, axisId, 0)). Ancak bu, daha karmaşık bir yaklaşımdır ve genellikleCycleStop()yeterlidir. - Güvenlik Zinciri Entegrasyonu: Makine güvenliği için limit anahtarları ve acil durdurma düğmeleri gibi fiziksel güvenlik zincirlerinin doğru yapılandırıldığından ve Mach4 ile entegre olduğundan emin olun. Makro hataları bu fiziksel güvenlik mekanizmalarının yerini almaz, onları tamamlar.
3. Sorun: CycleStop() Beklenenden Farklı Davranıyor (Örn. Tamamen Durmuyor, Yeniden Başlıyor).
- Açıklama:
CycleStop()çağrısı yapılmasına rağmen makine tamamen durmuyor veya operatörün müdahalesinden sonra beklenenden farklı bir şekilde yeniden başlıyor. - Çözüm:
- Tampon Temizleme: Mach4, G-kodlarını bir tamponda işler.
CycleStop()anında durdurma sağlasa da, tampondaki bazı komutlar hala işlenmeye devam edebilir. Tamponu temizlemek için ek komutlar gerekebilir, ancak bu genellikle otomatik olarak yönetilir. Sorun devam ederse, Mach4 forumlarında veya dokümantasyonunda daha derinlemesine çözümler arayın. - Yeniden Başlama Noktası:
CycleStop()sonrası programın nereden devam edeceği (MDI, G-kodu yeniden başlatma) Mach4’ün yapılandırmasına ve operatörün eylemlerine bağlıdır. Programın başından mı, duraklatılan satırdan mı devam edeceği kontrol edilmelidir. `Mach4’te “Return to Zero” veya “Run from here” gibi özelliklerin nasıl çalıştığını anlayın. - M-Kodu İşleme Sırası: Bazı M-kodları,
CycleStop()çağrısından önce veya sonra farklı davranabilir. M-kodlarının işleme sırasını ve etkilerini gözden geçirin.
- Tampon Temizleme: Mach4, G-kodlarını bir tamponda işler.
4. Sorun: Lua Betiği Sözdizimi Hataları veya Fonksiyon Tanımlama Sorunları.
- Açıklama: Makro hiç çalışmıyor veya Mach4 bir Lua sözdizimi hatası bildiriyor.
- Çözüm:
- Sözdizimi Kontrolü: Mach4’ün dahili Lua editörünü kullanarak sözdizimi hatalarını kontrol edin. Parantezlerin, tırnak işaretlerinin, virgüllerin ve diğer noktalama işaretlerinin doğru kullanıldığından emin olun.
- Büyük/Küçük Harf Duyarlılığı: Lua büyük/küçük harf duyarlıdır.
mc.mcCntlM.OperatorMessageilemc.mcCntlm.operatormessagefarklıdır. Fonksiyon ve nesne adlarının Mach4 API’sindekiyle tam olarak eşleştiğinden emin olun. - Nesne Erişimi:
mc.mcCntlMgibi ana nesnelerin doğru şekilde çağrıldığından emin olun. Genellikle bu nesneye doğrudan erişilir ancak bazenlocal inst = mc.mcGetInstance()gibi bir örnek alınması gerekebilir, özellikleCycleStop()gibi fonksiyonlar için. - Hata Ayıklama: Lua kodunuzdaki değişken değerlerini veya belirli kod bloklarının çalışıp çalışmadığını kontrol etmek için
mc.mcCntlM.LogMessage()fonksiyonunu kullanın. Bu, sorunlu alanı daraltmanıza yardımcı olur.
5. Sorun: Makrolar Çalışmıyor veya Tetiklenmiyor.
- Açıklama: Makro dosyası doğru oluşturulmuş gibi görünse de, M-kodu çağrıldığında veya bir OEM düğmesine basıldığında hiçbir şey olmuyor.
- Çözüm:
- Dosya Adı ve Konumu: Makronun dosya adının (örn. M101.m1s) doğru M-kodu numarasına karşılık geldiğinden ve Mach4’ün profil dizinindeki
Macrosklasörüne kaydedildiğinden emin olun. - OEM Düğmesi Ataması: Eğer makro bir OEM düğmesi ile tetikleniyorsa, düğmeye doğru Lua komutunun (örn.
mc.mcCntlM.RunMacro(101)) atandığından emin olun. - Ekran Yükleme Betiği: Eğer makro bir ekran yükleme olayıyla tetikleniyorsa, ekran betiğinin doğru şekilde yapılandırıldığından ve makronuzu çağırdığından emin olun.
- Profil Seçimi: Doğru Mach4 profilinin aktif olduğundan ve makronun bu profilin makro klasöründe
- Dosya Adı ve Konumu: Makronun dosya adının (örn. M101.m1s) doğru M-kodu numarasına karşılık geldiğinden ve Mach4’ün profil dizinindeki



