Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: secretagent - 11 Kasım 2019, 15:10:01

Başlık: Modbus Veri gönderme mantığı
Gönderen: secretagent - 11 Kasım 2019, 15:10:01
Merhaba modbusda veri gönderme formu ;
Request
11 03 006B 0003 7687 bu şekilde
11: The Slave Address (11 hex = address17 )
03: The Function Code 3 (read Analog Output Holding Registers)
006B: The Data Address of the first register requested.
             ( 006B hex = 107 , + 40001 offset = input #40108 )
0003: The total number of registers requested. (read 3 registers 40108 to 40110)
7687: The CRC (cyclic redundancy check) for error checking.
Response

11 03 06 AE41 5652 4340 49AD

11: The Slave Address (11 hex = address17 )
03: The Function Code 3 (read Analog Output Holding Registers)
06: The number of data bytes to follow (3 registers x 2 bytes each = 6 bytes)
AE41: The 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.
Başlık: Ynt: Modbus Veri gönderme mantığı
Gönderen: Tagli - 11 Kasım 2019, 18:54:48
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.
Başlık: Ynt: Modbus Veri gönderme mantığı
Gönderen: baran123 - 11 Kasım 2019, 19:59:08
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ış.