Tarihi Haberleşme Metodu: Modbus RTU

Tarihi Haberleşme Metodu: Modbus RTU

ModbusElektronik ve onun üzerine tasarım yapan herkes cihazlarını birbirleriyle haberleştirmek için çeşitli metotlar kullanır. Bu metotlar kullanıcılardan çeşitli parametreler alınması için olabileceği gibi, bir cihazın belirli parçaları arasında bilgi transferi için de kullanılabilirler. Günümüzde bilgisayarı az çok bilen kullanıcıların çoğu Ethernet, USB, HDMI gibi haberleşme metotlarına aşina olsa da alt seviyeye inildiğinde bir çok hayat kurtarıcı haberleşme tekniği bulunmaktadır; SPI, I2C, UART, CAN, One Wire ve daha bir çoğu. Bu iletişim metotlarının her birisi kendine has fiziksel alt yapıya sahiptir ve haberleşmenin yapılacağı fiziksel ortama göre değişiklikler gösterir; bunlardan en çok bilineni RS232, RS485 ve türevleridir.

İlk Modbus alt yapısı 1979 yılında, mikrodenetleyicilerin olmadığı, mikroişlemcilerin ise bebeklik çağlarını yaşadığı yıllarda, özellikle PLC’leri ve bunun türevi sistemleri haberleştirmek için Modicon firması (şu an herkes bu firmayı Schneider Electric olarak biliyor) tarafından oluşturularak kullanıcılara sunulmuştur. Bir adet master’ın bulunduğu sistem 247 adet slave cihaz okuyabilecek şekilde düzenlenebilir.

Modbus’ın yaygınlaşmasındaki en büyük etmen ise; kolay anlaşılabilir, cihazlara kolay adapte edilebilir olmasının yanında ücretsiz bir lisans altında kullanıcılara sunulması gösterilebilir.

Modbus, haberleşme ve fiziksel katman olarak ikiye ayrılmaktadır. Haberleşme katmanı olarak günümüzde en çok kullanılanları Modbus ASCII, RTU ve TCP/IP’dir. Fiziksel katman olarak ise UART temelli RS232/RS485, USB/CAN gibi değişik birimler ve TCP/IP için Ethernet gösterilebilir. Biz bu yazımızda kullanıcıların en çok tercih ettiği, RS485 ve Modbus RTU’yu ele alacağız.

Modbus RTU
Modbus içerisinde seri iletişim metodunu kullanan ASCII ve RTU adı altında iki haberleşme metodu bulunmaktadır. İkisi de birbirine benzese de RTU, ASCII iletişim metoduna göre daha hızlıdır. Bunu bir örnek ile açıklamak gerekirse; 12345 sayısının seri hat üzerinde gönderimi ASCII ile “1”, “2”, “3”, “4”, “5” şeklinde 5 ayrı byte ile yapılırken, RTU’da ise bu bilgi 2x8bit olacak şekilde MSB ve LSB olarak ikiye bölünür ve 2 byte şeklinde (12345/256 bir byte, 12345%256 bir byte) gönderilerek hız kazanımı sağlanmış olur. Bu yüzden günümüzde Modbus tarafında RTU, en sık tercih edilen seri iletişim metodu olarak görülmektedir.Modbus RTU FrameModbus RTU’nun frame yapısı yukarıda görülebilir. İlk byte’ta iletişim kurulacak cihazın adresi belirlenmelidir. Slave cihaz sayısı 247 adet olabileceğinden bu bölüme 0-247 arasında sayı yazılmalıdır. İkinci byte ise Modbus için standartlaşmış fonksiyon kodlarını ihtiva etmelidir. Bu fonksiyonlar aşağıdaki gibi tanımlanmıştır. Modbus FunctionsGünümüzde en çok tercih edilen Modbus RTU fonksiyonları 3, 6 ve 16’dır.

Bundan sonraki bölümde fonksiyon tanımlamalarına göre datalar düzenlenerek, slave adresi ve fonksiyon numarasının CRC16’ı da son iki byte’a yazılarak gönderim ve alım işlemleri sağlanır.Modbus RTU Wait TimeModbus RTU için mesaj gönderim yada alımlarında, iki mesaj arası minimum 3.5 karakterlik bekleme yapılmalıdır. Bu bekleme baudrate hızına göre değişkenlik gösterecektir. Örneğin 9600 baudrate için bu değer yaklaşık 3ms iken 115200 baud değeri için 0.25ms civarında olacaktır.

