MODBUS RTU programı

Başlatan kartal0689, 20 Ekim 2020, 09:29:51

kartal0689

Merhaba arkadaşlar,
modbus rtu protokolü ile çalışan üniteler için bilgisayar programına ihtiyacım var.
ancak durum şöyle, 5 ve daha fazla cihazın verilerini (03 read holding register) aynı anda okumam gerekiyor.
modbuspoll bildiğim kadarıyla bir cihaz sorgusu yapabiliyor.

fahri-

Bildiğim kadarıyla yapabiliyor. File menüden yeni yapınca arka arkaya bağımsız kontrol edilebilen sayfalar açılıyor.

tunayk

Gerçek aynı anda okumak için , PC veya master cihazda her slave için bir seri portun olacak , her port doğrudan ilgili slave'e sorgu gönderip alacak şekilde bağımsız bir thread tarafından koşturulacak ya da @fahri'nin dediği gibi ayrı pencerelerde çalışacaksın.


ErsinErce


Tagli

"Aynı anda" derken buradaki beklenti tam olarak nedir? Modbus master, slave cihazlara sırayla sorgu atar. Yani önce birini sonra diğerini okur. Aynı hatta bulunan cihazlar için tek yol budur.

@tunayk 'ın dediği gibi yapılsa bile, bilgisayarın seri portlarına aynı anda erişip erişemeyeceği tartışma konusu bence. Yapıyı da karmaşıklaştırır. Şahsen ben böyle bir işe girmezdim.

CANopen'da bu sorunu bir SYNC mesajı göndererek çözüyorlar. SYNC tüm slave cihazlar için bir "örnekleme emri" görevi görüyor, yani tüm cihazlar o anki durumun bir "fotoğrafını" çekip saklıyorlar. Bundan sonra verilerin aynı anda gidip gitmemesinin önemi kalmıyor. Eğer Modbus slave cihazları kendin tasarlıyorsan benzer bir yapı kurabilirsin belki. Örneğin 0 adresine gönderilen bir komut tüm slave cihazlar tarafından SYNC olarak algılanacak şekilde tasarlanabilir.
Gökçe Tağlıoğlu

Murat Mert

Modbus Rtu da sıra ile okursunuz. 50-100 ms de bir (10 ms kadar inebilir) slave istasyondan data okursunuz.
mert07

kartal0689

Alıntı yapılan: Tagli - 20 Ekim 2020, 20:13:52"Aynı anda" derken buradaki beklenti tam olarak nedir? Modbus master, slave cihazlara sırayla sorgu atar. Yani önce birini sonra diğerini okur. Aynı hatta bulunan cihazlar için tek yol budur.

@tunayk 'ın dediği gibi yapılsa bile, bilgisayarın seri portlarına aynı anda erişip erişemeyeceği tartışma konusu bence. Yapıyı da karmaşıklaştırır. Şahsen ben böyle bir işe girmezdim.

CANopen'da bu sorunu bir SYNC mesajı göndererek çözüyorlar. SYNC tüm slave cihazlar için bir "örnekleme emri" görevi görüyor, yani tüm cihazlar o anki durumun bir "fotoğrafını" çekip saklıyorlar. Bundan sonra verilerin aynı anda gidip gitmemesinin önemi kalmıyor. Eğer Modbus slave cihazları kendin tasarlıyorsan benzer bir yapı kurabilirsin belki. Örneğin 0 adresine gönderilen bir komut tüm slave cihazlar tarafından SYNC olarak algılanacak şekilde tasarlanabilir.

aynı anda derken sırayla tabiki olabilir. ama ben ID değiştirmeden kendisi sırayla sorgulayacak.
modbuspoll ayrı pencereler açıyor fakat hangi pencere aktifse o hattı sorguluyor.