RS485 MASTER SLAVE ADRESLEME YARDIM. ÇOK ACİLL

Başlatan centrio55, 17 Aralık 2014, 12:07:14

centrio55

Merhaba arkadaşlar.
Ben bir bitirme projesi üzerine uğraşıyorum. Bu projede rs485 seri iletişim ile modbus rtu sistemi yaratmam gerekiyor.
projede 3 adet slave cihazım var ve master olarak pc kullanacağım. pc'de bu sistemi visual c# ile yöneteceğim.
mplab'da c ile rs485 kodlarını yazdım. önce tek tek cihazları bilgisayara bağlayarak sistemin doğru çalıştığından emin olmak istedim
max485 entegresinin RI ve DI bağlantılarını RX ve TX e yaptım. ayriyetten RE ve DE pinlerini de birleştirerek pic'in bir bacağına verdim. RE ve DE yi pic'den pc'ye veri gönderirken 1, PC'den pic'e veri gönderirken sıfır yapıyorum.

problem şu:
ilk olarak seri iletişim kodlarım doğru olmasına rağmen pic'den pc'ye veri gönderidiğimde anlamsız ifadeler çıktı ekranda. pc'den pic'e veri gönderimi hiç gerçekleşmedi. devremi internetteki bir çok devreye benzeterek yaptım.

diğer problem ise mplab'da c dilinde adresleme için nasıl bir yol izlemem gerek. bir çok kod inceledim ama hiç biri bana yardımcı olmaya yetmedi.

bilen bir arkadaşım varsa bana yardımcı olursa sevinirim.

iyi günler.

Kabil ATICI

Önce araya 485 koymadan RS232 üzerinden picler ise  iletişimi kurduğunu onayla. Yani Seri portun çalışılyor mu test et. muhtemelen baud hızları arasında bir fark var.

Baud hızını yüksek tutma. Kullandığın entegrenin veri kağıtlarını ince.

RS485 hatları üzerindeki sonlandırma direncini unutma.

Yazdıklarınla ancak bu kadar yardım olur. Şema , kod, resim eklersen daha fazla kişi yardımcı olabilir.

Elektroniğin dilini biliyorsun... Şema
ambar7

SBTECH

eğer modbus olacaksa , ccs c nin hazır kütüphanesi var onu kullanman daha kolay olabilir , ha mplab dediğin xc8 derleyicisi için hazır bir modbus kodu var ise bir yerlerde o da denenebilir. donanımsal kısımla ilgili olarak direk rs485 den test yapabilirsin bence önce bi kaç karakter at bir terminal programıyla pic e doğru , eğer onu doğru şekilde alabilirsen gerisi gelir zaten.

mplabda c dilinde adresleme derken neden bahsettiğini tam anlamadım . mesela 01 03 ... ile başlayan bir modbus frame i adresi bir olan cihazdan multiple register okuma request frame idir. bunu bir cihaza gönderirsen eğer adresi 1 ise istediğin cevabı geri döner , adres ona ait değilse ait olmadığına ait bir değer dönüyordu sanırım bu konuda tam emin değilim.

sanırım daha modbus ne ne yapar vb vb detaylarda bazı sıkıntılarınız var daha detaylı yazarsanız yardım alma ihtimaliniz artacak sanıyorum ki
Elektronik ilimdir..

selimkoc

MikroC ile RS-485 Animasyonu

RS-485 Uygulaması

Yukarıdaki çalışmaları mikroc ile yapmıştım. Belki faydası olur. Başarılar...

centrio55

herkese cevapları için çok teşekkür ederim.

Modbus yapısını biliyorum ama genelde modbus ile ilgili  gördüğüm örnekler modbus tcp/ıp ile ilgili. yani ethernet üzerinden bağlantıyla lakalı.
benim takıldığım nokta şu, mikroişlemcide c dilinde spı ve ı2c kullanmadan nasıl yaparız diye düşündüm. ama en mantıklısı zannedersem cihazlara düz mantık ile ID verip mesela slave 1 için 1 verip seri porttan gelen verinin başında 1 varsa slave 1'in alması zannedersem.

şemayı de ekleyeceğim.