MODBUS-RTU Nedir?

MODBUS-RTU (Remote Terminal Unit - Uzaktan Terminal Ünitesi), MODBUS-ASCII ile birlikte kullanılan bir MODBUS protokol çeşididir. "RTU", Uzaktan Terminal Ünitesi anlamına gelir.
MODBUS-RTU, ikili bir protokoldür. MODBUS-ASCII'nın aksine, MODBUS-RTU verileri ikili formatda gönderir. Bu, MODBUS-RTU'yu, özellikle büyük miktarda veri gönderilmesi gerektiğinde, MODBUS-ASCII'dan daha kompakt, daha hızlı ve daha verimli kılar.
Bir MODBUS-RTU mesajı şu şekilde yapılır:
[ID][FC][Data][CRC]
ID: Bu, cihazın adresidir (1 bayt).
FC: İşlev Kodu (1 bayt), yapılacak işlemi belirtir.
Data: Bu veri alanıdır. İşlem koduna bağlı olarak farklı anlamlar taşır.
CRC: Bu, Döngüsel Kırmızılık Kontrolüdür (2 bayt). Bu, MODBUS-ASCII'da kullanılan LRC'den daha sağlam bir hata kontrol formudur.
Uygulama açısından, MODBUS-RTU ve MODBUS-ASCII arasındaki önemli farklardan biri, MODBUS-RTU'nun bir mesajın sonunu belirtmek için sessiz bir aralık kullanmasıdır. Bu, bazı sistemlerde zorluk oluşturabilecek hassas zamanlama kontrolü gerektirir.
Bu farklılıklara rağmen, hem MODBUS-RTU hem de MODBUS-ASCII, elektronik cihazları bağlamak için endüstride yaygın olarak kullanılır. İkisi arasında seçim genellikle belirli bir uygulamanın spesifik ihtiyaçlarına ve kısıtlamalarına bağlıdır.
MODBUS RTU ile belirli bir veriyi gönderirken, aşağıdaki yapıyı kullanmanız gerekmektedir:
css
[ID][FC][ADDRESS][DATA][CRC]
ID: Cihazın adresi
FC: İşlev Kodu (Function Code), yapılacak işlemi belirtir.
ADDRESS: Değiştirilecek register'ın adresi
DATA: Gönderilecek veri
CRC: Döngüsel Redundans Kontrolü (Cyclic Redundancy Check) hata kontrolü
Ancak, MODBUS RTU ikili (binary) bir protokoldür ve bir CRC hesaplama işlemi gerektirir. CRC hesaplaması genellikle işlemci veya özel bir yazılım kütüphanesi tarafından yapılır ve bu karmaşık bir işlem olabilir.
Modbus RTU ile id numarası 28 olan bir alıcıya 555 rakamını gönderme örneği?
Bu örnekte, ID'si 28 olan bir cihaza (örneğin bir hava kalitesi sensörü), adresi 10 olan bir holding register'a 555 değerini yazmayı deneyeceğiz. İşlev Kodu 06 (Preset Single Register) kullanılacaktır.
Verinin hexadecimal hali:
1C 06 00 0A 02 2B
1C: ID 28 (hexadecimal hali ile)
06: İşlev Kodu (Preset Single Register)
00 0A: Register adresi 10 (hexadecimal hali ile)
02 2B: Veri 555 (hexadecimal hali ile)
CRC hesaplandığında (bu işlem genellikle otomatik olarak yapılır):
1C 06 00 0A 02 2B [CRC]
Bu, MODBUS RTU ile 555 değerini belirli bir cihaza göndermek için oluşturulmuş örnek bir mesajdır. Ancak CRC'nin ne olacağını belirlemek için CRC hesaplaması yapmanız gerekecektir, bu yüzden gerçek bir sistemde bu işlem genellikle otomatik olarak gerçekleştirilir.
Değerli arkadaşlar
Günümüzde endüstride kullanılan birçok PLC, sürücü ve HMI cihazı MODBUS-RTU desteğine sahiptir. Bu sayede farklı markalardaki ürünlerin ortak bir dil üzerinden haberleşmesi mümkün olur. Örneğin, bir Schneider PLC ile Siemens sürücüyü aynı hatta çalıştırmak, doğru adresleme ve fonksiyon kodları ile oldukça basittir.
MODBUS-RTU’nun pratikte en çok tercih edilme sebebi, basitliği ve güvenilirliğidir. Çift telli RS-485 hattı üzerinde uzun mesafelere sorunsuz veri aktarımı yapılabilir. İyi bir kablolama ve doğru terminasyon ile 1200 metreye kadar haberleşme sağlanabilir. Bu da sahada çok sayıda cihazın tek master altında toplanabilmesini sağlar.
Bir diğer önemli nokta ise, zamanlama ve hata kontrolüdür. MODBUS-RTU’da çerçevenin ayrılması için en az 3,5 karakterlik sessiz süre beklenir. Bu süreye dikkat edilmediğinde cihazlar mesaj sınırlarını karıştırabilir. Ayrıca CRC mekanizması sayesinde hat üzerindeki gürültüden kaynaklı hatalar kolayca tespit edilir.
Kendi tecrübemden söyleyebilirim ki; sahada en sık karşılaşılan sorunlardan biri, adres çakışmasıdır. İki farklı cihaza aynı ID verildiğinde, master hangi cihazdan yanıt alacağını bilemez. Bu durumda iletişim kilitlenir. Bu yüzden sahada kurulum yaparken her cihaza benzersiz bir ID atamak büyük önem taşır.
Son olarak, yeni başlayan öğrenciler için şunu vurgulamak isterim: MODBUS-RTU'yu anlamak, endüstride kullanılan diğer haberleşme protokollerini öğrenmeyi de kolaylaştırır. Çünkü adresleme mantığı, fonksiyon kodları ve hata kontrol prensipleri birçok protokolde benzerdir. Bu yüzden MODBUS-RTU öğrenmek, otomasyon alanında atılacak sağlam bir ilk adımdır.
Sepete Henüz Ürün eklemediniz!