Modbus RTU Haberleşme Örneği
Modbus RTU’yu anlayabilmek için teorikten ziyade pratik uygulama üzerinden haberleşme metodunu anlamak çok daha kolaydır. Haberleşme örneğimizde sırasıyla 3 ve 16. fonksiyonları ele alacağız.
İlk olarak, fonksiyon 3 örneğimizde slave adresi 17 (0x11) olan cihazın 107 (0x6B) ve 108. (0x6C) register değerleri okunmak istendiğinde göndermemiz ve almamız gereken komutlar aşağıda görülebilir. Ayrıntılar için resmi büyütebilirsiniz. Read Holding RegistersCevap dikkatlice incelenirse, slave öncelikle kendi slave numarası ve kendisine gelen fonksiyon tanımını gönderdikten sonra 2×2 byte şeklinde veri ile bunların CRC16 değerini master’a göndermektedir. Tüm bu değerler doğru ise master cevabı kabul etmektedir.

Son olarak, fonksiyon 16 örneğimizde slave adresi 17 (0x11) olan cihazın 301 (0x12D) ve 302. adreslerine aynı anda veriler yazılacaktır. Ayrıntılar için resmi büyütebilirsiniz.Write Multiple RegistersBu kısımda da cevap dikkatlice incelendiğinde, yazım işleminde de slave’in mastera işlemin kabul edildiği bildirilmektedir.

Her iki örneğinde kilit noktalarından bir tanesi CRC16 hesaplamasıdır. Bunun için Modbus’ın kendi sitesinde lookup table bulunsa da günümüzün gelişen işlemcileriyle birlikte aşağıdaki kodu kullanmak oldukça kolay ve daha az yer kaybına neden olacaktır.

void CRC16(const unsigned char Data, unsigned int* CRC)
{
    unsigned int i;

    *CRC = *CRC ^(unsigned int) Data;
    for (i = 8; i > 0; i--)
    {
        if (*CRC & 0x0001)
            *CRC = (*CRC >> 1) ^ 0xA001;
        else
            *CRC >>= 1;
    }
}

İlk kez CRC fonksiyonu işletileceğinde girdi olarak girilecek CRC değerinin 0xFFFF olması gerekmektedir.

Modbus İçin Bilgisayar Programları
Modbus her ne kadar seri iletişim metodu üzerinden haberleşse de, Serial Port Terminal benzeri programlar bu iletişim metodunu çözmede zayıf kalacaktır. Modbus için kullanılan bir çok program olmasına karşın Modbus Poll adlı program, bu konuda benim gibi bir çok kullanıcının tercih ettiği en iyi programlar arasındadır.Modbus PollEğer bilgisayar tarafında arayüz tasarlama konusunda tecrübeniz yok ise Modbus Poll ile bir çok denemenizi gerçekleştirebilir, kayıtlarınızı tutabilirsiniz. Programın deneme sürümünde zaman sınırı olsa da bir çok işlem için yeterli özelliklere sahip olduğunu söylemek gerekir.

Modbus Poll, master olarak sisteminize sorgu yapıp, slave olarak tasarladığınız cihazların testi için kullanıldığından master olarak tasarladığınız cihazlarınızın testini yine aynı firmaya ait Modbus Slave ile yapabilirsiniz.

Mikrodenetleyiciler için Modbus
Modbus’a yeni başlayan bir çok kişi, özellikle mikrodenetleyici tarafında nasıl bir yol izleyecekleri konusunda ikileme düşmektedir. İnternet özelinde bir çok örnek ve kütüphaneye rastlamak mümkün olsa da ben, kendi uygulamalarımda oluşturduğum kendi kütüphanemi kullanmayı tercih ediyorum. Eğer bu konuda zorluk çekiyorsanız internet üzerinde bulabileceğiniz FreeModbus kütüphane dosyalarını incelemenizi öneririm. Yaptığım incelemelerde 100 registerlık (100 x 2byte = 200byte) bir uygulama için FreeModbus 8.2kByte yer kaplarken, kendi uygulamam 2.4kByte kadar yer kaplamaktadır. Bu yüzden, her ne kadar hazır uygulamalar için kütüphane yazmayı zaman açısından verimli bulmasam da, Modbus için bir istisna yapıp kütüphanenizi kendiniz oluşturmanızı öneririm.

