logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak odpytywać 1000 elementów w sieci RS-485? Podział na pętle, adresowanie?

rgbujan 26 Wrz 2003 14:01 5778 29
  • #1 339666
    rgbujan
    Poziom 11  
    Posty: 72
    Ocena: 1
    Muszę odpytywać ok 1000 elementów w sieci RS-485.
    1. Podzielić to na 10 pętli po 1002?
    2. Adresować 10 bitowo i zastosować buforowanie?

    Inne rozwiązania?

    RGB
  • #2 339795
    tadzioor
    Poziom 15  
    Posty: 132
    Pomógł: 1
    Ocena: 4
    Na pewno nie możesz podpiąć 1000 urządzeń do jednej lini. Specyfikacja RS485 określa maksymalną liczbę na 32, ale są produkowane sterowniki, które wprowadzają 1/4 albo 1/8 obciążenia (MAX483 lub MAX3085) możesz wtedy podpiąć 128 lub 256 urządzeń.
    Jeśli chodzi o rozwiązanie topologi to ja bym to zrobił tak: dzielisz linie na 8 po max 127 urządzeń ( lub 4 po 255). Każda linia jest sterowana przez kontroler, który ma dwa porty RS485. Drugie porty tych kontrolerów łączysz razem i sterujesz z nadrzędnego kontrolera. Kontroler nadrzędny wysyła adres 2bajtowy, 1 bajt to adres kontrolera podrzędnego (od 0 - 7) a drugi bajt to adres konkretnego urządzenia (0 -127). Kontrolery podrzędne przepuszczają na swoją linie tylko te ramki, których adres zgadza się z ich adresem, natomiast w drugą stronę dodają bajt ze swoim adresem, żeby kontroler nadrzędny mógł rozróżnić urządzenia o takim samym adresie ale podpięte do innej lini.
  • #3 340891
    rav.k
    Poziom 14  
    Posty: 109
    Pomógł: 1
    Ocena: 1
    Lepiej oczywiście zastosować 8 linii po 125 elementów bo zostaną Ci adresy wolne na różnego rodzaju komendy i polecenia bezpośrednie dla abonentów sieci. Wierz mi że z czasem na pewno przyda Ci się parę takich zarezerwowanych adresów wiele rzeczy można tym załatwić. Oczywiście koniecznie nie zapomnij o sterownikach wprowadzających mniejsze obciążenie linii niż 1.
  • #4 342942
    rgbujan
    Poziom 11  
    Posty: 72
    Ocena: 1
    Dzięki za pomoc!

    RGB
  • #5 344486
    jasiekz
    Poziom 15  
    Posty: 128
    Pomógł: 5
    Ocena: 2
    A możesz napisać co aż tyle masz odpytywać jeżeli nie jest to jakaś tajemnica?
  • #6 344886
    rgbujan
    Poziom 11  
    Posty: 72
    Ocena: 1
    Muszę badać stan 2 wejść logicznych w urządzeniach rozrzuconych po dużym budynku

    RGB
  • #7 345532
    jasiekz
    Poziom 15  
    Posty: 128
    Pomógł: 5
    Ocena: 2
    a będziesz sam robił te urządzenia czy to jest jakaś konkretna firma a t5y maśz z nich zrobić sieć?
    :?:
  • #8 346059
    rgbujan
    Poziom 11  
    Posty: 72
    Ocena: 1
    Urządzenia będę robił sam.

    Czy ktoś ma doświadczenia w wieszaniu 100 urządzeń na magistrali RS-485 (oczywiści o ociażalności 1/4) na długości np 700 m? Jakie max prędkości transmisji można uzyskać (średnie zakłócenia)?

    RGB
  • #9 346107
    jasiekz
    Poziom 15  
    Posty: 128
    Pomógł: 5
    Ocena: 2
    co do błędów transmisji i prędkoiści to zależy konkretnie od rodzaju kabla oraz topologii sieci i urządzeń znajdujących się w pobliżu twoich kabli.
    VCo do doświadczeń to robię swoje sieci 485 i w zależności od potrzeb stosuję różne rozwiązania.

    np. miałem problem w jednym zakładzie bo występowało dużo błędów transmisji już przy małych prędkościach. Zastosowłem dodatkowo optoizolację i na 200m chodzi jak przeciąg 115kb bez błędów. był problem z różnicą masy( różne układy zasilania).

    W warunkach testowych może ci wszystko działać ale w obiekcie rzeczywistym może to być coś innego.

    Ja zalecałbym ci zrobić małe sieci np.

    komp
    -------------------------------
    | | ........ |
    zbiorczy zbiorczy zbiorczy
    | | |
    ___________ __________ __________
    |||||||| ||||||||| |||||||||||
    podstawowe


    zbiorcze zbierają dane z podsieci
    a komputer z nich

    uzyskujesz wtedy znaczne przyspieszenie zbierania danych bo w mniejszych sieciach możesz dać większą prędkość a jak dobrze napiszesz program do zbiorczych to możesz nawet dodatkowo odpytywać te ostatnie elementy przez komputer

    Ja robię takie sieci na protokole modbus
  • #10 346128
    tadzioor
    Poziom 15  
    Posty: 132
    Pomógł: 1
    Ocena: 4
    Największa sieć jaką robiłem to 50 kontrolerów, magistrala o długości około 400m (oczywiście RS485), prędkość 115,2kbps.
    Kilka praktycznych uwag:
    1. Linia nie powinna mieć żadnych rozgałęzień, dotyczy to również podpiętych kontrolerów, do których podłączenia powinny być jak najkrótsze.
    2. Ważne jest dopasowanie lini. Jeżeli to ma być half duplex to rezystory 150ohm na obu końcach, jeżeli full duplex to rezystor 75ohm na końcu lini patrząc od strony nadajnika.
    3. Nie zaszkodzi zastosowanie sterowników z ograniczoną szybkością (np. MAX487) zmniejszy to odbicia sygnałów i poziom emitowanych zakłóceń.
    4. Na lini występują takie momenty w których wszystkie nadajniki są wyłączone i linia jest w stanie wysokiej impedancji. Taki stan sprzyja zwiększeniu zakłóceń co może doprowadzić do przypadkowego przełączania się odbiornika. Żeby temu zapobiec trzeba podciągnąć linie. Robi się to tak, że w jednym miejscu, najlepiej w sterowniku głównym, podpinasz linię do zasilania przez 2 rezystory (1k ale wartość nie jest krytyczna i możesz poeksperymentować) do +5V linię +(A) do masy linię -(B)
    5. Dobrze jest też, jeżeli wszystkie urządzenia mają odizolowane galwanicznie zasilanie, inaczej możesz mieć problemy z "biegającymi" po lini śmieciami z sieci. Ewentualnie możesz połączyć ze wspólnego zasilania kilka urządzeń, ale sterownik główny koniecznie oddzielnie. Możesz też zastosować optoizolację, ale to drogie rozwiązanie
    6. Zastosuj w protokole korekcję błędów (bit parzystości, CRC), bo przekłamania zawsze mogą się zdarzyć.

    To by było narazie tyle. Pozdrawiam

    P.S. Jak uruchomisz tą magistralę to podziel się doświadczeniami.
  • #11 346165
    rgbujan
    Poziom 11  
    Posty: 72
    Ocena: 1
    Dzięki za informacje!

    Ponieważ nie potrzebuję dużych szybkości więc zakładam 9600 bodów. Oczywiście protokół z CRC. Każdy element ma własne zasilanie z trafo. Magistralę chcę zbudować na skrętce komputerowej 4x2x0,5. Widziałem w niektórych rozwiązaniach 485 kabel nieekranowany a w innych wymagany był nie ekranowany. Jak w ekranowanym dołączać uziemienie? Na końcu? Początku?

    RGB
  • #12 346174
    tadzioor
    Poziom 15  
    Posty: 132
    Pomógł: 1
    Ocena: 4
    rgbujan napisał:
    Dzięki za informacje!

    Ponieważ nie potrzebuję dużych szybkości więc zakładam 9600 bodów. Oczywiście protokół z CRC. Każdy element ma własne zasilanie z trafo. Magistralę chcę zbudować na skrętce komputerowej 4x2x0,5. Widziałem w niektórych rozwiązaniach 485 kabel nieekranowany a w innych wymagany był nie ekranowany. Jak w ekranowanym dołączać uziemienie? Na końcu? Początku?

    RGB


    No ja też stosuję tylko nieekranowany :).
    Widziałem w jakiejś aplikacji, że ekran był podłączony na jednym końcu (chyba nie ma znaczeia na którym) przez rez 100ohm.
  • #13 346550
    qjas
    Poziom 14  
    Posty: 127
    Pomógł: 2
    Ocena: 5
    tadzioor napisał:
    1. Linia nie powinna mieć żadnych rozgałęzień, dotyczy to również podpiętych kontrolerów, do których podłączenia powinny być jak najkrótsze.

    tadzioor mozesz mi pokrotce objasnic dlaczego magistrala nie powinna miec rozgalezien? bylbym wdzieczny. myslalem wlasnie czy u siebie zamiast ciagnac przez wszystkie pokoje kabelek nie zastosowac wlasnie systemu gwiazdy ktora z pozoru spelnia wymagania 485.
  • #14 346723
    jasiekz
    Poziom 15  
    Posty: 128
    Pomógł: 5
    Ocena: 2
    co do rozgałęzień to mają one wpływ na odbicia (czyli zakłucenia) . Ale czasami warto zastosować inne rozwiązanie lepiej jest zastosować 422 (inna odmiana różnicówki) i nie ma kłopotu ze sterowaniem kierunkiem transmisji no i jest bardziej odporna na rozgałęzienia. A optoizolacja nie jest aż tak droga chociaż jeżeli nie trzeba to będzie taniej.
  • #15 346767
    tadzioor
    Poziom 15  
    Posty: 132
    Pomógł: 1
    Ocena: 4
    :arrow: qjas jak napisał jasiekz chodzi o odbicia, które zniekształcają sygnał. Ale jeżeli chcesz zbudować domową mini sieć (odległości rzędu kilku metrów) to powinno działać bez większych problemów. Nie stosuj tylko dużych prędkości transmisji. Jak chcesz poczytać więcej to zajrzyj tutaj (tekst po angielsku)
  • #16 347229
    rgbujan
    Poziom 11  
    Posty: 72
    Ocena: 1
    Zajrzyj tutaj - gdzie???

    RGB
  • #17 347236
    tadzioor
    Poziom 15  
    Posty: 132
    Pomógł: 1
    Ocena: 4
    Jak klikniesz na napis "tutaj" to otworzy Ci się strona o którą mi chidziło. :roll:
  • #18 347241
    rgbujan
    Poziom 11  
    Posty: 72
    Ocena: 1
    Chyba mam problemy z oczami :)

    RGB
  • #19 347369
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    jasiekz napisał:
    Ale czasami warto zastosować inne rozwiązanie lepiej jest zastosować 422 (inna odmiana różnicówki) i nie ma kłopotu ze sterowaniem kierunkiem transmisji no i jest bardziej odporna na rozgałęzienia.
    Z czego to wynika że jest bardziej odporna?
  • #20 347522
    qjas
    Poziom 14  
    Posty: 127
    Pomógł: 2
    Ocena: 5
    no tak ale standart 422 dopuszcza 1 nadajnik i tylko 10 odbiornikow ;/. Thx za linka.
  • #21 348585
    jasiekz
    Poziom 15  
    Posty: 128
    Pomógł: 5
    Ocena: 2
    wynika z moich doświadczeń podczas pracy z tymi elementami. Robiłem wiele rozgałęzień i nie trzeba było nawet resystorów podciągających a w 485 na tej samej lini wysypywało się.

    a co do
    Cytat:
    "standart 422 dopuszcza 1 nadajnik i tylko 10 odbiornikow "


    to nie standard 422 ale sposób działania wymusza jeden master i reszta odbiorniki chyba że robiśz dwie niezależne linie jedeną do rozkazów a drugą do odpowiedzi ( czasami się to stosuje w sieciach rozległych by przyspieszyć przesyłanie danych)
  • #22 348768
    rav.k
    Poziom 14  
    Posty: 109
    Pomógł: 1
    Ocena: 1
    Ale 422 nie nadaje się do tak rozbudowanych systemów komunikacji ile kabla by trzeba było aby komunikować się w dwie strony - absurd! Przy tak wolnej komunikacji rgbujan spokojnie zastosuj 485 z CRC lub inna dowolną techniką samokontroli a będzie działać, podaj swój mail to podrzucę Ci pewien dokumencik na temat 485 dokładnie opisujący ten standard i wszystkie ograniczenia.
  • #23 349672
    jasiekz
    Poziom 15  
    Posty: 128
    Pomógł: 5
    Ocena: 2
    rav.k czy ty wiesz dokładnie o czym piszesz?
    Nie zmuszam kolegi do stosowania dwóch linii ale stosuje się je i tak bo żadko kto instaluje dwa kable a większość kabli jest oferowana minimum 2*2 więc jest możliwość użycia takiego rodzaju transmisji. Może czasami na krótkie odległości niektórzy stosują zwykły kabel ale przy większych odległościach duży wpływ na zakłucenia ma jakość kabla.

    LIYCY 4x0,34 to jest kabel typowy zalecany do transmisji 485,422 posiadający odpowiednie parametry chociaż swoje kosztuje za metr (około 3zł ale czasami warto wydać). Ale jest bardzo dobry na duże odległości i mało wrażliwy na zainstalowanie go w pobliżu urządzeń przemysłowych. ale jeżeli długości jednostkowe nie muszą być większe niż 200m to możesz i stosować komputerową skrętkę(4*2). Ale jeżeli ciągniesz zasilanie tym kablem to musisz dwie pary połączyć by zmniejszyć straty na kablu. wtedy zasilasz 12v albo gdy masz więcej urządzeń to lepiej 24V.

    A do transmisji polecam zaimplementować modbus RTU prosty w obsłudze i było by zgodne ze standardem.
    Jeżeli chcesz jakieś materiały to mogę ci podesłać.
  • #24 349873
    rav.k
    Poziom 14  
    Posty: 109
    Pomógł: 1
    Ocena: 1
    Po pierwsze z kablem nie liczysz się jeżeli sam tego nie sponsorujesz a mając skrętkę 4*2 obsługujesz jednym kablem 4 główne linie (z 8) do każdej dołączając 125 abonentów. Po drugie po co przyspiesznie przesyłu przy i tak wolnej prędkości 9600. Po trzecie dochodzi koszt dodatkowych urządzeń umożliwiających wymianę informacji przez wszystkich abonentów. Jeżeli pomnożysz to przez 1000 elementów sieci to będziesz wiedział o czym piszę. Jak bardzo trzeba rozbudować taką sieć stosując 422 a ile więcej zaoszczędzamy gdy wybierzemy 485 (już nawet nie licząc kabla). Ale może zaczekajmy na opinię rgbujan'a.
  • #25 349949
    rgbujan
    Poziom 11  
    Posty: 72
    Ocena: 1
    Chętnie zastosowałbym protokół modbus ale ponieważ chcę zrobić układ z podsieciami więc musze adresować dwubajtowo. Ale jak opracuję własny protokół to nie będę kompatybilny (zamierzam zarządzać siecią albo z PC albo z własnego sterownika)
    Jak to rozwiązać?.

    Kolejny problem to konwerter RS232/485 na PC (np z optoizolacją) i sterowanie kierunkiem nadawania np MAX487. Czy można do tego użyć RTS na COM-ie PC? Czy też niezbędny jest jakiś mikrokontroler pośredniczący?
    Oczywiście rozwiązaniem jest interfejs USB/485 z EP 2/03 bo ma własny bufor. Ale szukam najprostrzej drogi.

    RGB
  • #26 350014
    rav.k
    Poziom 14  
    Posty: 109
    Pomógł: 1
    Ocena: 1
    Konwerter 232<->485 już był kiedyś opublikowany w EP lub EdW. W zeszłym roku lub dwa lata temu.
    Jeżeli zastosujesz swój sterownik główny sterujący 8-ma innymi o niższym priorytecie które z kolei będą odpytywać każdy z 125 elementów sieci to przecież nie musisz implementować kompatybilnego protokołu. Zrób swój unikalny a jednocześnie najsprawniej działający wtedy ingerencja bez Twojej wiedzy w strukturę systemu nie będzie możliwa (oczywiście jeżeli tego chcesz). Najważniejszym jest aby tylko jeden element sieci, ten najważniejszy sterownik, komunikował się w ogólnodostępnym protokole z PC zapisując wyniki odpowiedzi. Mając w zapasie kilka zarezerwowanych adresów możesz im przypisać określone reakcje np. sekwencyjna odpowiedź, odpowiedź w grupach lub podobne (wykorzystując tu w każdej z 8 linii różne metody rezerwowania linii np.rywalizacja o dostęp lub przechodni priorytet itp.) po uzyskaniu wszystkich odpowiedzi kolejny rozkaz globalny itd. oszczędza to czas na pojedyncze odpytywanie każdego z osobna. Nie znam zadań, przeznaczenia i warunków funkcjonowania tej potężnej sieci więc też trudno mi bezpośrednio podać Ci jakąś podpowiedź. Pozdrawiam.
  • #27 350605
    jasiekz
    Poziom 15  
    Posty: 128
    Pomógł: 5
    Ocena: 2
    co do RTS to nie mozęsz go wykożystać jeżeli kożystasz z 98 ( błąd w bibliotekach vxd działa tylko w nt i chyba już dobrze w xp).

    Co do modbus:
    1Bajt 1Bajt 2 bajty ******* 2 bajty
    adres funkcja adresdanych dane crc

    W modbusie możesz wykożystać funkcje od 65 do 72 oraz 100 do 110 na własny protokół( szczegóły(ModbusApplicationProtocol_v1_1.pdf). Wtedy możesz w polu danych umieścić np ramkę do podsieci i nie ma kłopotu z adresowaniem powyżej 247 urządzeń.

    Przsyłam 4 podstawowe dokumenty do opisu protokołu modbus ( wszystkie po angielsku) cdn..
    Załączniki:
    • Modbus_over_serial_line_V1.pdf (267.8 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Modbus messaging implementation guide V1.pdf (412.74 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • PI_MBUS_300.pdf (172.26 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #28 350609
    jasiekz
    Poziom 15  
    Posty: 128
    Pomógł: 5
    Ocena: 2
    cd: czwarty załącznik najważniejszy
    Załączniki:
    • ModbusApplicationProtocol_v1_1.pdf (327.32 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #29 352831
    achilles
    Poziom 15  
    Posty: 212
    Ocena: 6
    A masz jasiekz jakieś materiały na temat 485??

Podsumowanie tematu

✨ W dyskusji omówiono problem odpytywania około 1000 urządzeń w sieci RS-485. Ze względu na ograniczenia standardu RS-485 (maksymalnie 32 urządzenia na linię) zaleca się podział na kilka pętli, np. 8 linii po około 125 urządzeń każda, stosując sterowniki z mniejszym obciążeniem magistrali (np. MAX483, MAX3085). Proponowany model adresowania to dwubajtowy adres, gdzie pierwszy bajt identyfikuje kontroler podrzędny, a drugi konkretne urządzenie. Wskazano na konieczność stosowania topologii liniowej bez rozgałęzień, aby uniknąć odbić i zakłóceń sygnału. Zalecane jest dopasowanie impedancji linii (rezystory 150 Ω na końcach dla half duplex) oraz stosowanie sterowników z ograniczoną szybkością transmisji (np. MAX487) dla redukcji zakłóceń. Dyskutowano o prędkości transmisji – 9600 bodów jest wystarczające przy zastosowaniu protokołu z CRC. W kwestii okablowania preferowana jest skrętka komputerowa 4x2x0,5 mm², z możliwością stosowania kabla ekranowanego podłączanego do uziemienia na jednym końcu przez rezystor 100 Ω. Poruszono temat protokołu Modbus, który można rozszerzyć o własne funkcje i adresowanie dwubajtowe, umożliwiające zarządzanie podsieciami. Wskazano na problem sterowania kierunkiem transmisji w konwerterach RS232/485, gdzie RTS na porcie COM w Windows 98 jest niewystarczający, a alternatywą są interfejsy USB/485 z buforowaniem. Zwrócono uwagę na konieczność optoizolacji i odpowiedniego zasilania urządzeń (12-24 V) oraz na wpływ jakości kabla i otoczenia przemysłowego na stabilność transmisji. Porównano standardy RS-485 i RS-422, podkreślając, że RS-422 jest mniej odpowiedni dla dużych sieci ze względu na ograniczoną liczbę odbiorników i konieczność stosowania dwóch linii do komunikacji dwukierunkowej.
Wygenerowane przez model językowy.
REKLAMA