Seri haberleşme+RS-485+MODBUS+ÇOKLU CİHAZ HABERLEŞMESİ

themumy_10

Üye
Katılım
20 Ağu 2013
Mesajlar
38
Puanları
1
Merhaba forumda yeni olduğum için yanlış yere açtıysam özür dilerim. Forumları araştırdım fakat tam olarak istenilen bilgiler yarım olduğu için tam oturtamadığım için yeni bir başlık açtım.
Yapmaya çalıştığım proje şu şekilde bir master ve buna bağlı cihazlarla iletişim kurmak. Örneğin master bir slave'e bilgi soracak ve master isterse yeni bir bilgi göndererek slave'e komut gönderecek.Örneğin ortamın sıcaklığını görüp buna göre yeni bir sıcaklık değeri gönderecek ve ortamda kombi çalışacak. Slave aynı zamanda kendi üzerinden işlem yapılmasına olanak sunacak. Sistem kablo ile çalışacağı için araştırdığım kadarıyla RS-485 kullanmam gerekiyor. MODBUS protokolüde bu cihazla birlikte karşıma çıkan diğer olay. Bu konuda
RS485 (balanced data transmission) hakkında bilgiler | Elektronik Devreler Projeler 320 Volt RS-485 çalışma mantığı ve kodlama kısmında ise
Seri ve RF iletişim Sistemlerinde Master - Slave İlişkisi Üzerine bir Çalışma ETE hocanın Basic dili ile oldukça açıklamalı bir örneği mevcut. Fakat CCS için bu tarz bir örnek bulamadım. CCS için RS485.c Dosyası da tam olarak anlayamadım. MAX-232'den RS-485'den direk çevirildiğinde ise slave veri göndermesi için RS485'in pin bağlantılarından birinin değeri ve master pic'e bağlı RS-485 de veri gelişi için ayarlanması gerekiyor. Bu pin durumları işi çok daha karmaşık hale getiriyor.
CCS Kütüphane Kodları:
int1 rs485_get_message(int* data_ptr, int wait) ////
//// * Get a message from the RS485 bus ////
//// * Address can be 1 - 33. ////
//// * A 1 will be returned if a parity check error occurred. ////
//// ////
//// int1 rs485_send_message(int to, int len, int* data) ////
//// * Send a message over the RS485 bus ////
//// * Inputs: ////
//// to - Destination address ////
//// len - Message length ////
//// *data - Pointer to message ////
//// * Returns TRUE if successful, FALSE if failed ////
//// ////
//// void rs485_wait_for_bus(int1 clrwdt) ////
//// * Wait for the RS485 bus to open. Normally used before ////
//// sending a message to avoid collisions. ////
//// * Pass in TRUE to restart the watch dog timer to prevent ////
//// the device from resetting. ////
//// * This is not needed if sending an immediate response

Sonuç olarak yapılmak istenen mümkünse MODBUS kullanmadan RS-485 ile birden çok PIC ile haberleşme ve veri gönderimini yapmak.Mümkünse RS-485 CCS Driver ile basit olarak bunu tamamlamak istiyorum.
Bu konuda elinde örnek,döküman,,e-book,fikir,link vb. olan arkadaşlar yardımcı olursa çok sevinirim. İlgilenen tüm arkadaşlara teşekkürler.
 
selam bende böyle bir proje üzerindeyim pic programla bölümünde 16f876a ile port çoğaltma devresi başlığı altında devrede ısı sensörü olarak 18b20 kullanıcam tek hattan 10 sensörü okuyacak devre ile ilgi li paylaşımı bitirince yapacağım ilk kartımı yaptım bazı sorunlardan yeniden yapacağım

daha önceden pc ve pic programını yaptığım prof-jemde sadece tek kart üzerinde yaptığım deneme video sunda max 485 kullanmadan max232 üzerinden pc ile haberleşen devre pc den gelen komutları işliyor ve cevap veriyor.
https://www.kontrolkalemi.com/forum.../74339-pc-birden-cok-pic-seri-haberlesme.html

bulduğum bir pc de sanal port oluşturan bir program sayesinde isis de aynı tasarıma ait 10 adet picdevresini pc programı ile çalıştırmayı başardım sanal olarak program ve devre çalışmakta uygulamasını yapmadı.

projeni biraz daha açarsan yardımcı olabilirim

iyi çalışmalar.
 
yapmaya çalıştığım devrede sol taraftaki pic sağdaki pic gibi piclerden verileri istediğinde alacak ve komut gönderebilcek şekilde tasarlamak istiyorum. Ortadaki bir tuşa basınca bir pic diğer tuşla ikinci pic veri gönderiyor.Amaç bu sistemi çoklu olarak yapmak.
 
Moderatör tarafında düzenlendi:
anladığım kadarı ile master olan pic de program yapalım diyelimki eepromuna kayıtlı komutları okuyarak uç işlemcilerden verileri toplayarak karar mekanizması üzerinden uç işlemcilerdeki çıkışlara komut verecek.