Modbus Uygulama Örneği
Modbus RTU ile ilgili aşağıda örnek uygulamaya ait ekran görüntüsünü aşağıda görebilirsiniz. Uygulamada 5 ve 6. registerdaki değerler 100ms’de bir sırasıyla arttırılıp azaltılırken, ilk 4 register ise STM32F072 Discovery üzerindeki ledleri kontrol etmektedir. Bunun yanı sıra, Modbus Poll üzerindeki değişen TX rakam değeri, her seferinde başarılı olan toplu register okuma işleminin sayısını göstermektedir. Poll süresine göre hızı değişkenlik gösteren bu sayıcıda, kütüphanenizin hızını ve verimliliğini ölçmeniz mümkündür.Modbus Exampleİlgili görüntüye ait uygulamanın .hex dosyasını buradan (indirdikten sonra dosyayı .rar yapmalısınız) indirebilirsiniz. UART haberleşmesi için STM32F072’nin PA9 ve PA10 bacakları kullanılmıştır.

Fotoğraftaki kütüphane ticari projelerde kullanıldığı için paylaşımını burada yapamıyorum. Yine de bu kütüphaneye ulaşmak ya da bilgi almak istiyorsanız bana iletişim bölümünden ulaşabilirsiniz.
Sonuç Olarak…
Modbus, 35 yıllık geçmişiyle oldukça popüler ve alışıldığında bırakılmayacak bir iletişim metodu. Özellikle haberleşme istesin ya da istemesin, debug anlamında, bir projeye başlarken led blinkten sonra dahil ettiğim ilk uygulamalardan biri. Yeni bir çok iletişim metodu ve yöntemi çıkmasına karşın, gelecek yıllarda da bu ihtiyar iletişim metodunu görmeye devam edeceğimiz aşikar olduğundan, elektroniğe yeni başlayan arkadaşlar için ilk önerdiğim iletişim metotlarının arasında da yer alıyor.

Gerek Modbus gerek ise diğer endüstriyel iletişim metotları ile ilgili tüm sorularınızı bana yorum bölümünden ulaştırabilirsiniz.

Herkese iyi çalışmalar dilerim.

