Jump to content
yeris

MODBUS RS485 Okuma hk.

Önerilen İletiler

Merhabalar;

1. PLC'den Modbus Master kısmını aktif edin.

2. Haberleştiğiniz cihazın haberleşme ayarlarını doğru girdiğinizden emin olun.(Baudrate,Databit vs.)

3. Modbus Pool'dan okuduğunuz değere 40001 ekleyin. (Örn: Register adresinizin Decimal değeri 210 ise PLC programında 40211 yazmalısınız.)

4. Cihazınızın ID değerinin PLC ile uyumlu olduğuna emin olun. 

5. PLC üzerinde okuduğunuz Değişken ismini belirleyin.

 

İyi Çalışmalar

Kolay Gelsin

 

 

 

oku.PNG

Yorum bağlantısı
Sitelerde Paylaş

Merhaba,

Okumak istediğim adresler 30002 , 30008 , 30012.

30008 i okumak için double word seçtim fakat integer olarak görünüyor. (Sorunum bu olabilir) 

Aldığım değerler sayaç değerlerini karşılamıyor. örneğin 4824.539 gibi bir değere ulaşmam gerekiyor.

Teşekkürler

image.thumb.png.900708e2ee843e88da672d66d98b40de.png

 

 

 

image.png

image.png

Yorum bağlantısı
Sitelerde Paylaş

Merhaba, 

ModbusPoll için Double BADCFEHG seçerseniz sorununuz çözülecektir.

K30008 ismi verdiğiniz yerler veri durumunu gösterir. Veri okundu mu, timeout hatası ya da crc hatası olup olmadığını yani kısacası veri düzgün bir şekilde okundu mu okunmadı mı size bunu söyler. PLC adresi ise o verilerin yani 30008 olarak eklediğiniz registerın PLC'deki adress etiketidir. yani pv2_4 isimli etiketi kullanmanız lazım, eğer gene integer sorunu yaşıyorsanız ki yaşayacaksınız, Double Word olarak aldığınız değeri kendi oluşturduğunuz Real bir registera atarsanız otomatik 4 bytelık ondalıklı sayıya(Float)'a çevirecektir. 

Yorum bağlantısı
Sitelerde Paylaş

yeris, 21.09.2020 - 14:30 yazdı:

Merhaba , 

S1,S2,S3,S4 değerlerine ulaştım. 

S1,S2,S3,S4 değerlerini birleştirip double'a nasıl çevirebilirim. Yardımcı olur musunuz ? 

image.png.830cf7be3015b89cee229f5000497bed.png

image.png.8a664def333b88ac462ee0cb36f880a6.png

 

image.png.9213f2be19e2a1a63248e6b24a01f1b3.png

 

Birleştirmekten kastınız tam olarak nedir? Her bir değişken word yani iki bytetan oluşuyorsa 4 değişken 8 byte yapar. Double değişken tipi 8 bytettır ama plc de sadece float yani 4 bytelık real sayı tanımlayabilirsiniz. Tam olarak yapmaya çalıştığınızı anlatırsanız belki daha net bir cevap verebilirim. 

Yorum bağlantısı
Sitelerde Paylaş

yeris, 26 dakika önce yazdı:

Tam olarak yapmaya çalıştığım şey 4943,530 değerine ulaşmak.  Float , int , long değerlerine bir şekilde ulaştım. fakat double olarak okuyamadım. 

PLC tarafında double olarak yapamazsınız, double sayının bytetan çevrilmesi ile float'un byte'dan çevrilmesi farklı bir hesaplama gerektirir.  PLC 'de sadece 4 byte'lık bir float değişken tanımlayabilirsiniz ki ulaşmaya çalıştığınız sayı float olarak yani 4 byte ile gösterilebilecek bir sayı ulaşmak istediğiniz değere byteları yan yana koyarak mı yoksa matematiksel hesaplama ile mi erişmek istiyorsunuz yani önceki sorum hala geçerli Birleştirmekten kastınız tam olarak nedir? matematiksel hesaplama ise her bir 2 bytelık ya da 4 bytelık değişkeni real(float) bir registera atıp ordan float olarak kullanabilirsiniz.  Otomatik çevirme yapmış olursunuz ya da c makro yazıp deneyebilirsiniz. Tam olarak yapmaya çalıştığınızı hala anlamadım açıkçası o yüzden sadece fikir yürütüyorum.

Yorum bağlantısı
Sitelerde Paylaş

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Misafir
Bu konuyu yanıtla

×   Yapıştırdığınız içerik biçimlendirme içeriyor.   Biçimlendirmeyi Temizle

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Önceki içeriğiniz geri yüklendi.   Editör içeriğini temizle

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Yeni Oluştur...