Petit Modbus: Küçük ama Dev!
- 2 sene önce, Fırat DEVECİ tarafından yazılmıştır.
- 22 Yorum
- 6.109 Kişi Okudu
Daha önceki yazılarımızda Modbus’ın tarihçesinden günümüze uzanan yapısını ele almış ve protokolün RTU altındaki detaylarına girmiştik. Endüstriyel standart haline gelmiş Modbus, özellikle seri asenkron iletişim ile birlikte kullanılagelen en yaygın haberleşme altyapılarından biri haline gelmiştir. Modbus’ı ele aldığımız yazıda belirttiğim üzere internette Modbus RTU üzerine çok fazla kaynak/proje olmasına karşın bunların hepsi kullanımı karmaşık ve oldukça fazla detaya sahiptir.
Bu yazıda bu tür zorluklardan arındırılmış, oldukça sade ve anlaşılır, tamamen ANSI C standartlarında oluşturulmuş Petit Modbus adlı Modbus RTU kütüphanesine değineceğiz.
Petit Modbus Nedir?
Elektronik tasarım ile uğraşan arkadaşlar, gerek bilgilerin izlenebilmesi gerekse debug için seri iletişim metodu ile bir kez uğraşmak durumunda kalmışlardır. Biraz daha profesyonel iş yapmaya başladıklarında ise bu haberleşme metodunun fiziksel yapısı ve teorisinden dolayı yanlış data almaya açık olduğunu görmüş, en son aşamada ise öyle ya da böyle Modbus ile tanışmış (tanışılmasa da benzer bir X protokolü kurmuş) olacaklardır.İş hayatı içerisinde “Modbus RTU İletişim” ihtiyacının doğmasından sonra “Amerika’yı tekrar keşfetmeden” modbus kütüphanesi arayışına girip, bir çok örnek içerisinde işe yarayacak, sade ve anlaşılır bir kütüphane bulamadım. İstediğim şey Modbus protokolü içerisinde master birimin sorduğu “1-2-3-4-5-6-15-16.” fonksiyonlarına cevap verecek, taşınması ve port edilmesi kolay bir kütüphane idi. Arayışların sonuçsuz kalmasından sonra ise kütüphaneyi oturup yazarak V1.0 (2011) ile tamamlamış oldum. (Merak edenler için şu an V1.4 (2016) ile Modbus Master dahil edilmiş hali ile kütüphane kendi tarafımda yıllar içerisinde geliştirilmeye devam ediyor.)
Modbus kullanan arkadaşlar en çok kullanılan fonksiyonların;
0x03 (03) – Holding Register Değerlerini Oku
0x06 (06) – Tek Holding Register Değeri Yaz
0x10 (16) – Çoklu Holding Register Değeri Yaz
olduklarını bilir.
Bir proje içerisinde, aynı işlemci ile iki ayrı Modbus Slave kullanmam gerektiğinde ise yukarıdaki bilgi ışığında Petit Modbus fikri ortaya çıktı. Fazlalıklarından arındırılmış, hap şeklinde bir modbus! Ve bu şekilde Petit Modbus ortaya çıktı!
Petit Modbus Dosyaları ve Kullanımı
Petit Modbus; kullanımı basit, işlemciler üzerinde taşınması kolay olması amaçlanan bir kütühanedir. Kütüphane dosyalarının hepsine ve örneklere github üzerinden aşağıdaki linkten ulaşabilirsiniz.
Petit Modbus V1.0 Library Download
Kullanımı ile ilgili videoyu ise aşağıda izleyebilirsiniz. Videoyu tam ekran ve yüksek çözünürlükte izlemenizi öneririm.
Soru ve Öneriler
Kütüphane ile ilgili tüm soru ve önerilerinizi iletişim ya da aşağıda bulunan yorum bölümünden bana ulaştırabilirsiniz.
Herkese çalışmalarında başarılar dilerim!
Her zamanki gibi birçok açıdan faydalı bir çalışma ve
cömert bir paylaşım olmuş, devamı dileğiyle, teşekkür ederim.
Fırsatım olursa deneyip geri bildirimde bulunmaya çalışacağım.
Merhaba,
Yazınız için teşekkürler. Arduino için nasıl kullanabiliriz. Bir örnek yapmanız mümkün mü?
Fahrettin merhaba, Arduino’yu kişisel olarak destekleyip, insanlara önermediğim için bu konuda örnek yapmıyorum.
Hocam CCS C DE PIC16F877 kullanarak örnek yapmaya çalıştım yapamadım.
Küçük örnek yapma şansımız olur mu?
Kodlar C şeklinde dolayısı ile CCS C’ye çevirmeyi kolaylıkla yapabilirsiniz. Zamanım olursa kod öbeğine örnek olarak ekleyebilirim.
Merhaba modbus konusunda çok iyi bir örnek olmuş vaktiniz olursa ccs c ye çevirme yada örnek paylaşabilir misiniz teşekkürler.
CCS C’ye kod yazmıyor ve ilgilenmiyorum.
İyi günler dilerim.
Merhaba hocam, Petit Modbus kendi kullandığınız kütüphane mi? Modbus masteri destekliyor mu yayınladığınız haliyle?
Merhabalar,
Petit Modbus kullandığım projelerim mevcut, yalnız Master’ı desteklemiyor. Petit sadece 3-6-16. fonksiyonları desteklemektedir.
Selamlar
Kütüphaneyi incedim ve hatta STM32F0 serisi bir işlemci üzerine port edip çalıştırdım. Gayet güzel ve hızlı port edildi gerçekten. Elinize sağlık.
Geri bildiriminiz için teşekkürler!
Selamlar
Modbus kütüphanenizi indirdim.Simülasyonu çalıştırdığımda sürekli time out error veriyor.Herhangi bir değişiklikte yapmadım.Dikkat etmem gereken bir husus var mı?
Problem yaşamamanız gerekiyor, tekrar bakmanızda fayda var. İyi günler dilerim.
Modbuspoll uygulamasında sadece TX sinyalini gönderiyor. ISIS’ten sinyali alamıyor.Haberleşme ayarlarımda doğru ancak timeout errora düşüyor direkt.
Mehmet Bey, gerekli her şey videoda var bir çok kişi var kütüphaneyi kullanan bir şeyleri yanlış yapıyorsunuzdur. Buradan bu şekilde yardım etmem mümkün değil maalesef.
Merhabalar, kütüphanenizi kullanarak devre kurmak istiyorum. MAX485 ile kullanacağım. Enable bitini nasıl ayarlamam gerektiği konusunda sıkıntı yaşıyorum. Yardımcı olur sanız sevinirim.
DE ve RE uçlarını birleştirip, iletim yaparken aynı anda 1’e, okuma yaparken de 0’a çekmeniz gerekmektedir. Gerisi kullanacağınız işlemciye kalmış.
Fırat hocam merhabalar. Sitenizi ilgiyle takip ediyorum. Mehmet Fatih Kılıç arkadaşın yaşadığı sorunun aynısını ilk başta bende yaşadım. Ancak kodlara baktığımda “slave” adresinin “2” ve “register” sayısının da “11” olduğunu gördüm. Ayrıca Modbus poll programında “Parity” ayarının “Even” olduğunu farkettim. Parity ayarının None seçilip, bahsettiğim Slave ve register sayısı düzeltirse simülasyon çalışacaktır. Bu işlemin ya kasıtlı (Bizim her bilgiye hazır konmamamız için 🙂 Bence en faydalı olanı bu) ya da kasıtsız yapıldığını düşünüyorum. İyi çalışmalar. Teşekkürler. Çalışmalarınızda başarılar diliyorum.
Hello there,
Is it possible to port your library for PIC32MX?
Thanks in advance.
Hello,
It’s not possible for now, maybe in future.
Thanks.
Hocam iletişimde arada MAX485 gibi transceiver kullandığımızda RE ve DE pinini “gönderim bitişi kesmesi” ile kullanabileceğimizi söylemişsiniz. Bu bahsettiğiniz usart gönderim kesmesi mi?
Evet kastettiğim tam da budur.