Elektroda.pl
Elektroda.pl
X
SterControl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

RS485 --> 256 urządzeń

21 Kwi 2005 08:05 13941 22
  • Poziom 29  
    Witam...

    Mam taki problem. Muszę wykonać układ (rozdzielacz) komunikujący się narazie z 60 a docelowo ponad 200 urządzeniami przez dwukierunkowy interfejs rs485 half-duplex.

    Jak wiadomo na jednej magistrali może pracować do 32 odbiorników max!

    jak to wykonać... ?

    Transmisja PC <--> URZĄDZENIA będzie następująca:

    1. PC ustawia rs485 na nadawanie (urządzenia na odbiór)
    2. PC wysyła na magistralę adres (1bajt) urządzenia
    3. PC ustawia rs485 na odbiór
    4. URZĄDZENIE o odpowiednim adresie ustawia rs485 na nadawanie
    5. URZĄDZENIE o odpowiednim adresie wysyła daną (1bajt)
    6. URZĄDZENIE przełącza się na odbiór

    Prędkość transmisji jest nieistotna i może być bardzo mała...

    Interesuje mnie przejściówka z jednej lini rs485 z PC na np. 8 lini rs485 po stronie urządzeń (po 32 na jednej lini) czy mogę ją zrobić używając samych konwerterów rs485?
    Po stronie transmisji z PC mogę zastosować w razie potrzeby Full-Duplex (2pary przewodów)

    odległość transmisji do ok.100m

    Dodano po 8 [minuty]:

    r o z d z i e l a c z <----------> 485/232 PC
    I I I I I I I I
    I I I I I I I I
    8 LINI HALF-DUPLEX RS485


    kierunek transmisji rozdzielacza oraz konwertera 232/485PC będzie ustawiany z PC wolnym wyjściem na RS232.
  • SterControl
  • Poziom 19  
    Hmmmm....
    1.Są układy 485 pozwalające na pracę do 128 odbiorników/nadajników w jednej sieci.
    2. Co do przełącznia kierunku. Typowe konwertery 232 na 485 jakie są w sprzedaży są konweterami z automatycznym przełączaniem. Co to znaczy? Typowo konwerter nastawiony jest na odbiór ze stony sieci 485 do strony 232. W ten sposób każdy sygnał pojawiający się asynchronicznie na sieci 485 jest automatycznie konwetowany na 232. Ale typowo w sieci 485 nie powinno się nic pojawić, zanim nie nastąpi wysłanie zapytania. W momencie, kiedy konwerter wykryje początek nadawania na linii 232 (od strony PC) automatycznie przestawia się na nadawanie i wprowadza do linii485 wszystko, co zostaje nadane przez 232. Powrotne przełączenie do stanu odbioru (nasłuchiwania) następuje po pewnym czasie - z zasady ten czas równy jest czasowi trwania nadwania około 3 bajtów (a więc zależy od prędkości transmisji).
    3. UWAGA: w liniach 485 (zresztą podobnie jak w innych) mogą pojawić sie zakłócenia transmisji i błędny odbiór. Należy wprowadzić dodatkowy mechanizm kontroli nadawania, np. w postaci sumy kontrolnej.
    I to w zasadzie wszystko.... Doszliśmy w ten sposób do przemysłowego standardu ModBus. Proponuję zaimplementować ten standard. Może jak się mu przyjżeć, to na początku wygląda trochę skomplikowanie. Ale zapewnia naprawdę rozwiązanie wszelkich problemów transmisji danych między jednym MASTER-em a wieloma SLAVE-ami. Warto się z tym zapoznać.
    Acha - co do ilości odbiorników. Typowo sieć RS485 tworzy się NIE gwiazdziście, ale liniowo. Tzn. wszystkie odbiorniki znajdują się jak paciorki nanizane na jeden sznurek. A na końcach tego sznurka MUSZĄ zanleżć się terminatory linii (oporniki ok.120Ohm).
    Aby zwiększyć liczbę odbiorników ponad 32 lub ponad 128, stosuje sie tzw. repeat-ery ("ripitery"). Jest to urządzonko podobne do konwertera 232/485, które jednak z dwu stron na interface 485. Jest tak jakby pośrednim wzmacniaczem sygnału 485 na 485.
    Cały układ sieci wygląda tak (zakładając, że mamy układy 485 dopuszczjące 128 scalaków w jednej sieci):
    PC - (konwerter 232-485) ------126x (Slave 485) -----(repeater) ----126x(Slave 485) ----(repeater) ----126x() ---....... i tak dalej

    W ten sposób mamy w jednej "podsieci" 128 urządzeń (konwerter 232/485 + 126 Slave + 1 repeater) Każdy repeater rozdziela podsieci i w każdej może być max liczba urządzen, jaką dopuszczają zastosowane scalaczki 485

    Niestety, zastosowanie wielu urządzeń SLAVE w sieci powoduje, że obsługa sieci np. 200 urządzeń zająć może do kilkunastu a nawet więcej sekund.

    Acha - w każdej podsieci muszą być terminatory linii na każdym jej końcu.

    Pozdrawiam
  • Poziom 29  
    Dzięki...

    a jakie scalaki pozwalają na podłączenie 128 urządzeń ??? Gdzie znajdę konwerter taki "automatyczny" RS232--485 ?
  • Poziom 17  
    Na stronie: www.rs485.com masz tego trochę, sam tego używam w swoich projektach, proponuję układ z 74AC14, bo jest właśnie tym automatycznym, co do rozwiązania więcej niż 200 urządzeń, to rzeczywiście staje się to trochę mulaste, i proponuję układy z separacją optyczną, dla tych co wiedzą do czego to służy, to nie muszę tłumaczyć o co biega, są też tam repeter'y, co do adresowania więcej niż 256 urządzeń to można dać adres dwubajtowy i jest o wiele więcej możliwości, ale mulaste się to staje, może daj kilka portów RS232, też alternatywa, pisząc program na PC biorę to pod uwagę, pytanie do kolegi: Witgol, może ma coś wiecej na temat Modbus, bo jakoś nie mam szczęścia na temat poszukiwań w tym temacie, jeśli nie chcesz tego dawać na forum to może na priva, może być wszystko co masz gdyby się pokryło z moim co mam, to już mniej, pozdrawiam...
  • Pomocny post
    Poziom 19  
    np. MAX487 pozwala na pracę 128 urządzeń w jednej sieci. Funkcjonalnie jest odpowiednikiem np. typowego 75176. Co prawda nieco wolniejszy, bo dopuszcza pracę z max. częstotliwością transmisji 250kHz, bo ma wmontowane na dokładkę wewnętrzne układy zwiększające odporności na zakłócenia (ale czy 250kHz to za mało?). Nie tylko Maxim robi takie układy. Inne firmy też produkują tego typu scalaczki.

    Co do konwetrera - są w ofercie wielu firm handlujących urządzeniami automatyki przemysłowej. I to najróżniejsze. Żaden problem wpisać w wyszukiwaczkę i znaleźć coś takiego. (ale są różnej jakości, niestety...) Ostatnio spodobała mi się propozycja konwertera USB na RS485. Złożone na PC sterowniki od tego urządzonka zakładają dodatkowe porty RS symulowane na USB. Całość świetnie chula, nie zajmując portu RS232 - zresztą i tak go już często nie ma w nowszych laptopach. Ma oczywiście automatyczne przełączanie kierunku. I nie potrzebuje żadnego dodatkowego zasilania i na dokładkę jest separowane galwanicznie od PC. (coś takiego jest w ofercie firmy Simex z Gdańska, nazywa się chyba SRS-U/4-Z45 z izolacją i tańszy SRS-U/4 -Z24 bez izolacji -> przepraszam, jak coś namieszałem z nazwami).
    Pozdrawiam

    Dodano po 47 [minuty]:

    --> koval_s
    Szybkość pobierania informacji z bardzo dużych sieci ModBus faktycznie nie jest duża. Ale nie aż tak krytyczna. Dal sieci ok. 200 urządzeń czas pobrania informacji ze wszystkich to ok.3-5 sek. (oczywiście musi zostać użyty standard ModBus RTU, bo DP się nie wyrobi - zresztą i tak w automatyce przemysłowej głównie jest implementowany tylko RTU). Czy to dużo? Czasem za dużo, jeżeli są to dane dla procesu sterowania. Ale aż nadto, jak zbierane są dane np. dla monitoringu.

    Co do materiałów....No, sam nie wiem..... spędziłem kiedyś spoooooro czasu na szukanie wszelkich informacji.... i tak łatwo otwierać drogę konkurencji???
    Ale niech będzie. W sumie to informacja, która powinna powinna być znana większości elektroników. I to chyba jako podstawowa dla wszystkich bawiących się transmisją szeregową na bazie RS485....
    Po pierwsze polecam zaznajomienie sie z tematem. Podstawowe informacje warto poczytać w książce o tytule bodajże "Interfejsy szeregowe" albo coś takiego (dawno to już było...). Nie za gruba, nie za duża. Dużo informacji o różnych standardach, między innymi podstawowe wiadomości o ModBusie, zarówno ModBusie DP jak i ModBusie RTU.
    Natomiast biblią musi być już opis samego standardu i to szczegółowy.
    Nawiasem mówiąc standard jest tak rozbudowany, że nie spotkałem jeszcze urządzonka które miałoby implementowaną całość. Bo i po co? ModBus jest tak przygotowany, że można spokojnie zaimplementować tylko część rozkazów - sam zresztą tak robię.
    Co do prowizji za pobranie - chmmm. Najpierw chciałem ustawić to wysoko. Ale - dla dobra polskiej elektroniki - niech będę nieco w sprzeczności sam ze sobą. Spora czasu trwało dotarcie do niego. Faktem jednak jest, że plik jest powszechnie dostępny w internecie! Ale jeżeli ktoś naprawdę z niego skorzysta, to NIE POGNIEWAM SIĘ ZA DAROWANIE punktów....
    Oto plik będący BIBLIĄ dla wszystkich, którzy chcą mieć doczynienia z ModBsem w pełni profesjonalnie. UWAGA: dla wszystkich, którzy nie wiedzą, co to jest i jaka jest różnica między DP a RTU, proponuję jednak najpierw poszukanie i poczytanie wspomnianej książki. Załączony plik to już zbyt dużo szczegółów dla osób nie wtajemniczonych. No i oczywiście po angielsku....
    Pozdrawiam
  • SterControl
  • Poziom 29  
    Dzieki wielkie!

    Ten MAX487 jest super - już zamówiłem.

    Dodam tylko że mi potrzebna jest transmisja ok.500 bajtów na 5 minut czyli chyba nie za szybko :-) pozdrawiam.
  • Poziom 17  
    Panie: Witgol, rzeczywiście ten plik już miałem, lecz szukam dalej, może coś więcej się znajdzie, co do książek, to również polecam tą książkę co Pan mówił, mam jeszcze inne, ale w nich to raczej mało co do szczegółów, tylko opis architektury rozwiązania jakiegoś prostego problemu, prędkość w tej chwili to jak Pan pisał, kilka sekund, i jak Pan się wyraził jest to w rzeczy samej monitoring, więc się wyrabia, dałem trochę dłuższe pakiety "na zapas", ale chciałem wskoczyć na MODBUS-RTU, tak trochę bardziej profesjonalnie, jadnak dziękuję za chęci pomocy, a co do Pana: prokopcio, to nie musi się pan fatygować aż na MODBUS..., wystarczy jakaś implemantacja własnago protokołu, ale proszę pamiętać o sumie kontrolnej, osobiście na wszelki wypadek dałem CRC32, na początku miałem zwykłą sumę modulo 256 i błędów było tak mało, że nawet nizauważalne, mówię oczywiście o mocno zakłóconym środowisku, gdzie brak było lini PE w zakładzie i przejście między budynkami na powietrzu do biura i takie tam w sumi około 500m na dzień dzisiejszy, pozdrawiam...
  • Poziom 19  
    --> koval_s
    Praktycznie od samego prawie początku stosuję tylko RTU. Ze względu na ściśle określone zależności czasowe - troszkę trudniej (niż DP) go opanować w procesorze, ale jak ktoś dobrze przemyśli przerwania systemowe i opanuje czasy procedur (ciężko to zrobić w C), to raczej nie ma problemu. Znacząco gorzej jest budować oprogramowanie w PC - w szczególności w Windowsach, które wtrącają sie wszędzie i bez pardonu. Jak się tego nie opanuje, to jeśli wielowętkowość Windowsów wprowadzi przerwę w transmisji chciażby ze 2ms (oczywiście w zależności od szybkości transmisji - czasami musieliśmy puszczać pełną szybkość 115kB) to praktycznie ramki transmisyjnej ModBus RTU nie ma i można pożegnać sie z transmisją....


    A tak tylko informacyjnie dla wszystkich, którzy bawią się w wielourządzeniowe sieci ModBus-owe. Wykonywaliśmy już sieci o ponad 240 modułach SLAVE, gdzie wymagany czas odpytywania był mocno zlimitowany: do MAKSIMUM 2 sekund. Przy czym ze względu na rozprzestrzenienie sieci, nie można było wprowadzić większej szybkości, niż 9600. Jeśłi się zna protokuł ModBus RTU, to można obliczyć, że dostęp do każdego pomiaru w pojedynczej sieci wynosiłby:
    240 x 20-40ms (przy 9600, na jedno zapytanie+odpowiedź) ~ 5 - 10sekund!!!
    I to jeżeli urządzenia odpowiadaja prawie natychmiast i pewni jesteśmy, że nie występują w sieci ŻADNE timeout-y spowodowane błędami.
    Udało się nam bez problemu zejść do około 1 sekundy - ale nie szybkością transmisji. Należy zastosować koncentratory i podzielić całość na np. 5-6 podsieci po 40-50 urządzeń. Każdą podsieć odpytuje koncentrator i gromadzi pomiary w sobie. Od drugiej strony koncenteratora podpięty jest system Master, odpytujący każdy koncentrator o pomiary w jego podsieci. Ale wyłącznie stosując odpytania i odpowiedzi WIELOREJESTROWE. W ten sposób w jednym pakiecie wysyłane są wszystkie dane z podsieci. Master widzi więc 5-6 urządzeń wielorejestrowych. W ten sposób zapytanie o 240 pomiarów odbywa się za pomocą 5-6 ramek wielorejestrowych. Jakby było tego mało, to warto zauważyć, że stosując dodatkowe koncentratory możemy utworzyć nietypową dla ModBus-a sieć gwiaździstą.....

    No to tyle. Serdecznie pozdrawiam wszystkich bawiących się ModBusem.
  • Poziom 12  
    nie wiem czy jeszcze aktualne. Ale dla innych. ja poleciłbym protokół DMX-512 używany do sterowania urządzeń scenicznych i mogący ich obsłużyć do 512
  • Poziom 19  
    Dla zgłaszającego temat problem nie był w rzeczywistości w ograniczeniu adresowania przy danej ilości urządzeń, (np. rozszerzenie Modbasa może mieć adresowanie 2-bajtowe!) ale w topologii połączeń i zastosowaniu odpowiednich układów.
    Ja przyznam sie szczerze, nie zajmowałem się standardem DMX, ale chyba najwyższy czas coś sobie poczytać...
    Pozdrawiam
  • Poziom 29  
    Ja nie pytałem o adresowanie bo to nie problem tylko o sprzęt ... MAX487 rozwiązał problem.

    Pozdrawiam.
  • Poziom 15  
    Dodam tylko, że są też układy, które umożliwiają podpięcie 256 nadajników/odbiorników do jednej magistrali RS485. Przykładem może być MAX3072.
  • Poziom 14  
    Witam
    chcę se zrobić taką MAŁĄ sieć w domku typu zdalne sterowanie akwarium , oświetleniem , oraz ogrzewaniem w domu.
    siec typu master - slave oparta na rs485 ciut mi tu nie pasuje bo chciałbym w kilku punktach w domu zrobić takie centralki sterujące.
    i tu mam problem - z kolizją pakietów.
    zastanawiam sie nad dodatkowym przewodem obok pary RS który sfinalizował by nadawanie pakietu.
    działało by to w ten sposób ze sterownik gdy chciał by coś nadać sprawdzał by stan tej linii , jeśli była by wolna to ustawiał by na niej stan wysoki i wtedy nadawał pakiet danych.
  • Poziom 19  
    ->eros81
    Jeżeli pozostaniemy w sieci typu Modbus, to faktycznie nie bardzo nadaje się ona do wielomasterowości (chociaż stosując niewielkie modyfikacje uruchamialiśmy sieci 2-3 masterowe, gdzie krytyczna była szybość obsługi sieci).
    Jednak w sieci typu 'domowa centralka-punkty wykonawcze' nie potrzeba wymyślać sobie schodów. Nie jest tutaj problemem szybkość transmisji - więc po co dodatkowe linie weryfikacji dostępu? Przecież i tak nie zapobiegną konfliktowi na łączu, jeżeli zdaży się jednoczesna próba transmisji, po jednoczesnym wykryciu wolnej lini dodatkowej (przypadek możliwy, choć mało prawdopodobny).
    A tutaj wystarczy mała przebudowa logiczna sieci!
    Należy stworzyć sieć składającą się jedak z wyłącznie JEDNEGO mastera. Jak? Zaraz się okaże, że to jest bardzo proste.
    W sieci są oczywiste punkty slave-owe: punty świetlne, grzejniki itp. Tu nie ma co dyskutować. Jedna zamienić należy centralki sterujące na slave-y. No dobrze, a jak tym wszystkim sterować? Otóz należy dodać w sieci JEDEN dodatkowy punkt - właśnie tego jednego, zarządzającego Mastera. Może być bez klawiatury, bez wyświetlacza itp. No to co on ma robić? Ano - zbierać informację ze slave-ów, gromadzić ją, i rozsyłać po sieci do opowiednich slave-ów.
    Przykładowo:
    Mamy w sieci 10 typowych slave_ów oraz np. trzy centraki sterowania, tutaj też slave-owe. Master zbiera informację z odpowiednich rejestrów centralek (gdzie odpowiednie rejestry mogą odpowiadać opowiednim urządzeniom slave-owym w sieci) i wysyłać je do wykonania. Zebrane rozkazy ze slave-a pierwszego (centralki pierwszej) master odbiera i rozsyła po sieci. Potem odbiera dane z centralki drugiej i rozsyła, i tak dalej. Jasne?
    Oczywiście nie rozwiązuje to problemu wydawanych sprzecznych rozkazów - jednocześnie do tego samego urządzenia z różnych punktów sterowania. Ale to jest problem występujący zawsze przy wielu punktach wydawania rozkazów, nie tyko w elektronice...

    Serecznie pozdrawiam
  • Poziom 14  
    Dzięki Witgol.
    tak sie zastanawiam tylko czy w ten sposób nie będę generował zbędnego ruchu w sieci, w końcu ten master będzie musieć "odpytywać" slave-y z rozsądna częstotliwością. albo jak w ten sposób zrealizować wyświetlanie stanu dajmy na to 10 czujników na dwóch "centralkach" slave-owych?
  • Poziom 19  
    Zauważ, że zastosowanie np. czterech masterów w sieci spowoduje, że każda z czujek będzie musiała być odpytana osobno przez każdy z masterów. BARDZO dużo nadmiarowego ruchu w sieci (o ile oczywiście stworzyłbyś przedtym sieć wielomasterową).
    Dla jednago mastera i wielu slave-ów problem jest znacznie! prostszy. O ile tylko znasz format ModBusa, to wiesz, że istnieje specjalny adres "0". Czy już wiesz o co chodzi?
    A jeżeli nie, to podpowiadam: master zbiera JEDNORAZOWO informacje z każdego czujnika odpytując go pod jego adresem, po czym wysyła wielorejestrową ramkę zawierająca wszystkie daje jednocześnie z adresem rozgłoszeniowym 0. Każda z centalek odbira informację rozgłoszeniową jednocześnie (taka jest idea ramki rozgłoszeniowej). I za pomocą jednej! transmisji wszystkie centralki mają aktualną informację o parametrach wszystkich czujek.
    Zauważ, że dla ew. sieci wielomasterowej miałbyś ruch na sieci ZNACZNIE! większy - każda z centralek, chcąc mieć aktualną informację o temperaturach generowałaby spory ruch na sieci. I w konsekwencji miałbyś tyle razy większy ruch na sieci, ile miałbyś centalek (dla np. czterech centralek ruch na sieci 4xwiększy!). A tu masz jednokrotne odpytanie wszystkich czujek i już po jednej wielorejestrowej ramce rozgłszeniowej wszystkie centralki mają świeżą informację. Ruch na sieci minimum. Już mniej się nie da!
    Jasne?
    Jeśli rozwiązałem problem, to polecam się pamięci.
    Pozdrawiam
    Witgol
  • Poziom 14  
    jeszcze raz dzięki.
    nie mam zbyt wielkiego doświadczenia w tych sprawach, a te informacje pewnie mnie uchronią przed popełnieniem jakieś gafy ( oby)
  • Poziom 10  
    a ja mam pytanko z troszkę innej beczki. potrzebuję informacje techniczną - jaki długi kabel mogę użyć do połączenia dwóch urządzeń z zastosowaniem protikołu rs 485.
    Proszę o odpowiedź na maila: kblicharski(malpa)gmail.com
  • Poziom 17  
    Po to mamy forum, żeby na nim dyskutować-odpowiadać, proponuję na sam początek google, później książkę-broszurę "Szeregowe interfejsy cyfrowe", a w niej jest napisane: 9600 bit/s - 1200m bez repeater'a, po drugie, protokół RS485 nie istnieje, to jest sprzęg-interfejs, protokół to np. MODBUS, TOKEN-RING, PROFI-BUS itp., jeśli źle odpowiedziałem to mnie poprawcie, pozdrawiam...
  • Poziom 10  
    A czy nie można zastosować dwóch układów, jeden by nadawał a drugi w tym samym czasie odbierał a uC sprawdzałby, czy to co zostało nadane pojawiło się na drucie, jeśli nie to znaczy że mamy kolizje... koszt niewiele wyższy, dodatkowe dwie nogi na procku i trochę więcej zajętej pamięci i mamy detekcję kolizji na RS485... co o tym myślicie?
  • Poziom 17  
    Po co dodatkowe nogi, skoro mowa o half-duplex, czyli jak nadaje to nie odbiera i na odwrót, próbowałem coś takiego zrobić, ale 75176 jak nadaje to nie odbiera, no i mój układ padł, ale o takie samo mi chodziło do sprawdzania kolizji, w sumie to 75176 wytrzymuje kolizje, bo tak sprzętowo jest zbudowany, ale dla mnie to było mało, może istnieje jakiś układ który by podczas nadawania również odbierał, ale o takich samych wyprowadzeniach jak 75176, bo tak mam zbudowaną płytkę, a właściwie kilkadziesiąt tych płytek, pozdrawiam...
  • Poziom 10  
    ok. ale tu chodzi o wykrycie kolizji... zamiast robić układ z masterem, robimy układ w którym stosujemy detekcję kolizji - a sposobem na to jest właśnie sprawdzanie czy to co wysyłamy na linię rzeczywiście się na niej pojawia !! ponieważ pojedyncze układy obsługujące RS485 są half-duplex to obejście jest proste - dwa układy... jeden tylko nadaje a drugi tylko odbiera za to mogą to robić symultanicznie, dzięki czemu mamy full-duplex i możemy stwierdzić czy nastąpiła kolizja podczas transmisji czy też nie.