MODBUS bilen var mı?

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,448
Aşağıya bir protokol yapısı ekliyorum. Bu yapı mod bus mıdır?

1697622944937.png
 
Slave ID gibi birşey de göremedim.
Bu çoklu cihaz için bir protokol mü yoksa iki cihaz arasında bir protokol mü? İkincisi gibi geldi bana.
 
Frame yapısını biraz araştırdım Dwin ekranların seri haberleşme protokolü ile aynı.
 
Slave ID gibi birşey de göremedim.
Bu çoklu cihaz için bir protokol mü yoksa iki cihaz arasında bir protokol mü? İkincisi gibi geldi bana.

Frame yapısını biraz araştırdım Dwin ekranların seri haberleşme protokolü ile aynı.

Yukarıda paylaştığım yapı dwin ekrana ait. uart üzerinden iki cihaz arası haberleşiyor. Ama konumuz bu değil... Şimdi ben mod bus bilmiyorum. Ancak yakınında dolandığımı düşünüyorum... Daha önce mod bus ile çalışan bir cihaz ile tecrübem olmadı...

Aşağıda kendi kullandığım paket yapısını ekliyorum. Sorunsuz çalışıyor...

1697694190719.png


Kullandığım yapı modbus a yakın diye düşünüyorum. Herşeyi kendim kodladığıma göre paket yapımı mod bus ile uyumlu şekilde değiştirmek istiyorum.

1697694734608.png


modbusa baktığımda paketler arası 3.5 char beklemeyi anlamadım. paket gönderip bekleyecek miyim... öyle ise kötü...
 
3.5 char veri gelmezse hataya düşme süresi Ve bu süre sabit değil baudrate ye göre değişiyor diye hatırlıyorum.
 
Modbus frame formatında paket içerisindeki byte larda boşluk olmadan ardı ardına gönderilmesi gerekli. Yukarıdaki mesajda belirtildiği gibi eğer gelen datalar arasında boşluk olursa ve bu boşluğun süresi baudrate e göre 8 bitlik (1 byte) gönderim süresi 3.5 kat aşarsa paket kesintiye uğradığı düşüncesiyle o paket çöp olur. Alma prosedürü sıfırlanır.
Modbus-RTU formatında yapı basittir. Standartı gereği slave olan birimler kendi başlarına bir veri gönderemezler. Master olan slave birimlere komut gönderir ve cevap bekler. Slave birimlerin adresi 0 "sıfır" olamaz. Bu durumları kabullenmeniz şart. Çoklu register yazma işlemleri dışında master cihazın tarafından gönderilen bütün verilerin uzunluğu (8 byte) aynıdır. Genel yapı şu şekildedir.
<Slave ID (1 byte)>,<Foknsiyon opkod (1 byte)>,<İşlem yapılacak adres (2 byte)>,<İşlem Yapılacak register sayısı (2 byte),<CRC16-Modbus formatında CheckSum (2 byte)>
 
Değildir. Yukarıda anlattığım masterdan slave olan kısım. Slave tarafının verdiği cevaplar biraz daha değişik. Gün içerisinde çok vaktim olmadığı için yüzeysel anlatmaya çalıştım. Fonksiyon kodları yapılacak işlemleri değiştiriyor. Holdinding register okuma/yazma, coil okuma/yazma, input okuma/yazma, çoklu register yazma, çoklu coil yazma gibi liste uzayıp gidiyor.
Mesela IDsi 7 olan bir slave cihazın 300 üncü adresinden 2 register okumak için göndermen data karşılığı
$07$03$01$2C$00$02$04$58 şeklinde.
Başka bir örnek verelim IDsi 4 olan slave cihazın 277 inci adresine 100 değerini yazmak için
$04$06$01$15$00$64$98$4C göndermelisiniz.

İlave: Modbus poll tarzı bir programı inceleseniz daha hızlı kavrarsınız.
 
Standart dışı fonksiyon kodları için imkan veren bir hazır uygulama biliyor musunuz?

Mesela Register Read için FC:4 yerine FC:100 göndermek gereken bir cihaz var.
Bu paketi program yazmadan Modbus Poll gibi bir uygulamayla bağlanıp göndermek istiyorum.
 
Standart dışı fonksiyon kodları için imkan veren bir hazır uygulama biliyor musunuz?

Mesela Register Read için FC:4 yerine FC:100 göndermek gereken bir cihaz var.
Bu paketi program yazmadan Modbus Poll gibi bir uygulamayla bağlanıp göndermek istiyorum.
Makro tanımlanabilen seri terminallerin hepsi yapıyor. Yat'ı öneririm
 
Tamamdır. Ben olayı kendime yetecek kadar anladım. Modbus benim için çok uygun değil. Paketler arası bekleme ve paket uzunluk bilgisinin olmaması beğenmediğim yönler oldu.
30 cihaza ayrı ayrı paket basılacak ise master tüm paketler arasında 3.5 bekleme yapacak anladım...
 
hat tın meşgul olmadıgı her an veri basabilirsiniz. bekleme zamanı yok aksine zaman aşımında (3.5T )alımın sıfırlanması var.
 
Peki bir registere değer yazdım. Dönüş cevabı istemiyorum. Böyle bir kullanım var mı? Yoksa illa soru cevap şeklinde mi?
 

Forum istatistikleri

Konular
7,285
Mesajlar
123,215
Üyeler
2,939
Son üye
Cano

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top