örneğin SENSÖR5 25'C ise çıkış 15 aktif değilse pasif olacak

sensör 5 1. kartta olsun çıkış 15 ise 2. kartta

master bu komutu hafızadan okudu ve 1. karttan5.sensör ısı değerini isteyecek
karar doğru yada yanlış olsun 2.kartta komut göndererek çıkışı kontrol edecek.

ben böyle bir proje üzerindeyim sanırım sende böyle bir çalışma üzerindesin

ilk olarak iki karttın üzerinde denemeleri yapmak lazım sadece iletişim protokolü olarak esnek bir kodlama yapmaya çalışmalısın

ben genelde

"***" , başlangıç
"2", alıcı cihaz numarası buradaki "2" niın anlamı aslında 50 olacak
"1",master kart (istemci) numarası
",,,,,,,,,," burada yapmak istediğin işlemler için gerek gördüğün veriler, önemli olan işlemi tanımlayan bir veri
"END" ve nihayet son kesinlikle son byte kullan

yukarıdaki gibi bir protokol yaparım ve verdiğim linkteki projedede aynısını uyguladım eksikleri var olan bir proje oldu ancak çoklu deneme yapmadığım içinde tam olarak çözememiştim.
 
Cevaplarin icin cok tesekkurler oncelike. Yapmaya calistigim biras daha kompleks bir yapi yani slave pic uzerinden kontrol ile de cikis degeri degisebilmesi gerekiyor. Yani bir ev otomasyonu gibi dusunel her oda da bulunan terminalden de isi degeri degisebilmesi gerekiyor. Eger master pic isterse slave de bulunan verileri alip daha sonra isterse degisiklik yapabilmesini istiyorum. Bu yuzden rs485 gerekli diye dusunuyorum ama protokol ve kutuphanesini kullanamiyorum. Senin projende sirali olarak veri istendiginde gerceklestirilebilr saniyorum. Yani verilerin cakismasini onlemek icin ilk slave mesajin sonunda ikinci slave i tetikleyen bir mesaj iletir. Dongu tamamlaninca tekrar ilkten baslar
 
her terminalden erişim yapacaksan master bir aktarıcı gibi çalıştırılır master sadece diğer slave lerin iletişim mini sağlamak için kullan

yada tüm kontrol zaten master üzerinde olacağından kullanıcı erişimi olduğunda mesala oda1 lamba kapat gibi bu veri masterin bu terminale erişimi sırasında terminal tarafından iletilir alınan komut yine master tarafındaan istenilen işlem diğer terminallere öncelikli olarak iletilir.
fabrikada çalışıyorum bu proje ile pek fazla zaman ayıramıyorum robotlu üretim hattında çalışıyorum ve robotla çalışan parça çevirme projesini yaptım hafta sonu çalıştırdık bundan sonra bu hafta sonu giriş çıkış ek kart tını yapacağım haftayada bir terminal daha yapacağım ozaman yazılım denemesine başlayıp denemelerimi başlıyacağım sana yardımcı olmak isterim fakat c bilmiyorum

iyi çalışmalar
 
İlgin icin cok tesekkur ederim sanirim demel istedigini anladim biraz farkli projeler gibi ama verdigin bilgiler biraz daha sekilendirmemi sagladi ama su rs-485 kullanma zorunlulugundan (mesafe+slave sayisi ) dolayi ccs de rs 485 ornegi dokumani bilgisi olan arkadaslardan yardim bekliyorum bende diger dilleri pek bilmedigim icin senin yardimlarindan faydalanamadim cok sagolasin gercekten Allah razi olsun dusuncelerin verdigin fikirlerindem dolayi ccs bilen arkadaslardan yardimlarini bekliyorum

Sent from my GT-I9300 using KontrolKalemi.Com Forumu mobile app
 
Akıllı ev sistemlerinde sadece ısı kontrolü olmayacağı ve oldukça dinamik bir süreç işleyeceği için RTOS konusunu incelemelisiniz.
Muhtemelen yaşayacağınız en büyük sorun ise;
Partner/bayi ağında yer alan 3. kişilerin kodlara erişimi olmaksızın configurasyonu değiştirebilmesi olacak. Kuracağınız yapı FSM(Finite State Machine) yapısında olmalı ve harici konfigurasyonları desteklemelidir.
Durum mekanizmaları 3. kişiler tarafından değiştirileceği için bu durum çok önemli. Yolun başında iken bunu göz önüne almalısınız...
Aksi durumda, algoritmalarınız ve protokolleriniz çok fazla versiyona sahip olacaktır ve bu size ciddi bir maliyet ve zaman kaybı olarak dönecektir.
 
İlginiz icin tesekkur ederim bahsettiginiz konuyu inceleyecegim ayrica verdiginiz tavsiyeyi dusunmemistim ayrica tesekkur

Sent from my GT-I9300 using KontrolKalemi.Com Forumu mobile app
 
Rs- 485 kullanan arkadas varsa yardimci olabilir mi

Sent from my GT-I9300 using KontrolKalemi.Com Forumu mobile app
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…