CODESYS TEKNİK FORUM

Modbus Nedir? Modbus RTU, TCP ve RS485 Haberleşme Rehberi

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

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

    Modbus Nedir? Modbus RTU, TCP ve RS485 Haberleşme Rehberi

    Modbus nedir? Modbus; PLC, HMI, frekans inverteri, enerji analizörü, sıcaklık kontrol cihazı ve uzak giriş-çıkış (I/O) modülleri gibi endüstriyel cihazların birbiriyle veri alışverişi yapmasını sağlayan haberleşme protokolüdür. Bir cihazın tuttuğu dijital durumlar veya sayısal veriler, başka bir cihaz tarafından standart komutlarla okunabilir ve uygun izin varsa yazılabilir.
    Modbus nedir? PLC, HMI ve sürücü arasında Modbus RTU RS485 ve Modbus TCP Ethernet haberleşmesini gösteren şema

    Modbus ilk olarak 1979 yılında Modicon tarafından geliştirilmiştir. Bugün seri hat üzerinde Modbus RTU, Ethernet ağı üzerinde ise Modbus TCP yaygın kullanılır. Bu rehberde çalışma mantığını, RTU ve TCP farklarını, RS485 bağlantısının rolünü, register adreslerini ve bir PLC ile haberleşmeye başlamanın temel adımlarını açıklıyoruz.

    Modbus Nedir ve Haberleşme Protokolü Nasıl Çalışır?

    Modbus, temel olarak istek–yanıt (request–response) mantığıyla çalışır. İsteği başlatan cihaz, karşı tarafa belirli bir adres ve işlem koduyla başvurur. Karşı cihaz isteği destekliyorsa istenen veriyi veya işlemin sonucunu yanıt olarak döndürür.

    Örneğin PLC, sürücünün anlık çıkış frekansını okumak istediğinde sürücünün dokümanında belirtilen register adresine okuma isteği gönderir. Sürücü de o adreste sakladığı veriyi yanıtlar. Veriyi anlamlandırmak için register adresinin yanında veri tipi ve ölçekleme bilgisi de gerekir.

    Master/Slave ve Client/Server Ne Anlama Gelir?

    Seri haberleşme uygulamalarında geleneksel olarak Master (istek gönderen) ve Slave (isteğe yanıt veren) terimleri kullanılır. Modern Modbus belgelerinde Client ve Server terimlerine de rastlanır; Modbus TCP’de yaygın kullanım bu şekildedir. Modbus RTU’da genellikle bir master, aynı seri hat üzerindeki adreslenmiş cihazlarla sırayla haberleşir.

    Modbus TCP’de bir PLC client, bir enerji analizörü server olabilir. Bir cihazın rolü modeline, firmware’ine ve yapılandırmasına göre değişebilir; her PLC her iki rolü de desteklemek zorunda değildir.

    Modbus nedir sorusunun yanıtı, belirli bir kablo veya portla sınırlı değildir. Protokol aynı temel okuma-yazma kurallarını farklı iletişim altyapıları üzerinde kullanabilir.

    Modbus RTU Nedir?

    Modbus RTU, Modbus mesajlarının seri iletişim hattı üzerinden ikili (binary) biçimde taşındığı haberleşme yöntemidir. Endüstride sıklıkla RS485 fiziksel arayüzüyle kullanılır. RTU çerçevesi cihaz adresi, fonksiyon kodu, veri alanı ve hata denetimi için CRC içerir.

    Haberleşmenin çalışabilmesi için cihazların baud rate, parity ve stop bit ayarlarının uyumlu olması; her yanıt veren cihaz için uygun bir Slave ID tanımlanması gerekir. Veri iletim hızını artırmak her zaman en güvenilir sonucu vermez; kablo uzunluğu, parazit ve cihazların desteklediği haberleşme ayarları birlikte değerlendirilmelidir.

    Modbus ile RS485 Arasındaki Fark Nedir?

    En çok karıştırılan konulardan biri budur: RS485 bir elektriksel fiziksel katman standardıdır; Modbus ise veri alışverişinin kurallarını tanımlayan protokoldür. RS485 kablosu üzerinden Modbus RTU kullanılabilir, ancak RS485 kullanan her sistem Modbus konuşmaz. Benzer şekilde Modbus TCP, RS485 yerine Ethernet/TCP/IP üzerinden çalışır.

    RS485 uygulamasında A/B hat isimleri üreticiler arasında farklı gösterilebildiğinden bağlantı mutlaka cihazların klemens ve polarite açıklamalarına göre yapılmalıdır. Hat topolojisi, uygun sonlandırma ve ortak referanslama da fiziksel haberleşme kalitesini etkiler.

    Modbus TCP Nedir?

    Modbus TCP, Modbus komutlarının TCP/IP ağı üzerinden iletilmesidir. PLC, HMI, SCADA veya ölçüm cihazları Ethernet altyapısı üzerinden haberleşebilir. Yaygın varsayılan Modbus TCP portu 502‘dir; yine de cihaz ayarları ve ağ güvenliği politikası kontrol edilmelidir.

    Modbus TCP mesajlarında işlem kimliği gibi alanları taşıyan MBAP başlığı bulunur. Seri RTU çerçevesindeki CRC alanı, Modbus TCP uygulama mesajında kullanılmaz. Bir RTU cihazıyla TCP cihazını bağlamak için bazı sistemlerde Modbus TCP–RTU gateway gerekir.

    Modbus RTU ve Modbus TCP Karşılaştırması

    Özellik Modbus RTU Modbus TCP
    Yaygın altyapı Seri hat, çoğunlukla RS485 Ethernet / TCP/IP
    Cihaz tanımlama Slave ID / cihaz adresi IP adresi ve TCP portu; bazı yapılarda Unit ID
    Temel parametreler Baud rate, parity, stop bit, ID IP, ağ erişimi, TCP portu
    Çerçeve kontrolü RTU CRC TCP/IP mekanizmaları; Modbus RTU CRC’si yok
    Yaygın kullanım Sürücü, sayaç, seri bağlı saha cihazları PLC, HMI, SCADA ve Ethernet cihazları

    İki yöntem de aynı temel Modbus veri modelini ve birçok ortak fonksiyon kodunu kullanır. Hangisinin uygun olduğu, cihazın desteklediği arayüze ve tesisin haberleşme altyapısına bağlıdır.

    Modbus Register Nedir? Veri Türleri Nelerdir?

    Bir cihazdan veri okumak veya cihaza komut yazmak için üreticinin hazırladığı Modbus register tablosuna (register map) bakılır. Modbus veri modeli dört temel veri alanı tanımlar:

    • Coils: Tek bitlik, uygun cihazlarda okunup yazılabilen durumlar veya komut bitleri.
    • Discrete Inputs: Tek bitlik, yalnızca okunabilen giriş/durum verileri.
    • Input Registers: Genellikle ölçüm verileri için kullanılan, yalnızca okunabilen 16 bitlik alanlar.
    • Holding Registers: 16 bitlik register alanlarıdır. Cihazın desteklediği komutlara göre okunabilir veya yazılabilir.

    Önemli: Bir register’ın gerçekten yazılabilir olup olmadığı, protokol ailesi kadar cihazın kendi yazılımına ve izinlerine de bağlıdır. Her holding register’ın yazılabileceği varsayılmamalıdır.

    40001 ve 0 Tabanlı Adresleme Neden Karışıyor?

    Üretici kılavuzlarında 40001 gibi gösterilen ilk holding register, bazı yazılımlarda 0 başlangıç adresiyle temsil edilir. Çünkü Modbus PDU içindeki adres alanı sıfır tabanlıdır; ancak dokümanlarda 4xxxx gösterimi bir veri türünü ve referans numarasını belirtebilir.

    Örneğin kılavuz ilk holding register’ı 40001 olarak gösteriyorsa birçok client yazılımında FC03 + başlangıç adresi 0 kullanılması gerekir. Fakat tüm yazılımlar aynı adres girişi biçimini kullanmaz. 40001’i doğrudan sayısal başlangıç adresi olarak yazmadan önce hem yazılımın adresleme seçeneğini hem cihazın register map açıklamasını kontrol edin.

    16 Bit, 32 Bit ve Ölçekleme

    Bir Modbus register’ı 16 bittir. Ancak akım, enerji veya sıcaklık gibi bazı değerler iki register’ı birleştiren 32 bit integer veya float biçiminde tutulabilir. Bu durumda register sırası (word order), işaretli/işaretsiz veri türü ve ölçekleme katsayısı önem taşır.

    Örneğin cihaz dokümanında frekans değeri 0,01 Hz çözünürlüğünde saklanıyorsa okunan ham değer 5000, gerçek değer 50,00 Hz olabilir. Bu yalnızca örnektir; gerçek katsayı mutlaka üretici dokümanından alınmalıdır.

    En Çok Kullanılan Modbus Function Code Komutları

    Fonksiyon kodu, karşı cihazdan istenen işlemi belirtir. Sık kullanılan komutlar şunlardır:

    • FC01 – Read Coils: Tek bitlik coil durumlarını okur.
    • FC02 – Read Discrete Inputs: Dijital giriş/durum bitlerini okur.
    • FC03 – Read Holding Registers: Holding register verilerini okur.
    • FC04 – Read Input Registers: Input register verilerini okur.
    • FC05 – Write Single Coil: Desteklenen tek bir coil değerini yazar.
    • FC06 – Write Single Register: Desteklenen tek bir holding register’a değer yazar.
    • FC15 – Write Multiple Coils: Birden fazla coil’i yazar.
    • FC16 – Write Multiple Registers: Birden fazla holding register’ı yazar.

    Bir komutun standartta tanımlanması, her cihazda uygulanmış olduğu anlamına gelmez. Okuma veya yazma işleminden önce cihazın fonksiyon kodu desteği, veri erişim yetkileri ve izin verilen değer aralığı incelenmelidir.

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

    Temel bir örnek düşünelim: PLC, bir frekans inverterinden anlık frekans ve arıza kodu okuyacak. Herhangi bir marka/modelden bağımsız olarak izlenecek mantık şöyledir:

    1. Cihaz kılavuzunu açın: Modbus desteklenen arayüzü, bağlantı şemasını, register map ve fonksiyon kodlarını belirleyin.
    2. Fiziksel bağlantıyı doğrulayın: RTU için uygun seri hat ve klemensleri; TCP için Ethernet ağını hazırlayın.
    3. Parametreleri eşleştirin: RTU’da seri port ayarları ve Slave ID; TCP’de IP adresi, alt ağ ve port bilgilerini kontrol edin.
    4. Doğru register’ı seçin: Frekans veya arıza kodunun adresini, veri türünü, fonksiyon kodunu ve ölçeğini cihaz tablosundan bulun.
    5. Önce okuma testi yapın: Yazma komutlarına geçmeden önce bir register’dan tutarlı veri okuyup okuyamadığınızı doğrulayın.
    6. Hataları izleyin: Timeout, exception code, yanlış adres ve veri formatı sorunlarını ayrı ayrı değerlendirin.

    Örnek değerler cihazdan cihaza değiştiğinden burada uydurma register adresi vermiyoruz. Gerçek uygulamada doğru adresleri üretici kılavuzundan seçmek, çalışmayan bir örneği kopyalamaktan daha güvenilirdir.

    Uygulamalı bir örnek görmek isterseniz forumumuzdaki Codesys Modbus RTU Register Okuma ve Yazma Testi konusunu inceleyebilirsiniz. PLC’nin temel çalışma mantığına yeni başlıyorsanız önce PLC Nedir? Ne İşe Yarar? rehberini okuyabilirsiniz.

    Modbus Haberleşme Hataları ve Çözüm Yöntemleri

    Timeout: Cihazdan Yanıt Gelmiyor

    Önce cihazın enerjili ve haberleşmeye hazır olduğundan emin olun. RTU için hat bağlantısı, seri port, Slave ID ve baud/parity ayarlarını; TCP için IP erişimi, portu ve ağ kurallarını inceleyin. Yanlış A/B bağlantısı veya sonlandırma sorunları da seri iletişimi bozabilir.

    Illegal Function veya Illegal Data Address Hatası

    Bu tür exception response mesajları; cihazın komutu desteklemediğini, istenen adresin tanımlı olmadığını veya ilgili adres aralığının uygun olmadığını gösterebilir. Önce fonksiyon kodunu ve register map’i doğrulayın; ardından adresin 0 tabanlı mı 1 tabanlı mı girildiğine bakın.

    Değer Okunuyor Ama Hatalı Görünüyor

    Veri türü, signed/unsigned seçimi, 16/32 bit uzunluk, iki register’ın sırası ve ölçekleme katsayısı kontrol edilmelidir. Örneğin 32 bitlik bir değerin tek register olarak okunması anlamsız sayılar üretebilir.

    Modbus Güvenli midir?

    Klasik Modbus RTU ve Modbus TCP, kendi başlarına modern kimlik doğrulama ve şifreleme mekanizmaları sunmaz. Özellikle Modbus TCP cihazlarını doğrudan internete açmak yerine endüstriyel ağ segmentasyonu, erişim kontrolü ve güvenli uzaktan erişim yöntemleri tercih edilmelidir. Modbus Organization ayrıca TLS tabanlı ayrı bir Modbus Security spesifikasyonu da yayımlamaktadır; bunun desteklenmesi cihaza ve sisteme bağlıdır.

    Makine güvenliği notu: Acil durdurma, güvenli tork kapama ve benzeri emniyet işlevleri yalnızca standart Modbus mesajlarına bağlanmamalıdır. Güvenlikle ilgili kontrol fonksiyonları, ilgili emniyet standartları ve cihazın sertifikalı güvenlik çözümleri çerçevesinde tasarlanmalıdır.

    Modbus Hakkında Sık Sorulan Sorular

    Modbus nedir, ne işe yarar?

    Endüstriyel cihazların durum ve sayısal verilerini standart komutlarla okuyup yazabilmesini sağlayan haberleşme protokolüdür. Örneğin PLC ile bir enerji analizörü veya frekans inverteri arasında veri alışverişinde kullanılır.

    Modbus RTU ile Modbus TCP aynı şey mi?

    Temel Modbus veri modeli ve fonksiyon kodları ortaktır; taşıma yöntemleri farklıdır. RTU seri hatlarda, TCP ise TCP/IP ağında çalışır. Ağ parametreleri ve mesaj çerçeveleri de farklılık gösterir.

    Modbus haberleşme için hangi kablo kullanılır?

    Modbus RTU, yaygın olarak uygun RS485 kablolaması üzerinden kullanılır. Modbus TCP ise Ethernet ağı üzerinden taşınır. Ancak kablo ve bağlantı ayrıntıları cihaz üreticisinin bağlantı şemasına uygun seçilmelidir.

    Modbus register 40001 hangi adrestir?

    Yaygın 4xxxx gösteriminde ilk holding register’ı ifade eder. Modbus PDU’da bunun sıfır tabanlı adresi 0’dır; fakat kullanılan yazılımın adresleme gösterimi farklı olabileceği için dokümantasyon kontrol edilmelidir.

    Sonuç: Modbus Öğrenmeye Nereden Başlamalı?

    Modbus nedir, hangi cihazlarla çalışır ve bir uygulama nereden başlar? Öncelikle veri modelini ve cihaz dokümanlarını doğru okumayı öğrenmek gerekir.

    Önce veri modeli ve request–response mantığını öğrenin. Ardından RTU için seri haberleşme parametrelerini, TCP için ağ ayarlarını ve register okuma işlemlerini test edin. Daha sonra marka/modelinize uygun bir PLC–sürücü veya PLC–enerji analizörü uygulaması geliştirin.

    Modbus RTU’nun RS485 bağlantısını ve Modbus TCP’nin PLC üzerindeki kurulumunu sonraki rehberlerimizde daha ayrıntılı işleyeceğiz. Sorunuz varsa kullandığınız cihaz modelini, bağlantı tipini, fonksiyon kodunu ve hata mesajını bu konuya yanıt olarak paylaşabilirsiniz.

    Teknik kaynak: Modbus Organization – Resmî Spesifikasyonlar ve Uygulama Kılavuzları.

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