Mach4’te DRO, LED, Button ve Tab Kontrollerine Lua Script Nasıl Bağlanır?

Mach4’te DRO, LED, Button ve Tab Kontrollerine Lua Script Nasıl Bağlanır?

📅 02 Eylül 2026⏱️ 13 dk okuma
22 Mm Led 220V Ac YEŞİL
📑 İçindekiler (Tıkla Aç)

Mach4’te DRO, LED, Button ve Tab kontrollerine Lua script bağlamak için, Mach4 Screen Editor’e (Ekran Tasarım Modu) girerek ilgili kontrolü seçmeli, ardından kontrolün özellikler panelinde bulunan olay (event) bölümlerine (örn. OnPress, OnRelease, OnUpdate, OnLoad) doğrudan Lua kodunu yazmalı veya harici bir .mcs Lua script dosyasını referans olarak atamalısınız. Bu sayede özel işlevler ve dinamik etkileşimler eklenir.

Mach4’te DRO, LED, Button ve Tab Kontrollerine Lua Script Nasıl Bağlanır? Nedir?

 

Endüstriyel otomasyon ve CNC kontrol sistemlerinde, özellikle Mach4 gibi gelişmiş yazılımlarda, kullanıcı arayüzünü (HMI) ve makine davranışlarını özelleştirmek kritik bir öneme sahiptir. Mach4, bu özelleştirmeyi Lua script dili aracılığıyla sunar. DRO (Digital ReadOut), LED (Light Emitting Diode), Button (Düğme) ve Tab (Sekme) gibi temel kullanıcı arayüzü kontrollerine Lua script bağlamak, operatörün makineyle olan etkileşimini zenginleştirmek, özel hesaplamalar yapmak, durum geri bildirimleri sağlamak ve karmaşık iş akışlarını otomatikleştirmek anlamına gelir. Bu işlem, Mach4’ün dahili Screen Editor‘ü kullanılarak gerçekleştirilir ve temel olarak, belirli bir kontrolün belirli bir olay (örneğin bir düğmeye basılması, bir DRO değerinin değişmesi veya bir sekmenin yüklenmesi) tetiklendiğinde çalışacak bir Lua kodu parçacığını veya dosyasını tanımlamayı içerir. Bu sayede, standart Mach4 fonksiyonlarının ötesine geçilerek tamamen özelleştirilmiş ve uygulamaya özel çözümler geliştirilebilir.

Çalışma Prensibi ve Teknik Veriler

