Mach4’te Lua ile Modbus Register Okuyup Ekranda DRO Olarak Göstermek Nasıl Yapılır?

📅 02 Eylül 2026⏱️ 13 dk okuma
📑 İçindekiler (Tıkla Aç)

Mach4’te Lua ile Modbus register okuyup ekranda DRO olarak göstermek, CNC kontrol sisteminize dışarıdan gelen sensör, PLC veya diğer Modbus cihaz verilerini entegre etmenin güçlü bir yoludur. Bu işlem, Mach4’ün Lua scripting yetenekleri kullanılarak Modbus iletişimi kurulması, belirli register adreslerinden veri okunması, bu verilerin işlenmesi ve özel olarak tanımlanmış Dijital Okuma (DRO) alanlarına dinamik olarak yansıtılmasıyla gerçekleştirilir.

Mach4’te Lua ile Modbus Register Okuyup Ekranda DRO Olarak Göstermek Nasıl Yapılır? Nedir?

 

Endüstriyel otomasyon ve CNC dünyasında, makine kontrol yazılımlarının esnekliği, üretim verimliliği ve hata ayıklama süreçleri için kritik öneme sahiptir. Mach4, gelişmiş ve özelleştirilebilir bir CNC kontrol yazılımı olarak, kullanıcılara bu esnekliği Lua scripting dili aracılığıyla sunar. Bu makalenin odak noktası, Mach4 içerisinde Lua kullanarak Modbus protokolü üzerinden harici cihazlardan (örneğin PLC’ler, sensörler, enerji analizörleri) veri okumak ve bu verileri Mach4 arayüzünde Dijital Okuma (DRO) alanları olarak göstermektir. Bu yetenek, operatörlere anlık proses verilerini doğrudan CNC ekranında izleme, makine durumunu kontrol etme ve hatta belirli otomasyon senaryolarını tetikleme imkanı sunar. Örneğin, bir sıcaklık sensöründen okunan değeri bir DRO’da göstererek aşırı ısınma durumunda makineyi durdurma veya bir basınç değerini izleyerek pompa devrini ayarlama gibi uygulamalar bu entegrasyon sayesinde mümkün hale gelir.

Çalışma Prensibi ve Teknik Veriler

Bu entegrasyonun temelinde, Mach4’ün dahili Modbus Master yetenekleri ve Lua API’si yatar. Çalışma prensibi birkaç adımdan oluşur:

  1. Modbus İletişiminin Kurulması: İlk olarak, Mach4’ün Modbus Master olarak harici Modbus Slave cihazıyla (örneğin bir PLC) iletişim kurması gerekir. Bu, Modbus RTU (seri port üzerinden RS-232/RS-485) veya Modbus TCP (Ethernet üzerinden) olabilir. Mach4’ün Lua API’sinde bu bağlantıyı kurmak için özel fonksiyonlar bulunur.
  2. Register Adreslerinin Belirlenmesi: Modbus cihazının hangi register’larında hangi verilerin tutulduğu (Holding Registers, Input Registers, Coils, Discrete Inputs) ve bu register’ların adresleri (offset’leri) bilinmelidir. Bu bilgiler genellikle Modbus cihazının teknik dokümantasyonunda yer alır.
  3. Lua Scripti ile Veri Okuma: Mach4 içerisinde oluşturulan bir Lua scripti, belirlenen Modbus register adreslerinden periyodik olarak veri okur. Bu okuma işlemi için Mach4’ün Modbus API fonksiyonları kullanılır (örn. mc.mcModbusReadHoldingRegisters).
  4. Verilerin İşlenmesi ve Dönüştürülmesi: Modbus üzerinden okunan veriler genellikle ham formatta (örn. 16-bit tamsayı) gelir. Bu verilerin gerçek fiziksel değerlere (örn. sıcaklık, basınç) dönüştürülmesi için ölçeklendirme, ofset uygulama veya bit manipülasyonu gibi işlemler gerekebilir. Örneğin, 0-10V analog girişten okunan 0-4095 arası bir değerin 0-100 aralığına dönüştürülmesi.
  5. DRO’ların Tanımlanması ve Güncellenmesi: Mach4’ün Screen Designer aracı kullanılarak özel DRO’lar (Digital Readouts) oluşturulur. Bu DRO’lara benzersiz ID’ler atanır. Lua scripti, işlenmiş veriyi bu özel DRO’ların ID’lerini kullanarak günceller (örn. mc.mcCntlSetDro). Bu sayede, harici cihazdan gelen veriler anlık olarak Mach4 ekranında gösterilir.
  6. Periyodik Çalışma: Bu Lua scripti, Mach4’ün “Timer Script” özelliği veya “Screen Load” olayları gibi çeşitli yöntemlerle periyodik olarak veya belirli olaylar tetiklendiğinde çalışacak şekilde yapılandırılır.