70 Yorum — "Tarihi Haberleşme Metodu: Modbus RTU"

  1. Emre Sekmen 16 Mart 2016

    Merhaba,

    Bu konulara tamamen uzak birisi olarak bu işe merak duyduğumdan ve babamın tatlı baskısıyla girişmek durumunda kaldım. Visual basic bilgim ve plc bilgim giriş seviyesinde desek yeridir. Visual basic 6.0 programını lise eğitim döneminde aldım ama üzerinden 13 yıllık bir süre geçti sadece alt yapı olarak aklımda var. Ama okudukça hatırlamaya çalışıyorum. Yazılan makale ve bilgileri birleştirmeye çalışıyorum ama hiç bilgim olmadığından kafam daha çok karışıyor. Bu konuda sizce nereden başlamalıyım. PLC bağlantısı ve işlem takibi yapmak istiyorum. Bir kaç hazır uygulama buldum fakat hepsi kendine özgü ocx uygulaması yapmış ve formu okuyamıyorum. Dolayısıyla boş bir form oluşturdum diyelim. ve plcde y0 çıkış bobinine enerji verdim diyelim. sadece bu çıkışı verebileceğim bir uygulama yapsam belki üzerine birşeyler katarak geliştirebilirim. Ama şuan y0 enerji verilmesine rağmen bunu pcde okuyamıyorum bu konuda bana öncülük ve bilgi paylaşımı yapabilirseniz çok sevinirim. Yada izlemem gereken bir yol bir öneri belirtirseniz bu şekildede başlayabilirim.

    Şimdiden ilginiz için çok teşekkür ederim

    Saygılarımla,

    Bağlanmak istediğim PLC Delta DVP14ss plcdir.

    1. Fırat DEVECİ 16 Mart 2016

      Merhaba Emre Bey,

      Yazımda belirtmiş olduğum Modbus Poll adlı yazılım ile PLC haberleşmesi yapabiliyor musunuz öncelikle buna bakmalısınız. İstenilen bilgileri çektikten sonra ilerlemeniz gereken yol, aynı soru kalıplarını sizin gönderip, cevap almaya çalışmanızdır.

      İyi günler dilerim.

  2. Burak 27 Haziran 2016

    Merhabalar Fırat Bey,
    Ben bu konularda çok yeniyim ve anlayışınız için teşekkür ederim.
    Öncelikle yazınız için çok teşekkür ederim. Ben PLC’den veri çekip bu verileri kaydetmek istiyorum. Bunun için basit bir c kodu yazmayı planladım fakat genel olarak haberleşmeyi nasıl yapacağımı çözemedim. Elimdeki datasheette modbus adresine ve özelliklerine göre hangi değeri alacağım mevcut örneğin
    30517 Day yield (Wh) [E-heute] 4 U64 FIX0 RO
    Cihazı usb to rs485 cihazı ile bilgisayara bağlayıp bu sonuçları almak istiyorum. Cihaza nasıl istek yolluyacağımı bilmiyorum. İstek yolladığım zaman geri dönüşü nasıl alacağım o konu hakkında da bilgim yok. Sizce nereden başlamalıyım ve sizin elinizde döküman varsa bana ulaştırabilir misiniz?
    Teşekkürler
    Burak

    1. Fırat DEVECİ 28 Haziran 2016

      Merhaba Burak,

      Öncelikle bu konuda PLC’nin hangi fiziksel layer üzerinden haberleştiğini bulmalısın; RS232 mi 485’mi, Etherner mi? Daha sonrasında uygun protokolü ve bağlantıyı seçerek Modbus Poll benzeri bir program ile takip yapabilirsin. Modbus için kendi akredite sitesinde bilgi bulabilirsin. Türkçe kaynak bu konuda öneremeyeceğim.

  3. Hasan 06 Ağustos 2016

    Merhaba,
    STM32F407VG üzerinden web server, TCP/IP server örneklerini çalıştırdım. Ping atma bağlanma işlemleri yapabiliyorum. Önerebileceğiniz bir modbus kütüphanesi var mı acaba. Nette keil için örnek bulmakta zorlanıyorum

    1. Fırat DEVECİ 06 Ağustos 2016

      Merhaba Hasan,

      Yakında PetitModbus adında bir kütüphaneyi sürmeyi düşünüyorum yalnız TCP/IP değil. Bu konuda layerlara bakıp kütüphaneyi senin yazman gerekiyor olabilir.

  4. Naci 26 Ekim 2016

    Merhabalar Fırat Bey,

    Tez çalışmam için DSP TMS320F28030 Modbus haberleşmesi yapmaya çalışıyorum gelen veya giden verilerin nasıl okunacağı ile ilgili kod örneği paylaşabilir misiniz. Normalde veri okurken 16 bit struct yapısı oluşturup
    union olarak bit bit işlem yapabiliyorum.

    Saygılar.

    1. Fırat DEVECİ 26 Ekim 2016

      Merhabalar Naci,

      İlgili işlemci ile UART haberleşmesi yapabiliyor musun? Örneğin bir “deneme” yazısını seri port üzerinden gönderip, istediğin bir değişkeni bilgisayardan işlemciye gönderebiliyor musun? Eğer bunu yapamıyorsan öncelikle çözmen gereken kısım burasıdır. Haberleşmeyi yapabiliyorsan, protokolü projene dahil etmek için sadece videodaki önergeleri izlemen yeterli olacaktır.

  5. Mehmet 14 Kasım 2016

    Çok yararlı ve anlaşılır bir yazı olmuş.
    Emeğinize sağlık.

  6. Mücahit Ceylan 24 Aralık 2016

    Merhabalar Fırat Bey,
    Bir yer altı madeninin gaz izleme ve otomasyon scadasından sorumluyum.
    Protokolümüz MODBUS RTU dur.Kullandığımız master ve slaveler aynı firmaya aittir. MASTER aynı kalarak farklı markaya ait slave cihazlarını haberleştirebilmemiz mümkün müdür (örn.bir metan slave).

    İyi çalışmalar diliyorum.

    1. Fırat DEVECİ 24 Aralık 2016

      Merhaba,

      Haberleşme hızı ve adreslemeler düzgün yapılırsa haberleşmemesi için sorun yoktur.

  7. Oğuzhan Özdoğan 06 Nisan 2017

    İyi günler hocam, akıllı ev projem için arduino ve raspberryi modbus üzerinden ESP8266 wifi shiel ile kablosuz haberleşerek Codesysde programlamak istiyorum. Ethernet shield ile yaptım ancak ESP8266 ile nasıl arduino kodları bulamadım yardımcı olursanız sevinirim.

    1. Fırat DEVECİ 06 Nisan 2017

      Merhaba Oğuzhan,

      Hem konunun başlığı burası değil, hem de Arduino ve ESP’ye destek vermiyorum.

      Kolay gelsin.

  8. Mustafa 13 Ağustos 2017

    Merhabalar,

    RDF302 modbus lu siemens termostat, ısı sensoru, kalorimetre vs. gibi bazı cihazları İspanya’dan programlanıp gönderilmiş olan otomasyon panosuna bağlamam gerekiyor. Nasıl yapıldığını kısaca anlatabilir misiniz? Şimdiden teşekkür ederim.

    1. Fırat DEVECİ 13 Ağustos 2017

      Yani işi sen yap ben de üzerinden para kazanayım diyorsunuz. Şimdi ne olduğunu bile bilmediğim bir cihazın datasheet’in ulaşacağım, bunun nasıl kullanıldığını öğreneceğim, sonra gelip burada size anlatacağım. Siz de teşekkür ederim deyip, gerekli ücreti kazanacaksınız. Yani dediğim gibi işi bana yaptırtacak, cebinizi siz dolduracaksınız. Cin olmadan adam çarpmayı iyi öğrenmişsiniz. İbretlik olarak bu yorumunuzu çeşitli platformlarda paylaşacağım izninizle.

  9. Engin 21 Kasım 2017

    Selamlar.
    1. örnekte 0x6B ve 0x6C okunmaz mı? Start adresin kendisinden değil bir sonrasından mı başlıyor okumaya?

    1. Fırat DEVECİ 21 Kasım 2017

      Evet o kısımda bir eksiklik olmuş, şimdi güncelliyorum. Hex ile Decimal sayı çevrimi hatası. Teşekkürler dikkatiniz için.

  10. Ebubekir 02 Aralık 2017

    Merhaba kendi modbus I/O modülümü yapmak istiyorum bana bu konuya nerden ve nasıl başlayacağım hakkında bilgi verebilir misiniz ?

    1. Fırat DEVECİ 03 Aralık 2017

      Merhabalar,
      Sizin ne kadar tecrübeye sahip olduğunuzu bilmediğimden; elektrik -> mikrodenetleyici -> yazılım -> haberleşme -> modbus sırasıyla bilgileri öğrenip uygulamanızı yapmanız gerekmektedir.

      1. Ebubekir 03 Aralık 2017

        Sorun haberleşme kısmında aslında.

        1. Fırat DEVECİ 03 Aralık 2017

          Peki sorunu bulmuşsunuz düzeltin öyleyse.

  11. Alican 07 Aralık 2017

    Değerli paylaşımınız için teşekkür ederim.Modbus kullanımı için MODBUS cihazlarının satın alınması şart mıdır ? Yoksa her hangi bir mikrodenetleyici yardımıyla modbus protokülünü kullanmak mümkün müdür ?

    1. Fırat DEVECİ 07 Aralık 2017

      Hayır gerek yoktur kullanabilirsiniz.

  12. Tekiner 26 Aralık 2017

    Sitenizden edindiğim bilgiler sayesinde bir şeyler biraz daha oturmuş durumda modbus hakkında. Bu nedenle size bigilerinizi paylaştığınız için teşekkür ederim. Bir konuda yönlendirmeye ihtiyaç duymaktayım. Ben modbus tcp/ip kullanarak android uygulaması yaparken aynı zamanda başka bir platformda server gibi componentler oluşturmalı mıyım veya nasıl bir yol haritam olmalı? Şimdiden Yardımlarınız için teşekkür ederim.

    1. Fırat DEVECİ 26 Aralık 2017

      Android konusunda bir bilgim yok maalesef.

  13. İbrahim Büyükköroğlu 14 Mart 2018

    Mükemmel bir yazı olmuş.

  14. Sarp 18 Nisan 2018

    Yazı harika olmuş, elinize sağlık; fakat, modbus TCP/IP için de bir yazınız mevcut mudur?

    1. Fırat DEVECİ 18 Nisan 2018

      Şu an için TCP/IP ile ilgili bir yazım mevcut değildir.

  15. Haydar 25 Nisan 2018

    Merhaba,
    Öncelikle, yazınız için teşekkür ederim. Cihaza erişim ve test konusunu çözdüm. Şimdi programlama yapacağım. Bir konuda fikir sormak istedim.
    Birden fazla cihaza eş zamanlı sorgu göndermek soruna neden olur mu? Yoksa paket gönderip, cevabını okuyup, bir sonraki cihaza öyle mi paket göndermeliyim? Haberleşme mantığı olarak nasıl yol alacağımı bilemedim. Yanıtlarsanız sevinirim. Teşekkürler.

    1. Fırat DEVECİ 25 Nisan 2018

      Bu sorunuz kullandığınız fiziksel alt yapı ile de ilgili. RS485 kullandığınızı var sayarak, master slave cihazların her birine ayrı ayrı soru sorup cevap alabilir. Modbus’ın temel mantığıdır zaten bu. İyi günler dilerim.

  16. Ufuk 17 Mayıs 2018

    İlgili hex dosyasını mail adresime atabilir misiniz? Verdiğiniz link çalışmıyor. Başarılar.

    1. Fırat DEVECİ 18 Mayıs 2018

      Merhamalar, ilgili link düzeltilmiştir.

  17. Serhat 08 Haziran 2018

    Hocam merhabalar, RS485 haberleşmede kullandığımız transceiver’larda bulunan Data Enable pinini(DE) manual olarak belirli şartlar dahilinde mi set-reset yapıyoruz? Yoksa USART çevresel biriminde bu işi otomatik olarak yapan RTS pinini mi kullanıyoruz?

    1. Fırat DEVECİ 08 Haziran 2018

      Merhabalar RTS ucunu da bu iş için kullanabilirsiniz.
      RTS ucu olmayan işlemcileri de baz alarak ben genelde bu işi gönderim bitişi kesmesi ile yapıyorum yazılımda.

  18. Zikri Karaca 01 Temmuz 2018

    Makalenizden çok faydalandık. En içten teşekkürlerimizle.

    1. Fırat DEVECİ 02 Temmuz 2018

      Ben teşekkür ederim.

  19. Cem Cemal 13 Temmuz 2018

    Scroll u aşağıya çekince kopyama KARDEŞ yazıyor.

    1. Fırat DEVECİ 13 Temmuz 2018

      Kopyalama sen de 😉

  20. Dilay 14 Temmuz 2018

    Merhaba ben Modbus üzerinden röle kontrolü yapıyorum. Bunu C# da bir program yazıp Ethernet ile röleleri kontrol edeceğim. Bunun için registerların fonksiyon kodunu yazmam lazım. TCP’de çalışıyorum ama TX kodlarını yazmakta zorlanıyorum yazdığım kodla da röle açılıp kapanmıyor yardımcı olabilir misiniz TX’i yazarken?

    1. Fırat DEVECİ 15 Temmuz 2018

      Maalesef şu anki iş yoğunluğum nedeniyle bu konuda yardımcı olamam. İyi günler dilerim.

  21. Mehmet 13 Ağustos 2018

    Makalenizin didaktik anlatımından dolayı çok teşekkür ederim. Bu konuda daha fazla makale görmek isteriz.
    SAYGILARIMLA

  22. Onur 16 Aralık 2018

    Hocam öncelikle teşekkürler,benim anlamadığım bir nokta var.mesela da slave olan pic’ten butonun lojik değerini gönderirken neden enable pinini pasif yada aktif yapma gibi bir şey kullanmadık?

    1. Fırat DEVECİ 16 Aralık 2018

      Enable pini nedir?
      Ayrıca Slave herhangi bir data göndermez sorgu yapılmazsa eğer.

  23. İsmail 11 Ocak 2019

    Merhaba; ben Entes marka güç analizörü mpr-53s cihazından modbus ile bir türlü haberleşemedim. Bana yardımcı olursanız çok sevinirim.

    1. Fırat DEVECİ 11 Ocak 2019

      Tabiki IBAN numaramı göndereyim size, hiç bir problem olmadan yardımcı olurum.

  24. Abdullah 21 Mart 2019

    Merhaba ;
    Modbus ile haberleşirken 11 sorguda 4 tane error alıyorum. Modbus haberleşirken bu kadar hata almak normal mı?

    1. Fırat DEVECİ 22 Mart 2019

      12412235235 sorguda 0 hata alıyorum sizce?

  25. Abdullah 22 Mart 2019

    Merhaba,
    Sahada redresör ile haberleşiyorum.Bu olayı redresör firmasına söylediğimizde Modbus haberleşmede bu kadar error normal dediği için teyit almak için sordum.Desteğiniz için teşekkür ederim.

    1. Fırat DEVECİ 22 Mart 2019

      Merhabalar, ya haberleşme bağlantınızda problem var ya da redresör çok gürültülü çalıştığı için kendi kendine hataya düşüyor. Dolayısı ile bunu üretici ile teyitleşerek çözeceksiniz. Ben size sadece özel hizmet sunabilirim.

  26. Beyza 14 Ekim 2019

    Merhaba,
    Makale çok güzel. Benim de bir sorum olacak, UPS teki verileri bluetooth aracılığıyla PC de görüntülemek istiyorum, araştırırken modbus ile karşılaştım. Bunu modbuspoll üzerinden yapmam mümkün müdür. Haberleşme kısmını nasıl çözeceğimi bilmiyorum küçük bir yol gösterir misiniz bana.

    1. Fırat DEVECİ 15 Ekim 2019

      UPS’teki haberleşme protokolünü çözdükten sonra bunu bilgisayara bluetooth ile gönderebilirsiniz. Yalnız bu istek özel olduğu için ancak ücretli destek verebilirim.

  27. Semih 23 Kasım 2019

    Fırat Bey merhabalar. Öncelikle anlatımınız için çok teşekkürler, gerçekten aydınlatıcı bilgiler var. Sadece teyit etme amaçlı olarak bir soracağım.

    NodeMCU’yu RS485 -> TTL dönüştürücü ile enerji analizörüne bağlıyorum. NodeMCU üzerinden sorgulama yapacağımı düşünürsek, bu durumda yanlış bilmiyorsam, enerji analizörü slave, NodeMCU master oluyor değil mi?

    1. Fırat DEVECİ 23 Kasım 2019

      Merhaba Semih Bey, evet o şekilde oluyor.

  28. İrfan Demiray 12 Aralık 2019

    Fırat Bey merhabalar,
    Anlatım çok güzel ve sade.
    2009’dan bu yana SCADA sistemleri içerisindeyim ve bir çok koruma rölesi ile modbus RTU ya da TCP haberleştim.
    Ancak bunu yaparken bazı röleler ile anlaşmakta zorlandığımda HEX olarak verileri incelemek gerekiyor. Bu bağlamda verdiğiniz bilgiler kıymetli.
    Kolay gelsin. teşekkürler.

  29. Tariq Ryklief 26 Şubat 2020

    Hello Firat,

    nice explanation on modbus. want to implement it on a pic24f but going thru your video i unfortunately dont understand turkish. is it possible to write a simple article on how to implement the slave driver into application.
    even if you give explanation in turkish thats ok as google translate can assist me

    thanks so much

    1. Fırat DEVECİ 26 Şubat 2020

      Please search PetitModbus for implementation.

  30. Hüseyin 29 Şubat 2020

    Merhaba Fırat bey,

    Modbus pool programını indirip kurdum ve diagslave(plc simülasyon) ile laptopumda iki programı haberleştirip veri göndermem gerekiyor.Bu konu hakkında bilgi verirseniz çok mutlu olurum. İyi çalışmalar

    1. Fırat DEVECİ 29 Şubat 2020

      Bu tarz özel isteklerinizi mail ile atabilirseniz daha iyi olur.
      İyi günler.

  31. Taylan 18 Eylül 2020

    Merhaba Fırat bey,

    Projemde nodejs’te sqlite kullanarak bir backend hazırladım. frontend’te ise angular kullanılıyor.

    Sorum, modbus tcp/ip kullanmam gerekiyor ve nodejs’te modbusla ilgili kaynak bulmakta zorlanıyorum ve biraz sözel bilgi dışında yazılımsal olarak hiç bir bilgim yok modbus’la ilgili, sıfırdan başlıyorum. Bu konuda nasıl yol izlemeliyim acaba? Yardımcı olursanız çok sevinirim.

    1. Fırat DEVECİ 19 Eylül 2020

      Maalesef dediğiniz konular benim alanımın dışında.

  32. Suat 11 Kasım 2020

    Merhabalar ben RS485 protokolü ile çoklu gönderici (transmitter) ile 1 alıcıya (receiver) bilgi göndermek istiyorum. Arduino ile denedim. Sadece bir tanesinin bilgisi gelmektedir. Çoklu transmitter ile bir receiver a nasıl data gönderebilirim?

    1. Fırat DEVECİ 12 Kasım 2020

      Merhabalar,

      Söylediğiniz durum için Modbus uygun değildir. Canbus konusuna bakmanızı öneririm.

  33. Halil 05 Aralık 2020

    Merhaba Fırat Bey, bilgilendirici anlatımınız için tebrik ederim. Bir sorum olacaktı. Elimde iki tane PLC ve iki (16 input-output) Remote I/O modülü var. Amaç sadece bu I/O modüllerini kullanarak iki PLC arasında bir haberleşme kanalı kurmak. Bunu da ModBUS RTU ve RS485 ile yapacağım. Ama nasıl bir fiziksel bağlantı kurmam gerektiğini anlamadım. PLC’leri ve remote modülleri birbirine nasıl bağlamalıyım?

    1. Fırat DEVECİ 06 Aralık 2020

      Merhabalar Halil Bey,

      Probleminiz çok özel ve bu tarz sorular genel kullanıcıyı hem çok ilgilendirmiyor hem de benim PLC’lerle ilgili bir tecrübem yok. Yorumunuzu yine de yayınlıyorum, bilen arkadaşlar cevaplayabilirler.

  34. Furkan Taşeri 20 Aralık 2020

    Merhaba Fırat Bey öncelikle bu bilgilendirici yazınız için teşekkür ederim. Çok faydalı bir yazı. Ben Yıldız Teknik Üniversitesi son sınıf öğrencisiyim. Tasarım Projesi dersim için bir Modbus kütüphanesi oluşturmam gerekiyor. Yazınızda yüzeysel olarak bahsetmişsiniz. Benim bu konuda çok bir bilgim yok. Bana kütüphane oluşturmada yardımcı olur musunuz?

    1. Fırat DEVECİ 21 Aralık 2020

      Merhabalar Furkan, maalesef bu konuda çok fazla vaktim yok yalnız sitemde PetitModbus diye ararsan sonuca ulaşacaksın.

  35. Kadir 19 Şubat 2021

    Selamunaleykum fırat bey paylaşımınız için teşekkür ederim. Gerçekleştirmeyi düşündüğüm projede modbus haberleşmesi için rs485 kullanacağım yaygın olduğu için. Bunu işlemci tarafında usart ile okuyacağımdan max485 kullanacağım. Sadece max485 kullanmak yeterlimi yoksa donanımsal olarak (asgari düzeyde) dikkat edilmesi gereken başka noktalar varmı ?

    1. Fırat DEVECİ 19 Şubat 2021

      Merhabalar, elbette bir çok konuda önlem almanız gerekecektir. Yalnız bunlar için özel danışmanlık verdiğimden söylemek burada uygun olmayacaktır.

  36. Akademisyen Ebru Gültekin 22 Mart 2021

    Arkadaşımın bana yollamasıyla birlikte bu yazıyı inceledim, gerçekten iki defa okudum ve hayretler içerisinde kaldım. Çok değerli bir yazı, kıymetli bir bilgi. Çok tebrik ederim

  37. Mor Minder 05 Haziran 2023

    İçerik için teşekkürler. Gördüğüm en anlaşılır içerik olmuş. Piyasaya bir tane daha gömülü sistemci kazandırmakta payınız oldu 🙂

Engin için bir yanıt yazın Yanıtı iptal et