Mach4’te Lua scriptlerin kullanıcı arayüzü kontrolleriyle entegrasyonu, olay tabanlı programlama prensibine dayanır. Her kontrol tipi (DRO, LED, Button, Tab) belirli olaylara sahiptir ve bu olaylar tetiklendiğinde kendilerine atanmış Lua scriptleri çalıştırır. Süreç genellikle aşağıdaki adımları içerir:

  1. Screen Editor’e Erişim: Mach4 çalışırken, üst menüden “Operator” -> “Edit Screen” seçeneği ile Ekran Tasarım Modu‘na geçilir. Bu mod, mevcut ekran düzenini ve kontrollerini görsel olarak düzenlemeye olanak tanır.
  2. Kontrol Seçimi: Düzenlenmek istenen DRO, LED, Button veya Tab kontrolü, ekran üzerinde fare ile tıklanarak seçilir. Seçildiğinde, sağ tarafta veya ayrı bir pencerede kontrolün Özellikler (Properties) paneli açılır.
  3. Olay (Event) Ataması: Özellikler panelinde, kontrol tipine göre değişen bir dizi “Event” veya “Script” bölümü bulunur.
    • Buttonlar: Genellikle OnPress (düğmeye basıldığında) ve OnRelease (düğme bırakıldığında) olayları kullanılır. Bu olayların karşısındaki alana doğrudan kısa Lua kodları yazılabilir veya daha uzun ve karmaşık scriptler için bir .mcs dosyasının yolu belirtilebilir (örneğin, dofile("C:Mach4HobbyProfilesMyProfileMacrosMyCustomButtonScript.mcs")).
    • DRO’lar: Genellikle OnUpdate (DRO değeri güncellendiğinde) veya OnChange (değer değiştiğinde) olayları kullanılır. Bu olaylar, DRO değerine bağlı olarak görsel geri bildirimler sağlamak veya başka hesaplamalar yapmak için idealdir. Örneğin, bir DRO belirli bir değere ulaştığında bir LED’i yakmak.
    • LED’ler: LED’ler genellikle bir durumun görsel gösterimi için kullanılır. Onların durumunu (açık/kapalı) bir Lua script ile mc.mcCntlSetLed(inst, id, state) gibi fonksiyonlar kullanarak dinamik olarak değiştirebiliriz. LED’lerin kendilerine özel OnUpdate olayları da olabilir, ancak genellikle başka bir kontrol veya makine durumu tarafından tetiklenirler.
    • Tab Kontrolleri: OnLoad (sekme yüklendiğinde/aktif olduğunda) olayı en yaygın kullanılanıdır. Bu olay, belirli bir sekmeye geçildiğinde, o sekmeye özel kontrolleri başlatmak, verileri yüklemek veya arayüzü güncellemek için kullanılır.
  4. Lua Script Yazma/Referans Gösterme:
    • Doğrudan Kod: Basit işlemler için (örn. mc.mcCntlSetLed(inst, 1000, 1)), kodu doğrudan olay alanına yazmak yeterlidir.
    • Harici Dosya: Daha karmaşık scriptler için, kodu bir .mcs uzantılı dosyaya kaydedip bu dosyayı Mach4’ün Profiles/[ProfilAdı]/Macros veya Screens/[EkranAdı] klasörüne yerleştirmek ve olay alanında dofile("script_dosya_yolu.mcs") şeklinde referans göstermek en iyi yöntemdir. Bu, kodun daha düzenli olmasını ve farklı kontrollerde yeniden kullanılabilmesini sağlar.
  5. API Kullanımı: Lua scriptler içinde, Mach4’ün zengin API (Application Programming Interface)‘si kullanılarak makine durumu okunabilir, G-kod komutları gönderilebilir, diğer kontrollerin değerleri okunup yazılabilir. Örneğin:
    • mc.mcCntlGetDro(inst, id): Bir DRO’nun değerini okur.
    • mc.mcCntlSetDro(inst, id, value): Bir DRO’nun değerini ayarlar.
    • mc.mcCntlGetLed(inst, id): Bir LED’in durumunu okur.
    • mc.mcCntlSetLed(inst, id, state): Bir LED’in durumunu ayarlar.
    • mc.mcCntlSetButton(inst, id, state): Bir düğmenin durumunu ayarlar (nadiren kullanılır, genellikle OnPress ile etkileşim kurulur).
    • screen.get_control(screen_id, control_id): Belirli bir ekrandaki bir kontrol nesnesine erişir.
    • control.SetText("Yeni Metin"): Bir kontrolün metin özelliğini değiştirir.
Parametre Değer/Açıklama
Kontrol Tipi DRO, LED, Button, Tab
Temel Olaylar OnPress, OnRelease, OnUpdate, OnChange, OnLoad
Script Dili Lua (Sürüm 5.1 veya uyumlu)
Script Konumu Doğrudan olay alanına gömülü kod veya .mcs dosyaları (Profiles/[ProfilAdı]/Macros/ veya Screens/[EkranAdı]/)
Mach4 API Erişimi mc (Motion Control), scr (Screen), wx (wxWidgets) objeleri üzerinden
Gerekli Araçlar Mach4 Screen Editor, Metin Düzenleyici (örneğin Notepad++, VS Code)
Hata Ayıklama Mach4 Konsolu (print() fonksiyonu), Log dosyaları
Performans Etkisi Aşırı karmaşık veya sık çalışan scriptler CPU yükünü artırabilir.
Mach4’te DRO, LED, Button ve Tab Kontrollerine Lua Script Nasıl Bağlanır?