Parametre Değer/Açıklama
Modbus Protokolü Seçenekleri Modbus RTU (RS-232/RS-485), Modbus TCP (Ethernet)
Lua Modbus Fonksiyonları (Örnek) mc.mcModbusOpen(port, baudrate, parity, stopbits, address) (RTU için)
mc.mcModbusOpen(ip_address, port) (TCP için)
mc.mcModbusReadHoldingRegisters(id, start_address, count)
mc.mcModbusReadInputRegisters(id, start_address, count)
mc.mcModbusClose(id)
Mach4 DRO ID Aralığı Kullanıcı tanımlı DRO’lar için genellikle belirli bir aralık (örn. 10000 ve üzeri) kullanılır. Screen Designer’da atanır.
Veri Tipi Dönüşümü 16-bit integer, 32-bit float (IEEE 754), BCD, bit manipülasyonu. Lua’da özel fonksiyonlar veya aritmetik işlemlerle yapılır.
Script Tetikleme Yöntemleri Mach4 Timer Script (periyodik), Screen Load Script (ekran yüklendiğinde), Button Script (düğmeye basıldığında).
Gerekli Mach4 Bileşenleri Mach4 Core, Modbus Plugin (genellikle dahili), Screen Designer, Lua Script Editor.
Sistem Gereksinimleri Windows işletim sistemi, uygun seri port adaptörü (RTU için) veya Ethernet bağlantısı (TCP için).

Sahada Dikkat Edilmesi Gerekenler

  • Modbus Adresleme ve Veri Tipleri: En sık yapılan hatalardan biri, Modbus register adreslerinin ve veri tiplerinin yanlış belirlenmesidir. Her Modbus cihazının kendi adres haritası vardır. Holding register’lar (genellikle 4xxxx serisi) ve Input register’lar (genellikle 3xxxx serisi) farklıdır. Ayrıca, verinin 16-bit integer mı, 32-bit float mı (endianness’e dikkat!) yoksa başka bir formatta mı geldiği kritik öneme sahiptir. Cihaz dokümantasyonunu dikkatlice incelemek şarttır. Yanlış adres veya tip, anlamsız verilerle sonuçlanacaktır.
  • İletişim Hızı ve Periyodik Okuma Sıklığı: Modbus RTU’da baud rate (örn. 9600, 19200) ve Modbus TCP’de IP adresi/port numarası doğru ayarlanmalıdır. Ayrıca, Lua scripti içerisinde register’ları okuma sıklığı (timer aralığı) önemlidir. Çok sık okuma yapmak (örn. her 10 ms’de bir), hem Modbus ağına hem de Mach4’ün işlemci yüküne gereksiz yük bindirebilir, bu da Mach4’ün temel kontrol fonksiyonlarında gecikmelere veya takılmalara yol açabilir. Genellikle saniyenin bir kaç yüz milisaniyesi veya saniye cinsinden okuma aralıkları yeterlidir.
  • Hata Yönetimi ve Bağlantı Kontrolü: Modbus iletişimi her zaman stabil olmayabilir. Kablo kopması, cihazın kapanması veya network sorunları gibi durumlarda iletişim kesilebilir. Lua scriptinizde bu tür durumları ele alacak hata yakalama mekanizmaları (try-catch benzeri yapılar veya dönüş değerlerini kontrol etme) bulunmalıdır. Bağlantı koptuğunda DRO’ları sıfırlamak veya bir uyarı mesajı göstermek kullanıcı deneyimi açısından önemlidir.
  • Kablo Kalitesi ve Terminasyon (Modbus RTU için): RS-485 tabanlı Modbus RTU sistemlerinde, kablo kalitesi, doğru kablolama (A-A, B-B), blendajlama ve özellikle uzun mesafelerde terminasyon dirençleri (genellikle 120 ohm) kritik öneme sahiptir. Yanlış kablolama veya terminasyon, kararsız iletişime, veri bozulmalarına veya hiç iletişimin kurulamamasına neden olabilir.
  • Network Yapılandırması (Modbus TCP için): Modbus TCP kullanılıyorsa, Mach4’ün çalıştığı bilgisayar ile Modbus Slave cihazının aynı ağda olduğundan, IP adreslerinin çakışmadığından, alt ağ maskelerinin doğru olduğundan ve güvenlik duvarlarının (firewall) Modbus portuna (genellikle 502) izin verdiğinden emin olunmalıdır.
  • Mach4 Sürümü ve Plugin Uyumluluğu: Mach4’ün kullandığınız sürümünün Modbus fonksiyonlarını tam olarak desteklediğinden ve ilgili Modbus plugin’inin etkin olduğundan emin olun. Zaman zaman, Mach4 güncellemeleri veya özel sürümler, belirli API fonksiyonlarının davranışını değiştirebilir.
  • Lua Script Optimizasyonu ve Modüler Yapı: Karmaşık veya çok sayıda register okuyan scriptler yazarken, kodu modüler tutmak, yorum satırları eklemek ve gereksiz döngülerden kaçınmak önemlidir. Tek bir büyük script yerine, farklı görevler için küçük, yönetilebilir fonksiyonlar oluşturmak hata ayıklamayı kolaylaştırır ve performansı artırır.

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

