c# modbus rtu

osmancns

Üye
Katılım
11 Ara 2012
Mesajlar
35
Puanları
1
Yaş
32
merhaba arkadaşlar c# ile modbus ascii protokolü üzerinden plc ile haberleşiyorum ancak bunu modbus RTU ile yapmam gerekiyor. rtu protokolünün ayrıntılarını biliyorum ancak bunu c# ' a nasıl uyarlıycam anlıyamadım. yani örneğin her mesaj arasında 3.5 karakter süresi olucak binary türünde olucak falan bunları nasıl yapıcam işin içinden çıkamadım. elinde örnek bir program veya yardımcı olabilecek olan varmı ?
 
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
örneğin modbus ascii de şu şekilde gönderiyorum :

string port_veri;
port veri =":01050500FF00F6\r\n" ; // örnek bir modbus ascii protokol mesaj pakedi

serialPort1.Open();
serialPort1.WriteLine(port_veri);

serialPort1.Close();

yani bu işleri modbus rtu ya nasıl çevirebiliriz ?
 
her datanın arasına "\x" eklersen örnek: "\x01\x03\x31\x04\x00\x04\x0B\x34" olur.
yanlız modbus komut değerlerine : okuma/yazma/aktif etme vs dikkat et..
Şayet 32 bit data yazacaksan crc kodunda 32 bit olacak.
Cr ve line feed mesaj içeriğinde bulunmayacak.
 
hocam yani ;
port veri ="\x01\x03\x31\x04\x00\x04\x0B\x34";
serialPort1.Open();
serialPort1.WriteLine(port_veri);

serialPort1.Close();

yazmam yeterli olurmu ??
peki 32 bit mi 16 bit mi yazdığımı nasıl anlıyabilirim ?
 
yazdığın adres veya okuduğun adres 32 bit ise crc kodu da her iki gurup için (lsb msb) ayrı yazman gerekir.
gönderdiğin verinin düşük bitlerinin doğrulama kodu // gönderdiğin verinin yüksek bitlerinin doğrulama kodu gibi
pek lazım olacağını zannetmiyorum. Plc ye ayrı ayrı yazıp ayrı ayrı okuyabilirsin...
 
16 bit signed = -32.768 dan 32.767 ye kadar
16 bit unsigned= 0-65.535 e kadar
32 bit signed = 2.147.483.648 den 2.147.483.67 ye kadar
32 bit unsigned = 0 dan 4.294.967.295 e kadar olan değerlerdir.
 
anladım hocam
peki tek sorunum ben bu yapıyı c# ile nasıl oluştururum yani diyelim örnek crc kodu hazır bir paket göndericem yan şöyle yazmam yeterlimi ?

port veri ="\x01\x03\x31\x04\x00\x04\x0B\x34";
serialPort1.Open();
serialPort1.WriteLine(port_veri);

serialPort1.Close();

 

Forum istatistikleri

Konular
128,457
Mesajlar
917,741
Kullanıcılar
450,399
Son üye
furkaaancaliss

Yeni konular

Geri
Üst