CODESYS TEKNİK FORUM

Modbus Haberleşme Nasıl Yapılır? PLC Bağlantısı ve Uygulama Örnekleri

Konu detayları, medya içerikleri ve yanıtlar

  • Bu konu boş.
1 yazı görüntüleniyor (toplam 1)
  • Yazar
    Yazılar
  • #330
    İlhan
    Anahtar yönetici

    Modbus Haberleşme Nasıl Yapılır? PLC Bağlantısı ve Uygulama Örnekleri

    Modbus haberleşme, PLC, HMI, frekans inverteri, enerji analizörü ve uzak I/O gibi endüstriyel cihazlar arasında veri okumak ve gerektiğinde veri yazmak için kullanılan yaygın bir iletişim yöntemidir. Ancak haberleşmeyi çalıştırmak için yalnızca kabloyu bağlamak yeterli değildir. Cihazın desteklediği protokol, bağlantı ayarları, cihaz adresi, fonksiyon kodu ve register tablosu doğru seçilmelidir.

    Bu uygulama rehberinde PLC ile Modbus haberleşme nasıl yapılır? sorusuna cevap veriyoruz. Önce bir cihazdan güvenli şekilde register okuyor, sonra Modbus RTU ve TCP bağlantı adımlarını inceliyor, en sık karşılaşılan arızaları sistematik biçimde teşhis ediyoruz. Aşağıdaki register adresleri gerçek bir sürücüye değil, eğitim amaçlı temsili bir cihaza aittir.

    Modbus haberleşme için PLC, frekans inverteri ve enerji analizörü bağlantısı ile RTU TCP register okuma yazma örneği

    Modbus Haberleşme İçin Hangi Bilgiler Gereklidir?

    Modbus haberleşme kurulumuna geçmeden önce cihazın kullanım kılavuzundaki communication parameters ve Modbus register map bölümlerini açın. Aynı marka ve seride bile model veya firmware sürümü nedeniyle adresler ve desteklenen fonksiyonlar farklı olabilir.

    • Protokol: Modbus RTU mu, Modbus TCP mi? Fiziksel haberleşme portu hangisi?
    • Rol: İsteği başlatacak master/client kim? Yanıt veren slave/server kim?
    • Bağlantı: RTU için RS485 kablo ve polarite bilgisi; TCP için IP adresi, ağ maskesi ve port.
    • Cihaz adresi: RTU için Slave ID; TCP üzerinden gateway kullanılıyorsa gerekebilecek Unit ID.
    • Register haritası: Okunacak değişkenin adresi, 0/1 tabanlı gösterimi, veri türü ve ölçekleme katsayısı.
    • Fonksiyon kodu: Holding register için FC03, input register için FC04 gibi cihazın desteklediği doğru işlem.

    Master/Slave ve Client/Server Seçimi

    Seri Modbus RTU uygulamalarında geleneksel adlandırma master/slave, Modbus TCP tarafında ise client/server şeklindedir. Bu yazıda örnek PLC, isteği gönderen cihaz olarak kullanılacaktır. Fakat her PLC’nin otomatik olarak her rolü desteklediği varsayılmamalıdır; cihazın programlama kütüphanesi ve haberleşme sürücüsü kontrol edilmelidir.

    PLC ile Modbus Haberleşme Nasıl Yapılır? Adım Adım

    1. Cihazları tanımlayın: PLC ve haberleşilecek sürücü veya analizörün tam model ve firmware bilgilerini not edin.
    2. Fiziksel iletişimi kurun: RTU kullanıyorsanız RS485 bağlantısını üretici şemasına göre yapın; TCP kullanıyorsanız cihazları uygun endüstriyel ağa bağlayın.
    3. Parametreleri eşleştirin: Seri bağlantıda baud rate, parity, stop bit ve Slave ID; Ethernet bağlantısında IP, port ve gerekirse Unit ID değerlerini belirleyin.
    4. İlk test için bir okuma register’ı seçin: Mümkünse makineyi etkilemeyen, yalnızca okunabilir bir ölçüm değerini tercih edin.
    5. Doğru fonksiyon kodunu kullanın: Holding register için genellikle FC03, input register için FC04 gerekir; asıl kaynak cihaz kılavuzudur.
    6. Veriyi yorumlayın: Ham değeri veri türü, word sırası ve çarpan/bölen bilgisine göre mühendislik birimine çevirin.
    7. Hata kayıtlarını inceleyin: Timeout ve exception yanıtlarını birbirinden ayırın; önceki adımları kontrol edin.

    Güvenlik: İlk testleri eğitim setinde, simülatörde veya üretimden ayrılmış bir deneme düzeneğinde yapın. Çalışan bir makinede yazma komutları motorun beklenmedik hareket etmesine yol açabilir. Gerçek ekipmana parametre ya da çalıştırma komutu göndermeden önce yetkili personel tarafından risk değerlendirmesi yapılmalıdır.

    Modbus Register Okuma Örneği: FC03 ile Veri Alma

    Uygulama mantığını netleştirmek için temsili bir server/slave cihazımızın holding register haritasını şöyle düşünelim. Bu adresler herhangi bir ticari inverterin gerçek register listesi değildir.

    Doküman adresi Örnek değişken Ham değer
    40001 Frekans geri bildirimi 500
    40002 Durum kodu 0
    40003 Simülasyon set değeri 300

    Varsayalım ki frekansın çözünürlüğü 0,1 Hz olsun. PLC, 40001 referansındaki değeri okuduğunda 500 sonucunu alır; ölçekleme yapınca 50,0 Hz görür. Aynı register 0,01 Hz çözünürlükle tanımlansaydı sonuç değişirdi. Bu nedenle ölçekleme, mutlaka cihaz dokümanına göre uygulanmalıdır.

    FC03 İstek Bilgileri Nasıl Girilir?

    • Fonksiyon kodu: 03 – Read Holding Registers
    • Başlangıç adresi: İlk holding register için birçok sıfır tabanlı client programında 0
    • Register adedi: Örneğin frekans ve durum kodunu birlikte okumak için 2
    • RTU hedefi: İlgili Slave ID; TCP hedefi: server IP adresi ve port

    40001 ile 0 aynı giriş biçimi değildir: 40001 yaygın doküman referans gösterimidir; Modbus PDU adresi sıfır tabanlıdır. Kullanılan yazılım bazı alanlarda 40001, bazı alanlarda ise 0 ister. Yazılımın adresleme seçeneği kontrol edilmeden rastgele 40001 girilmemelidir.

    16 Bit ve 32 Bit Veri Nasıl Okunur?

    Modbus register’ları 16 bitliktir. FLOAT veya 32 bit INTEGER değerleri çoğu zaman iki register içinde taşınır. Bu nedenle verinin signed/unsigned türünü, register sayısını ve word order sırasını doğru seçin. İki register’lık bir değeri yalnızca bir register gibi okumak veya yanlış kelime sırasıyla birleştirmek hatalı sonuç üretir.

    Modbus Register Yazma Örneği: FC06 ve FC16

    FC06 tek bir holding register’a, FC16 ise birden fazla holding register’a yazma işlemi için kullanılır. Ancak hedef cihazın bu fonksiyonları ve ilgili adresin yazılmasını desteklemesi gerekir.

    Örneğin yalnızca simülatördeki 40003 referanslı eğitim register’ına 300 değeri yazıldığını düşünelim. Bu değerin anlamı, simülatör için hazırlanan register tablosuna göre belirlenir. Gerçek sürücüde 40003 adresinin hız referansı veya güvenli bir yazma alanı olduğu varsayılamaz.

    • Önce hedef cihazın yazılabilir register listesini ve izin verilen aralığı okuyun.
    • Yazmadan önceki ve sonraki değeri kaydedin; varsa cihazın yazma izni veya erişim seviyesi gerekliliğini kontrol edin.
    • Çalışma komutu, hız referansı, reset veya emniyetle ilişkili parametrelere yetkisiz/planlanmamış yazma yapmayın.

    Modbus RTU Haberleşme Kurulumu: PLC ve Sürücü

    Modbus RTU bağlantısında RS485 haberleşme portunun varlığı, kendi başına Modbus RTU desteği bulunduğunu kanıtlamaz. PLC ve sürücü kılavuzunda protokol ve rol desteğini doğrulayın.

    RTU Bağlantı Kontrol Listesi

    • RS485 A/B veya D+/D− uçlarını cihaz şemasındaki polarite açıklamasına göre eşleştirin; harf adlandırmaları üreticiler arasında farklı olabilir.
    • Hat topolojisini ve gerekiyorsa yalnızca hat uçlarında uygun sonlandırmayı üreticinin tarif ettiği şekilde düzenleyin.
    • Örnek haberleşme ayarı olarak 9600 baud, 8E1 kullanılabilir; ancak bu zorunlu standart ayar değildir. Bütün cihazlarda aynı parametreler seçilmelidir.
    • Örnek olarak sürücüye Slave ID 1 verin. Aynı hatta başka slave varsa benzersiz bir adres kullanın.
    • PLC veya test programından önce güvenli bir FC03/FC04 okuma sorgusu gönderin ve yanıt süresini izleyin.

    RTU cihaz adresleri genellikle 1–247 aralığındadır. Sıfır adresi broadcast için ayrılmıştır ve normal bir bireysel yanıt beklemek amacıyla kullanılmaz. Hattın elektriksel referansı, ekranlama ve izolasyon tasarımı için cihazın kablolama kılavuzu esas alınmalıdır.

    Modbus TCP Haberleşme Kurulumu: PLC ve Enerji Analizörü

    Modbus TCP haberleşme kurulumunda iki cihazın IP ağı üzerinden birbirine erişebildiğinden emin olun. Varsayılan Modbus TCP portu 502‘dir; cihaz ve ağ politikası farklı bir ayar gerektirebilir.

    TCP Bağlantı Kontrol Listesi

    • PLC/client ve analizör/server için IP adreslerini ve alt ağ yapılandırmasını kontrol edin.
    • Server üzerinde Modbus TCP özelliğinin etkin ve ilgili portun erişilebilir olduğundan emin olun.
    • Client tarafında server IP adresini, TCP portunu ve gerekiyorsa Unit ID değerini girin.
    • Önce FC03 veya FC04 ile tek bir ölçüm register’ını okumayı deneyin.
    • TCP bağlantısı kurulsa bile register adresi, veri türü veya fonksiyon kodu yanlışsa istediğiniz veriyi alamayacağınızı unutmayın.

    Modbus TCP’de doğrudan IP adresiyle erişilen server için Unit ID çoğu zaman yönlendirme amacı taşımaz; ancak TCP–RTU gateway kullanılıyorsa Unit ID, gateway arkasındaki seri cihazın adresini belirtmek için önemli olabilir. Davranış kullanılan gateway ve server modeline göre kontrol edilmelidir.

    PLC Olmadan Modbus Haberleşme Testi Yapılabilir mi?

    Evet. Gerçek PLC olmadan da bir Modbus client programı ile bir server simülatörü arasında iletişim mantığını deneyebilirsiniz. Bu çalışma özellikle register adresleme, fonksiyon kodları ve veri tiplerini öğrenmek için yararlıdır.

    Modbus Poll ve Server Simülatörü ile Test

    1. İzole bir test bilgisayarında veya eğitim ağında Modbus client test yazılımını ve bir Modbus server simülatörünü açın.
    2. Modbus TCP kullanıyorsanız simülatöre yerel/test IP adresi ve uygun port tanımlayın.
    3. Simülatörde ilk holding register için örnek bir değer oluşturun.
    4. Client üzerinden FC03 ile bir register okuyun; doğru yanıtı gördükten sonra ikinci register’a geçin.
    5. Gerçek bir PLC’ye geçtiğinizde aynı isteğin cihaz kütüphanesi veya Modbus sürücüsü üzerinden nasıl oluşturulduğunu karşılaştırın.

    Modbus Poll, RTU/TCP bağlantı ve register okuma-yazma özellikleri sunan test yazılımlarından biridir. Ürün özellikleri ve lisans koşulları değişebileceği için güncel sayfasını kontrol edin. Bir portun bağlantı kabul etmesi, hedef cihazın tüm register’larının doğru olduğu anlamına gelmez.

    Modbus Haberleşme Hataları Nasıl Bulunur?

    1. Timeout: Hiç Yanıt Gelmiyor

    Önce bağlantı türünü doğrulayın. RTU için COM portu, baud/parity, Slave ID, kablo polaritesi ve hat sonlandırmasına; TCP için IP, TCP portu, ağ erişimi ve server servisinin açık olmasına bakın. Timeout, tek başına yanlış register adresi anlamına gelmez.

    2. Illegal Function (Exception 01)

    Hedef server istenen fonksiyon kodunu desteklemiyor veya mevcut durumunda işlemi kabul etmiyor olabilir. FC03 yerine cihaz dokümanında FC04 gerekiyorsa doğru komutu seçin.

    3. Illegal Data Address (Exception 02)

    Başlangıç adresi veya istenen register aralığı hedef cihaz için geçerli olmayabilir. 40001/0 tabanlı adres gösterimini, register sayısını ve cihazın gerçek haritasını karşılaştırın.

    4. Yanıt Var Ama Değer Yanlış

    Ham değerin signed/unsigned oluşu, ölçekleme, 16/32 bit uzunluk, word/byte sırası ve ölçümün gerçek fiziksel birimi kontrol edilmelidir. Örneğin ham 500 değeri, ölçeğe bağlı olarak 50,0 veya 5,00 gösterebilir.

    5. Haberleşme Aralıklı Kesiliyor

    RTU hattında yansıma, parazit, yanlış sonlandırma, ortak referans veya aşırı sorgu sıklığı; TCP ağında bağlantı zaman aşımı, ağ yoğunluğu veya server kapasitesi etkili olabilir. Hata sayacı ve zaman damgalarıyla sistematik kayıt tutun.

    Modbus Haberleşme İçin Örnek Uygulamalar

    • PLC – Frekans inverteri: Sürücünün çalışma durumu, frekansı ve arıza kodlarının okunması. Yazma komutları yalnızca kontrol prosedürleri doğrulandığında kullanılmalıdır.
    • PLC – Enerji analizörü: Gerilim, akım, güç ve enerji değerlerinin düzenli aralıklarla izlenmesi ve operatör ekranında gösterilmesi.
    • HMI – PLC: Uygun Modbus server özelliği olan PLC’nin register veya coil verilerinin HMI’da gösterilmesi.
    • Bilgisayar – Uzak I/O: Test yazılımıyla giriş durumlarının okunması ve yalnızca test amacıyla ayrılmış çıkışların uygun prosedürlerle denenmesi.

    Codesys tabanlı örnek görmek isterseniz Codesys Modbus RTU Register Okuma ve Yazma Testi konusunu inceleyebilirsiniz. PLC kavramına yeniyseniz PLC Nedir? Ne İşe Yarar ve Nasıl Çalışır? rehberi de yararlı olacaktır.

    Modbus Haberleşme Hakkında Sık Sorulan Sorular

    Modbus haberleşme nasıl yapılır?

    Önce cihazların desteklediği Modbus türünü ve rollerini seçin. Ardından RTU için seri port, TCP için IP/port ayarlarını eşleştirin; cihazın register tablosundaki adresi doğru fonksiyon koduyla okuyun ve sonucu ölçekleyin.

    RS485 kablosu takınca Modbus otomatik çalışır mı?

    Hayır. RS485 fiziksel arayüzdür. Cihazların Modbus RTU protokolünü, aynı seri parametreleri ve doğru Slave ID ayarını desteklemesi gerekir.

    Modbus TCP’de 502 portu açık ama veri gelmiyor; neden?

    Yanlış register adresi, fonksiyon kodu, Unit ID/gateway ayarı, erişim izni veya server tarafı protokol desteği sorunu olabilir. TCP bağlantısını kurmak ile doğru Modbus verisini okumak farklı aşamalardır.

    Modbus haberleşmesinde 40001 adresine hangi değer yazılır?

    40001 yaygın bir holding register referans gösterimidir; ne içerdiği, hangi değerleri kabul ettiği ve yazılabilir olup olmadığı cihazın kendi register tablosuna bağlıdır. Gerçek donanımda belgesiz yazma işlemi yapmayın.

    Sonuç: Modbus Haberleşme Kurmadan Önce Kontrol Edilecekler

    Modbus haberleşme uygulamasında başarılı sonuca ulaşmak için kablo, haberleşme parametresi, fonksiyon kodu, adres ve veri türünü ayrı ayrı doğrulayın. İlk çalışmayı mutlaka okuma ağırlıklı ve güvenli bir test düzeneğinde yapın. Ardından hata sayaçlarını takip ederek sistemi gerçek donanıma uyarlayın.

    Bu rehber uygulamalı bağlantı ve arıza giderme adımlarına odaklanır. Modbus’un temel mantığını öğrenmek için yayımladığımız Modbus Nedir? yazısına, seri hat ayrıntıları için Modbus RTU Nedir? rehberine de göz atabilirsiniz. Bu iki konunun gerçek URL’leri doğrulandığında aralarına karşılıklı bağlantı ekleyebilirsiniz.

    Kaynak: Modbus Organization – Resmî protokol belgeleri.

    Siz hangi PLC veya cihazla haberleşme kuruyorsunuz? Sorunuzda marka/model, RTU/TCP türü, bağlantı ayarları, fonksiyon kodu, register adresi ve hata mesajını paylaşırsanız daha net teknik değerlendirme yapılabilir.

1 yazı görüntüleniyor (toplam 1)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.