21 Eylül 2021, 01:23:51

Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H


Modbus Veri gönderme mantığı

Başlatan secretagent, 11 Kasım 2019, 18:10:01

secretagent

11 Kasım 2019, 18:10:01 Son düzenlenme: 11 Kasım 2019, 18:11:45 secretagent
Merhaba modbusda veri gönderme formu ;
Request
11 03 006B 0003 7687 bu şekilde 
11
The Slave Address (11 hex address17 )
03The Function Code 3 (read Analog Output Holding Registers)
006BThe Data Address of the first register requested.
             ( 
006B hex 107 , + 40001 offset input #40108 )
0003The total number of registers requested. (read 3 registers 40108 to 40110
7687The CRC (cyclic redundancy check) for error checking.
Response

11 03 06 AE41 5652 4340 49AD

11
The Slave Address (11 hex address17 )
03The Function Code 3 (read Analog Output Holding Registers)
06The number of data bytes to follow (3 registers x 2 bytes each 6 bytes)
AE41The contents of register 40108
5652
The contents of register 40109
4340
The contents of register 40110
49AD
The CRC (cyclic redundancy check).

C ile seri porttan veriyi gönderirken bu verileri bir dizi içerisine alıp dizinin elemanlarını belirli bir süre aralıkla tek tek gönderiyoruz doğru mu ?
Bunun sonucunda sormak istediklerim sorular şunlardır:
1-) Verinin gönderimin bittiğini nasıl koda dökeriz.
2-) Diyelim ki seri porttan bu bilgiler bana geldi ve bir buffera aktardım daha sonra içerisinden işime yarayan bölümünü nasıl alıcam....
Bu konuya açıklık getirecek birileri varsa sevinirim.

Yani mantık olarak yapılması gerekli işlemleri koda nasıl dökeceğim bu konuda sıkıntı yaşıyorum.

Tagli

11 Kasım 2019, 21:54:48 #1 Son düzenlenme: 11 Kasım 2019, 21:57:40 Tagli
PicProje Kütüphane bölümünde bir Modbus RTU Slave örneği paylaşmıştım. Bir tane de Fırat'ın paylaştığı kütüphane var. Bu ikisi sana fikir verecektir.

Ekleme: Birkaç gün önce de aynı soruyu soran sen miydin? Yukarıdaki cevabı yazdıktan sonra aklıma geldi. Fırat'ın kodu hakkında bir şey diyemem, ama benim yazdığım kodla ilgili olarak kafana takılan bir şey olursa sormaktan çekinme.
Gökçe Tağlıoğlu

baran123

1) ModBus paketleri karşılıklı olur.
Önce bir veri yazmak için paket yollarsın ve sana bu işlem ile ilgili cevap paketi gelir. Bu gelen pakette her şey yolundaysa işlem tamamlanmıştır.
Bu okuma içinde geçerlidir. Önce "sen bana şu adresleri yolla" şeklinde bir paket yollarsın ardından cevap olarak oda sana "al istediğin adreslerdeki veriler burada" bilgisini yollar.

2) Bu paketleri ayrıştırırken durum makinesi yada başka bir algoritma kullanabilirsin. Bu durum senin programlama becerine kalmış.

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.