Sahada Dikkat Edilmesi Gerekenler

  • Yedekleme ve Versiyon Kontrolü: Herhangi bir script veya ekran düzenlemesine başlamadan önce, mevcut Mach4 profilinizin (.set dosyası ve Macros klasörü) tam bir yedeğini alın. Büyük projelerde, script dosyaları için Git gibi bir versiyon kontrol sistemi kullanmak, değişiklikleri takip etmek ve geri dönmek için hayati öneme sahiptir.
  • Performans Optimizasyonu: Özellikle OnUpdate gibi sıkça tetiklenen olaylara bağlanan scriptlerde performans kritik bir faktördür. Uzun süren hesaplamalardan, gereksiz dosya okuma/yazma işlemlerinden veya sonsuz döngülerden kaçının. Scriptlerinizi mümkün olduğunca verimli yazın ve sadece gerçekten ihtiyaç duyulduğunda çalışacak şekilde tasarlayın. Aşırı CPU kullanımı Mach4’ün ana kontrol döngüsünü aksatabilir ve makine performansını olumsuz etkileyebilir.
  • Hata Ayıklama ve Günlük Kaydı: Scriptlerinizdeki olası hataları tespit etmek için print("Hata Ayıklama Mesajı") fonksiyonunu sıkça kullanın. Bu mesajlar Mach4 Konsolu’nda (Operator -> Mach4 Console) görüntülenir. Daha gelişmiş hata ayıklama için, scriptlerinizden log dosyalarına yazma yeteneği ekleyerek sorunları daha detaylı inceleyebilirsiniz. Her zaman Mach4 konsolunu ve log dosyalarını düzenli olarak kontrol edin.
  • Güvenlik ve Makine Kontrolü: Makine hareketini veya emniyetini etkileyebilecek scriptler yazarken son derece dikkatli olun. Yanlış yazılmış bir script, beklenmedik makine hareketlerine veya tehlikeli durumlara yol açabilir. Scriptleri her zaman düşük hızlarda ve güvenli bir ortamda test edin. Acil Durdurma (E-Stop) prosedürlerinin her zaman erişilebilir ve işlevsel olduğundan emin olun.
  • Kod Düzenliliği ve Yorumlama: Scriptlerinizin okunabilirliğini artırmak için temiz, iyi organize edilmiş kod yazın ve bolca yorum satırı ekleyin. Özellikle başkaları tarafından veya gelecekte sizin tarafınızdan anlaşılması zor olabilecek karmaşık mantıklar için yorumlar hayati önem taşır. Fonksiyonlar kullanarak kodu modüler hale getirin.
  • API Bilgisi: Mach4’ün sunduğu Lua API’sini iyi anlamak, scriptlerin gücünü tam olarak kullanmak için esastır. mc (Motion Control), scr (Screen) ve wx (wxWidgets) objeleri üzerinden sunulan fonksiyonları ve bunların parametrelerini iyi kavramak, doğru ve etkili scriptler yazmanızı sağlar. Mach4 dokümantasyonunu düzenli olarak inceleyin.
Mach4’te DRO, LED, Button ve Tab Kontrollerine Lua Script Nasıl Bağlanır?

Sık Karşılaşılan Sorunlar ve Çözümleri

