MODBUS bilen var mı?

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,212
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)>
 
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)>

Paket başına <Özel ID 3 byte><uzunluk 1 byte> eklersem bu hala modbus mıdır?
 
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?
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,984
Mesajlar
102,083
Üyeler
2,516
Son üye
adu33

Son kaynaklar

Son profil mesajları

deneyci wrote on hakan8470's profile.
Sibonge uNkulunkulu ngokuhlukahluka asinike kona.

Bu hangi dil? :)
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
Back
Top