Bu tür entegrasyonlarda karşılaşılan yaygın sorunlar ve bunlara yönelik çözümler aşağıdadır:

  1. Sorun: Modbus Bağlantısı Kurulamıyor veya Zaman Aşımı Hatası Alınıyor.
    • Çözüm (Modbus RTU): Seri port numarasını (COM1, COM2 vb.), baud rate’i, parity ayarını ve stop bitlerini kontrol edin. Kablolamayı (RS-485 A-A, B-B bağlantıları) ve terminasyon dirençlerini doğrulayın. Modbus Slave cihazının adresini ve açık olup olmadığını kontrol edin. Başka bir uygulamanın (örn. seri port monitörü) portu kullanıp kullanmadığını kontrol edin.
    • Çözüm (Modbus TCP): IP adresini ve port numarasını (genellikle 502) doğrulayın. Bilgisayar ile Modbus cihazının aynı ağda olduğundan ve güvenlik duvarının iletişimi engellemediğinden emin olun. Modbus Slave cihazının network ayarlarını ve açık olup olmadığını kontrol edin. Ping komutu ile cihaza erişilebilirliği test edin.
  2. Sorun: DRO’larda Yanlış veya Anlamsız Değerler Görünüyor.
    • Çözüm: Modbus register adreslerini (Holding/Input ayrımı), veri tiplerini (16-bit integer, 32-bit float) ve endianness’i (byte sırası) Modbus cihazının dokümantasyonuna göre tekrar kontrol edin. Lua scriptindeki veri ölçeklendirme, ofset veya bit manipülasyonu işlemlerini gözden geçirin. Bazen, cihazlar Signed/Unsigned integer ayrımı yapar; buna dikkat edin.
  3. Sorun: DRO’lar Güncellenmiyor veya Çok Yavaş Güncelleniyor.
    • Çözüm: Lua scriptinin Mach4 tarafından doğru şekilde tetiklenip tetiklenmediğini kontrol edin (Timer Script’in etkinliği, Screen Load scriptinin doğru yere yerleştirilmesi). Timer aralığını (mc.mcCntlSetTimer) kontrol edin, çok uzun bir aralık gecikmeye neden olabilir. Script içinde bir hata olup olmadığını Mach4’ün Lua hata konsolundan kontrol edin. DRO ID’sinin doğru olduğundan ve Screen Designer’da bu ID’ye sahip bir DRO’nun var olduğundan emin olun.
  4. Sorun: Mach4 Performansı Düşüyor veya Donuyor.
    • Çözüm: Modbus okuma sıklığını azaltın. Çok sık okuma yapmak (örn. her 10 ms’de bir), CPU yükünü artırabilir. Scriptinizi optimize edin; gereksiz hesaplamalardan veya döngülerden kaçının. Sadece ihtiyacınız olan register’ları okuyun ve tek seferde birden fazla register okumak yerine, tek bir okuma işlemiyle blok halinde okumayı tercih edin (count parametresi).
  5. Sorun: Lua Script Hatası (Syntax Error, Runtime Error).
    • Çözüm: Mach4’ün Lua hata konsolunu (Debug/Scripting menüsünde bulunur) açarak hatanın tam yerini ve açıklamasını görün. Tipik hatalar, değişken tanımlama hataları, fonksiyon isimlerinin yanlış yazılması veya nil değerlerle işlem yapmaya çalışmaktır. Kodunuzu adım adım kontrol edin veya küçük parçalar halinde test edin.