Mach4’te Lua scriptlerle çalışırken karşılaşılan bazı yaygın sorunlar ve bunların çözüm yolları aşağıda listelenmiştir:

  • Script Çalışmıyor / Hiçbir Şey Olmuyor:
    • Sorun: Bir düğmeye basıldığında veya bir DRO güncellendiğinde beklenen scriptin çalışmaması.
    • Çözüm:
      • Olay atamasının doğru yapıldığından emin olun (örn. Button için OnPress).
      • Eğer harici bir .mcs dosyası kullanılıyorsa, dosya yolunun doğru olduğundan ve dosyanın belirtilen konumda bulunduğundan emin olun (büyük/küçük harf duyarlılığına dikkat edin).
      • Lua kodunda syntax hataları olup olmadığını kontrol edin. Basit bir metin düzenleyicide açıp gözden geçirin veya bir Lua linter kullanın.
      • Mach4 Konsolu’nu açın (Operator -> Mach4 Console) ve herhangi bir hata mesajı olup olmadığını kontrol edin. print() fonksiyonu ile scriptinizin neresine kadar çalıştığını takip edebilirsiniz.
  • Kontrol Değeri Güncellenmiyor / Yanlış Değer Gösteriliyor:
    • Sorun: Scriptin bir DRO veya LED’in değerini ayarlamasına rağmen arayüzde değişikliğin yansımaması veya yanlış değerlerin gösterilmesi.
    • Çözüm:
      • Doğru Mach4 API fonksiyonunu kullandığınızdan emin olun (örn. mc.mcCntlSetDro() yerine screen.get_control().SetDRO() veya tam tersi). Bazı fonksiyonlar doğrudan makine kontrolünü etkilerken, bazıları sadece arayüzdeki kontrol nesnesini günceller.
      • Kontrol ID’sinin (id parametresi) doğru olduğundan emin olun. Bu ID’yi Screen Editor’da kontrolün özelliklerinden bulabilirsiniz.
      • Eğer bir DRO’yu makine eksen verileriyle ilişkilendirdiyseniz, script ile manuel olarak ayarlamak yerine Mach4’ün otomatik güncellemesini beklemek daha doğru olabilir.
  • Mach4 Donuyor veya Yavaşlıyor:
    • Sorun: Script çalıştıktan sonra Mach4 arayüzünün donması veya genel performansın düşmesi.
    • Çözüm:
      • Scriptte sonsuz döngü veya çok uzun süren hesaplamalar olup olmadığını kontrol edin. Özellikle OnUpdate gibi sıkça tetiklenen olaylarda bu tür durumlar kritik olabilir.
      • Scripti daha küçük fonksiyonlara bölerek veya daha verimli algoritmalar kullanarak optimize edin.
      • Gereksiz dosya okuma/yazma veya ağ isteklerinden kaçının.
      • Eğer script harici bir işlemi tetikliyorsa, bu işlemin hızlı bir şekilde tamamlandığından veya asenkron olarak çalıştığından emin olun.
  • Hata Mesajları ve Tanımlanmamış Değişkenler:
    • Sorun: Mach4 Konsolu’nda “attempt to index a nil value” veya “variable not defined” gibi hatalar görmek.
    • Çözüm:
      • Lua’da değişkenlerin doğru tanımlandığından ve kapsamlarının (scope) doğru olduğundan emin olun. Global değişken kullanırken dikkatli olun.
      • API fonksiyonlarına geçirdiğiniz parametrelerin (örn. inst, id) doğru ve mevcut olduğundan emin olun. Genellikle inst parametresi için mc.mcGetInstance() kullanılır.
      • Bir nesne üzerinde bir metot çağırmadan önce nesnenin nil olmadığından emin olmak için kontroller ekleyin (örn. if control_obj ~= nil then control_obj.SetText(...) end).

Uzman Tavsiyesi

Mach4’te DRO, LED, Button ve Tab kontrollerine Lua script bağlamak, standart CNC kontrol yazılımlarının ötesine geçerek makine operatörlerine ve otomasyon mühendislerine eşsiz bir özelleştirme ve esneklik sunar. Bu yetenek, sadece görsel bir arayüz değişikliği olmanın ötesinde, karmaşık otomasyon senaryolarını, özel ölçüm ve geri bildirim sistemlerini ve operatörün iş akışını doğrudan destekleyen akıllı fonksiyonları hayata geçirme potansiyeli taşır. Endüstriyel otomasyon sektöründe, bu tür özelleştirilebilir HMI’lar, üretim verimliliğini artırmanın, hata oranlarını azaltmanın ve operatör memnuniyetini yükseltmenin anahtarıdır.

Uzman tavsiyesi olarak, bu alana yeni başlayanların veya mevcut sistemlerini geliştirmek isteyenlerin, küçük ve yönetilebilir scriptlerle başlamalarını öneririm. Öncelikle Mach4’ün Lua API dokümantasyonunu dikkatlice inceleyin ve temel fonksiyonları kavrayın. Herhangi bir büyük değişiklik yapmadan önce daima mevcut profilinizi yedekleyin ve geliştirmelerinizi aşamalı olarak test edin. Hata ayıklama süreçlerini kolaylaştırmak için Mach4 Konsolu’nu aktif olarak kullanın ve scriptlerinizde bolca print() ifadesi ile akışı takip edin. Kodunuzu modüler tutun, sık kullanılan işlevleri ayrı .mcs dosyalarında fonksiyonlar halinde tanımlayın ve bu fonksiyonları farklı kontrollerden çağırın. Bu yaklaşım, hem kodun okunabilirliğini artıracak hem de bakımını kolaylaştıracaktır. En önemlisi, makine hareketini veya güvenliğini etkileyen scriptler üzerinde çalışırken azami dikkat gösterin ve her zaman güvenlik protokollerini ön planda tutun. Doğru bir yaklaşımla, Mach4’ün Lua entegrasyonu, CNC makinelerinizin yeteneklerini hayal bile edemeyeceğiniz seviyelere taşıyabilir ve endüstriyel süreçlerinizde gerçek bir fark yaratabilir.