Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Dom Inteligentny, rs485 + ?

fafal23 16 Feb 2008 01:50 52747 74
Tespol
  • #1
    fafal23
    Level 12  
    Witam serdecznie!
    Czy udało się komuś rozwiązać problem komunikacji pomiędzy urządzeniami na rs485 z równouprawnieniem?

    Zamierzam zaimplementować w swoim domu kawałek jakiejś sieci (chyba rs485) i zbudować urządzenia komunikujące się pomiędzy sobą. Interesuje mnie komunikacja multimaster.
    Wcześniej coś podobnego już zbudowałem na pracę dyplomową (PLC na '51 z modemami TDA5051 - równouprawnione) i chciałem zrobić coś większego ale tak, żeby było mocno bezawaryjne.

    Dlatego też szukam jakiś sprawdzonych rozwiązań, lub konstruktywnych przemyśleń na ten temat. Może jakieś scalaczki, które cały protokół mają w sobie i wystarczy tylko podać adres odbiorcy i daną a reszta to już ich sprawa?

    Proszę o pomoc!
    Kamery 3D Time of Flight - zastosowania w przemyśle. Darmowe szkolenie 16.12.2021r. g. 10.00 Zarejestruj się
  • Tespol
  • #2
    Xitami
    Level 29  
    Kabelkowe rozwiązania nie są już trendy
    cool jest przezprzewodowo, mnie zigbee się podoba
    chociaż, wygląda, że niebieskie zęby są tańsze istotnie.
  • #3
    fafal23
    Level 12  
    No tak,
    ale jak mam do ceny każdego włącznika do światła
    dodać cenę nadajnika, plus i tak jakiś protokół, czyli jakiś mikrus,
    to ja dziękuje za taki interes
  • #4
    robja
    Level 15  
    Witam,
    Bezprzewodowe systemy nie są "pewne" mają problemy z przechodzeniem przez stropy, mury i kominy i zakłucenia w okolicy. Przy bluetooth max co da się uzyskać do sterowania np z komórki to 10m bez przeszkód po drodze.
    Ja mam w swoim rozwiązaniu inteligentnego domu rs485 jednak nie na zasadzie 1 urządzenie = 1modem rs475. Jest sterownik główny (RoomManager) który ma 24 wyjścia cyfrowe, 12wejść cyfrowych, 8 wejść analogowych oraz obsługę podczerwieni w obie strony. Zapewnia on sterowanie dla pomieszczenia lub całego piętra. Inny sterownik (ExternalManager) załatwia sterowanie roletami, markizami, bramami, itd oraz posiada wbudowaną centralkę alarmową z powiadomieniem sms.
    Trzeci sterownik pozwala sterować Całą kotownią:
    kocioł, kominek z płaszczem i/kub dgp, wentylacją, kolektorami słonecznymi, rekuperatorem, buforem ciepła. Można pod ten system napisać własne "algorytmy wykonawcze" na PC w oparciu o dane stany urządzeń i parametry, w bardzo prosty sposób.
    Dla zainteresowanych - strona producenta www.isys.pl.

    pozdrawiam
  • #5
    Fyszo
    Level 37  
    A bez prądu ... ile to warte?
  • Tespol
  • #6
    Elektrooonik
    Level 29  
    fafal23 wrote:
    No tak,
    ale jak mam do ceny każdego włącznika do światła
    dodać cenę nadajnika, plus i tak jakiś protokół, czyli jakiś mikrus,
    to ja dziękuje za taki interes


    te 20-50zł za elektronike do jednego punktu to duzo? zobacz ceny gotowych rozwiazan np w eib, a co do bezprzewodowych rozwiazan zobaczcie jak to rozwiazal moeller, dane leca od urzadzenia do urzadzenia
  • #8
    kedzi1
    Level 18  
    Witam kolegów.

    Bardzo interesuje mnie ostatnio temat inteligentnych budynków. Jak koledzy sądzą, jaka jest przydatność w takich sieciach Ethernetu? Siec taka mogła by składać się z kilku centralnych sterowników połączonych Ethernetem. No i na jednej sieci mamy sterowanie, zwykły internet i może jeszcze kamery IP. Chciałbym zaprojektować takie sterowniki.
  • #9
    RAPELC
    Level 17  
    fafal23 napisał:
    czy udało się komuś rozwiązać problem komunikacji pomiędzy urządzeniami na rs485 z równouprawnieniem?
    Interesuje mnie komunikacja multimaster.

    Mnie też ten problem interesuje. Stosuje sieć przewodową na skrętce UTP. Uważam że przy nowej instalacji jest to najtaniej i najpewniejsze w działaniu.
    Czy zastosowanie DS9503 jako zabezpieczenie (wewnętrzne rezystory 5 om na obu liniach A i B) transmiterów przy jednoczesnej pracy będzie wystarczające? Ponadto chce zastosować SN75176 (ponoć są odporniejsze i kilkakrotnie tańsze) zamiast MAX485, ponieważ mają w stopniu wyjściowym rezystor 85 om między Vcc a tranzystorem. SN75176 ma udokumentowaną strukturę wewnętrzną, dla MAX485 nie udało mi się znależć jaką budowę ma stopień wyjściowy transmitera.
    Kolizji jednoczesnej pracy transmiterów przy pracy half-duplex chyba się nie uniknie całkowicie przy kilku masterach. Kombinuje jak to ograniczyć, ale co z tego wyjdzie to jeszcze nie wiem.

    Czy ktoś ma jakieś doświadczenie w tym zakresie?


    kedzi1 Ethernet, ale chyba nie do całego sterowania. Chyba za drogo by wyszło. Punktów które system musi kontrolować nazbiera się spora ilość. Tu prawie każda złotówka zaczyna się liczyć.
  • #10
    wd40
    Level 21  
    Logikę prostego i dosyć bezawaryjnego systemu multimaster można "skopiować" z protokołu I2C. Niestety istnieje dosyć spora różnica w najniższej "warstwie" protokołów, więc tak zmodyfikowany RS już raczej nie będzie 485.
    Ciekawym rozwiązaniem jest również pętla prądowa, ale niestety średnio nadaje się do sieci o strukturze gwiazdy (chociaż multimaster raczej właśnie nie będzie miał takiej struktury)
  • #11
    alecki99
    Level 15  
    W urządzeniach EIB stosowana jest transmisja zbliżona do RS-485, jest tam odpowiednio rozwiązany arbitraż dostępu do sieci. Można to potraktować jako pomieszanie I2C ze standardowym RS485, tak jak pisze wd40.

    Uprzedzam głosy, że EIB to za drogie, itd. Ceny systemów EIB nie mają nic wspólnego z zastosowanym tam pomysłem na sprawną komunikację multimaster.
  • #12
    fantom
    Level 31  
    Mozna zastosowac albo rozwiazanie z ethernetu (jesli jest konflikt podczas nadawania wszystkie wezly sie odlaczaja na losowy czas i probuja znowu) albo z CAN-a (priorytetyzacja wiadomosci) a jako warstwe transportowa dac RS485. Ewentualnie zastosowac po prostu CAN-a.
  • #13
    kedzi1
    Level 18  
    Myślałem raczej nad rozwiązaniem gdzie "stacja" z intrfejsem ethernet przypada jedna na duże pomieszczenie lub kilka małych. Z takiej stacji to już kilka krótkich magistral w stylu 1wire i podobnych można wyprowadzic. Ta stacja z ethernetem to na dzień dzisiejszy mikrokontroler z np RTL8019AS lub podobnym scalakiem. Koszt chyba nie jest za wysoki jak na kilka takich stacji (3-5 na średni domek).

    Przy okazji zapytam: Czy istnieje jakiś gotowy soft np na PC który miał by tym koordynowac czy zawsze dłubie się od podstaw?
  • #14
    wd40
    Level 21  
    kedzi1 wrote:
    Ta stacja z ethernetem to na dzień dzisiejszy mikrokontroler z np RTL8019AS lub podobnym scalakiem. Koszt chyba nie jest za wysoki jak na kilka takich stacji (3-5 na średni domek).


    A masz jakieś gotowe rozwiązanie takiej stacji ze stosem TCP/IP
    i jaki jest jego koszt?
  • #15
    alecki99
    Level 15  
    Na przykład moduły IIM7010A Wizneta, dostepne w TME (symbol NM7010...). Raczej nie są prądooszczędne (i znów pół wata :D).

    Zobacz www.wiznet.co.kr
    Chyba gdzieś mam pdf-a do tego, gdybys nie namierzył w necie.
  • #16
    wd40
    Level 21  
    Niestety przydałby sie jakikolwiek kawałek programu by zobaczyć jak to działa, bo na tej stronie to nic nie ma.
  • #17
    alecki99
    Level 15  
    Bawiłem się czymś takim kilka lat temu. Gdzieś jeszcze mam źródłówki w C, sterował tym procesor 32-bitowy DSP (co nie znaczy, że poczciwy 8051 nie pociągnie).
    Moduł trzeba karmić informacjami, które zawarte są w nagłówkach pakietów TCP/IP, trzeba poświęcić sporo pamięci programu na kod do obsługi protokołu (stos TCP/IP już moduł ma w sobie). Zapewne istnieją gotowe biblioteki na co popularniejsze procki.

    Ponieważ już kilka lat upłynęło, to już tak średnio pamiętam szczegóły współpracy z modułem Ethernetowym. Ale wiem na pewno, że zamiast oprogramowywać taki moduł wolałbym opracować protokół multimaster na RS485. Dla mnie komunikacja Ethernetowa jest za bardzo "obrośnięta" adresami, nagłówkami, indeksami, licznikami i takimi tam. Jeśli miałaby być zastosowana tylko do połączenia modułów inteligentnego budynku, to jest to przerost formy nad treścią.

    Jeszcze raz: skrętka jako medium - bardzo dobrze. Ethernet jako protokół - niepotrzebny wypas. I ten moduł tani nie jest.
  • #18
    pidpawel
    Level 26  
    Jak będziesz miał jakieś ciekawe wyniki to daj znać - również się interesuję tym tematem. Swoją realizację prawdopodobnie oprę na rs485, z własnym protokołem. Własny format ramki itp. Arbitraż czy jak to się tam zwie ;) nie wiem jeszcze jak zrealizować. W każdym razie będzie to multimaster.
    Jedna uwaga - planuję zrobić coś takiego,(inne nic w i2c) że jedno urządzenie wysyła ramkę, drugie ją odbiera i nie wysyła od razu odpowiedzi - "mówią" inne, dopiero gdzy dostanie arbitraż będzie mogło odesłać odpowiedź. Nie wiem czy to dobre rozwiązanie, ale chyba ciekawsze ;) W końcu z jakiś powodów ethernet tak chodzi xD
  • #19
    fantom
    Level 31  
    pidpawel wrote:
    Jak będziesz miał jakieś ciekawe wyniki to daj znać - również się interesuję tym tematem. Swoją realizację prawdopodobnie oprę na rs485, z własnym protokołem. Własny format ramki itp. Arbitraż czy jak to się tam zwie ;) nie wiem jeszcze jak zrealizować. W każdym razie będzie to multimaster.
    Jedna uwaga - planuję zrobić coś takiego,(inne nic w i2c) że jedno urządzenie wysyła ramkę, drugie ją odbiera i nie wysyła od razu odpowiedzi - "mówią" inne, dopiero gdzy dostanie arbitraż będzie mogło odesłać odpowiedź. Nie wiem czy to dobre rozwiązanie, ale chyba ciekawsze ;) W końcu z jakiś powodów ethernet tak chodzi xD


    Ethernet nie ma arbitrazu, jest magistrala kolizyjna i jezeli wezel wykrywa kolizje to wylacza sie na przypadkowy odcinek czasu po czym probuje znowu nadawac.
  • #20
    alecki99
    Level 15  
    Pidpawel, zainteresuj się arbitrażem takim jak w systemie LCN albo EIB. Zastosowany w obu przypadkach pomysł na wykrywanie kolizji i arbitraż jest taki, że nie marnuje przepustowości magistrali. Mimo, że medium transmisyjne tu i tu jest wyraźnie inne, parametry elektryczne transmisji też sporo się różnią, to prędkości transmisji są zbliżone - ok. 10kbps. Jak widać, wystarczy do zastosowań typu automatyka domowa. W ethernetowym 100Mbps marnuje się conieco na arbitraż i na to, o czym już wcześniej pisałem.
    Za to ethernetowa skrętka jest tania i jako medium transmisyjne - uważam - super sprawa.
  • #21
    pidpawel
    Level 26  
    Ok - dzięki już się biorę za czytanie ;)
    Pozdrawiam
    Paweł
  • #22
    pidpawel
    Level 26  
    http://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_detection

    Rozumiem, że o ten arbitraż chodzi...
    Tylko mam takie pytanie - jak ja to mam zrealizować - jednoczesne odbieranie i wysyłanie? Jak rozpoznać, że to jednak nie mój sygnał jest na linii? Dodam tylko, że prawdopodobnie zastosuję konwertery rs232>rs485/can Tzn - będę miał uart do tego zapięty i ramka będzie to po prostu ramka jak w rs'ie + zamiast "literek" w ascii będę sobie sam zestawiał wszystko i z tego wyciągnę potrzebne mi dane. Chyba dość mętnie to opisałem, że mam nadzieję, że wiece o co mi biega. Jak coś konkretniej to gg ;)
  • #23
    fantom
    Level 31  
    pidpawel wrote:
    http://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_detection

    Rozumiem, że o ten arbitraż chodzi...
    Tylko mam takie pytanie - jak ja to mam zrealizować - jednoczesne odbieranie i wysyłanie? Jak rozpoznać, że to jednak nie mój sygnał jest na linii? Dodam tylko, że prawdopodobnie zastosuję konwertery rs232>rs485/can Tzn - będę miał uart do tego zapięty i ramka będzie to po prostu ramka jak w rs'ie + zamiast "literek" w ascii będę sobie sam zestawiał wszystko i z tego wyciągnę potrzebne mi dane. Chyba dość mętnie to opisałem, że mam nadzieję, że wiece o co mi biega. Jak coś konkretniej to gg ;)


    RS485 jet magistrala roznicowa oparta tylko na dwoch przewodach na ktorych zarowno nadajesz jak i odbierasz wiec to co wyslesz do konwertera na Tx odbierzesz rowniez z powrotem na Rx bo masz sprzezenie zwrotne i wlasnie w ten sposob wykrywasz kolizje bo porownujesz to co przed chwila wyslales z tym co wlasnie odebrales.
  • #24
    pidpawel
    Level 26  
    Czyli np - wysyłam swój adres i sprawdzam, czy rzeczywiście pojawił się na linii. Jeśli tak to sobie nadaję, jeśli nie to przerywam transmisję i daję innemu mówić, bądź jeśli np wykryję, że mówi coś o wyższym adresie to zacząć mówić samemu tak?
  • #25
    alecki99
    Level 15  
    pidpawel wrote:
    Czyli np - wysyłam swój adres i sprawdzam, czy rzeczywiście pojawił się na linii. Jeśli tak to sobie nadaję, jeśli nie to przerywam transmisję i daję innemu mówić, bądź jeśli np wykryję, że mówi coś o wyższym adresie to zacząć mówić samemu tak?


    Dokładnie. "Coś", który miał wyższy adres usłyszy, że teraz ty nadajesz ze swoim niższym adresem i ten "coś" przestanie nadawać. Ty nadasz cały pakiet bez konieczności odczekiwania czasu.
    W przypadku kiedy "coś" ma niższy adres, ty przestajesz nadawać.
  • #26
    fantom
    Level 31  
    alecki99 wrote:
    pidpawel wrote:
    Czyli np - wysyłam swój adres i sprawdzam, czy rzeczywiście pojawił się na linii. Jeśli tak to sobie nadaję, jeśli nie to przerywam transmisję i daję innemu mówić, bądź jeśli np wykryję, że mówi coś o wyższym adresie to zacząć mówić samemu tak?


    Dokładnie. "Coś", który miał wyższy adres usłyszy, że teraz ty nadajesz ze swoim niższym adresem i ten "coś" przestanie nadawać. Ty nadasz cały pakiet bez konieczności odczekiwania czasu.
    W przypadku kiedy "coś" ma niższy adres, ty przestajesz nadawać.


    Pytanie ode mnie ? Jaki jest stan linii gdy jedno urzadzenie probuje nadawac 1 (a>b) a drugie 0 (b>a) ? Roznicowe napiecie bedzie wowczas 0 niezaleznie ktory stan jest dominujacy a to oznacza ze receiver wykryje...no wlasnie co i ktory odbiornik bedzie wiedzial ze jest "wazniejszy" ? Takie pytanko bo zaczelo mnie to nurtowac.
  • #27
    pidpawel
    Level 26  
    Na to który stan dominujący nie znam odpowiedzi. Ale jeśli chodzi o to drugie to zamierzam zrobić tak, że im niższy numer, tym urządzenie ważniejsze ;) Jak wiemy w miarę rozbudowy dodajemy kolejne "pierdoły" ;)
  • #28
    j3di
    Level 11  
    Polecam lekturę o magistrali CAN.
    Tam nie ma problemów kolizji, a dokładniej jest tam realizowana zasada CSMA z unikaniem kolizji (CSMA/CA).
  • #29
    fantom
    Level 31  
    j3di wrote:
    Polecam lekturę o magistrali CAN.
    Tam nie ma problemów kolizji, a dokładniej jest tam realizowana zasada CSMA z unikaniem kolizji (CSMA/CA).


    fantom wrote:

    Mozna zastosowac albo rozwiazanie z ethernetu (jesli jest konflikt podczas nadawania wszystkie wezly sie odlaczaja na losowy czas i probuja znowu) albo z CAN-a (priorytetyzacja wiadomosci) a jako warstwe transportowa dac RS485. Ewentualnie zastosowac po prostu CAN-a.
  • #30
    shadoweyes
    Level 20  
    Dobrym rozwiązaniem jest implementacja protokołu modbus. Jednak wtedy decydujemy się na to że mamy w sieci urządzenie Master, które jest nadrzędne i kieruje przekazywaniem danych.
    Można zastosować protokół Profibus, ale implementacja jest bardziej skomplikowana. Jeśli ktoś ma biblioteki(komponenty), które można wykorzystać do budowy sieci po RS485, to był bym wdzięczny za udostępnienie. Ja ze swoje strony zamieszczę to co znalazłem o Modbus-ie.

    Dodano po 16 [minuty]:

    Poniżej dokumentacja do Modbusa i biblioteka(komponent) Modlink(demo i trial), niestety u mnie nie chce się zainstalować na Delphi 2005 personal. Może ktoś ma coś działającego i może udostępnić dla celów edukacyjnych i własnych eksperymentów.