Uzman Tavsiyesi

Mach4’te Lua scripting ile Modbus register okuyup bu verileri DRO olarak göstermek, CNC kontrol sisteminize yepyeni bir boyut kazandıran, son derece güçlü ve esnek bir entegrasyon yöntemidir. Bu yetenek, operatörlerin üretim süreçlerini daha yakından izlemesine, makine sağlığı hakkında kritik bilgilere anında erişmesine ve otomasyon senaryolarını zenginleştirmesine olanak tanır. Bir endüstriyel otomasyon uzmanı olarak, bu tür sistem entegrasyonlarında başarıya ulaşmak için birkaç temel tavsiyede bulunabilirim.

Öncelikle, planlama ve dokümantasyon sürecin en kritik adımıdır. Hangi Modbus cihazından hangi verileri okuyacağınızı, bu verilerin hangi register adreslerinde bulunduğunu, veri tiplerini ve Mach4’te hangi DRO’larda gösterileceğini detaylı bir şekilde belgeleyin. Bu, hem geliştirme aşamasında hem de gelecekteki bakım ve hata ayıklama süreçlerinde zaman kazandıracaktır. Modbus cihazının kılavuzunu elinizin altında bulundurmak, doğru adresleme ve veri yorumlama için hayati öneme sahiptir.

İkinci olarak, modüler ve temiz kod yazmaya özen gösterin. Lua scriptlerinizi küçük, okunabilir fonksiyonlara ayırın. Her fonksiyonun belirli bir görevi olsun (örn. Modbus bağlantısını açma, belirli bir register bloğunu okuma, veriyi işleme, DRO’yu güncelleme). Bolca yorum satırı ekleyerek kodunuzun ne yaptığını açıklayın. Bu, hem sizin hem de gelecekte bu kodla çalışacak diğer kişilerin işini kolaylaştıracaktır. Kodu test ederken, her bir modülü ayrı ayrı çalıştırma imkanı sunar.

Üçüncü olarak, hata yönetimi ve güvenlik asla göz ardı edilmemelidir. Modbus iletişimi, endüstriyel ortamlarda çeşitli nedenlerle kesintiye uğrayabilir. Scriptlerinizde bu durumları ele alacak mekanizmalar (örn. bağlantı hatası durumunda DRO’ları güvenli bir değere ayarlama, kullanıcıya uyarı verme) mutlaka bulunmalıdır. Ayrıca, Modbus cihazlarınıza yetkisiz erişimi engellemek için gerekli ağ güvenlik önlemlerini (Modbus TCP için firewall kuralları, Modbus RTU için fiziksel erişim kontrolü) alın.

Son olarak, performans optimizasyonu her zaman akılda tutulmalıdır. Mach4 bir CNC kontrol yazılımıdır ve gerçek zamanlı hareket kontrolü en yüksek önceliğe sahiptir. Modbus okuma işlemlerinin bu temel fonksiyonu aksatmaması için okuma sıklığını optimize edin ve sadece gerçekten ihtiyacınız olan verileri okuyun. Gereksiz veya çok sık yapılan Modbus sorguları Mach4’ün genel performansını olumsuz etkileyebilir. Başlangıçta daha uzun bir okuma aralığıyla başlayıp, ihtiyaç duyuldukça kademeli olarak düşürmek iyi bir yaklaşımdır.

Bu adımları izleyerek ve yukarıda belirtilen teknik detaylara dikkat ederek, Mach4 tabanlı CNC sistemlerinizle Modbus cihazları arasında güvenilir ve verimli bir veri köprüsü kurabilir, operasyonel görünürlüğü artırabilir ve üretim süreçlerinizi daha akıllı hale getirebilirsiniz. Unutmayın, her proje kendine özgü zorluklar barındırır; sabır, detaylara dikkat ve sürekli öğrenme bu alandaki başarının anahtarlarıdır.