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

RS-422 - jak zrealizować komunikację między urządzeniami

wierzbol 20 Lis 2008 20:12 2718 6
REKLAMA
  • #1 5763209
    wierzbol
    Poziom 11  
    Wiam,

    Jest do rozpatrzenia sytuacja: 10 układów (na mikroprocesorowych oczywiści), z których każdy kolejny musi się komunikować z poprzednim, tzn.

    U --- U ---U --- ... --- U
    
    gdzie
    U - układ
    --- - jakiś interface
    


    Odległość między układami to kilka, góra kilkanaście metrów. Wymyśliłem sobie żeby zrobić to przez RS-422, bo i odporny na zakłócenia, i wyższe prędkości od RS-232 itd.

    Moje pytania brzmią:

    1. Jak to połączyć? tzn. podejrzewam, że dysponując transceiver'em nie wystarczy pociągnąć tylko par R+, R- i T+, T- (poprawcie jeśli nie tak się to oznacza). Podejrzewam również, że trzeba pociągnąć GND, tylko nie wiem czy dobrze podejrzewam. Między przewody R+ i R- oraz T+ i T- wstawia się jakieś rezystory czy coś takiego, bo widziałem na jakichś schematach poglądowych?

    2. Czy jest jakiś standard wtyczek do RS-422, tak jak np. w RS-232 jest DB-9 i DB-25. Znalazłem gdzieś w sieci dla DB-25, ale za duże to do moich potrzeb. Czy jest jakieś sztywne przypisanie pinów do DB-9?

    Z góry przepraszam jeśli pytam o oczywiste i proszę o pomoc.
  • REKLAMA
  • #2 5881359
    grzeslab
    Poziom 12  
    Witaj,

    Na Twoje pytania odpowiedź można znaleźć w dokumantacji standardow RS422 lub RS485. Kwestie terminatorów jak i wtyczek napewno są opisane. Ja mam pytanie czy dowolne urządzenie w tym łańcuchu komunikuje się w obie strony, czy tylko w jedną. W drugim przypadku wystarczyłby RS485. Jeśli dobrze zrozumiałem to dowolne urządzenie musi dysponować dwoma układami UART, jeden do transmisji komunikatów od/do poprzednika i drugi układ do transmisji komunikatów od/do następnika. Z ciekawości spytam co to za sieć. Sieć oparte o RS422 i 485 są zazwyczaj budowane jako jedna magistrala z dołączonymi do niej masterem i slave'ami.

    Polecam dokument o sieci Modbus over Serial Line - http://www.modbus.org/docs/Modbus_over_serial_line_V1_02.pdf

    Pozdrawiam

    Pozdrawiam
  • REKLAMA
  • #3 5881511
    wierzbol
    Poziom 11  
    Zamysł jest następujący:

    Jest coś na kształt taśmociągu, który składa się z 10 takich samych niezależnych segmentów, które w założeniu mają być zależne. Każdy element ma zmienną szerokość zależącą od szerokości elementu, który będzie na nim jechał. Szerokość ma być zmieniana dynamicznie, tzn. na początku np. może jechać element o innej szerokości niż w środku i innej niż na końcu.

    Chodzi o to aby każdy był sterowany osobno, ale żeby mogły wymieniać informacje ze sobą co wjedzie następnego i jaki wymiar ustawić.

    Można by to zrobić jednym urządzeniem sterującym ale pomyślałem, że w sumie byłoby chyba łatwiej zrobić to na 10 mniejszych układach.

    Cytat:
    Ja mam pytanie czy dowolne urządzenie w tym łańcuchu komunikuje się w obie strony, czy tylko w jedną.


    Chciałbym aby komunikacja odbywała się w obie strony. Czyli tak jak mówisz 2 UART'y.
    Tak po prawdzie można by to zrobić na RS232 ale nie wiem czy nie było by z tym problemów więc chciałem użyć czegoś bezpieczniejszego. Nie wiem może mijam się z sensem całego RS422?

    Ponowie jeszcze pytanie odnośnie masy. W specyfikacji, z tego co przynajmniej czytałem, mas urządzeń się nie powinno się łączyć, łączy się tylko pary różnicowe. Czy dobrze zrozumiałem?
  • REKLAMA
  • #4 5881902
    grzeslab
    Poziom 12  
    Dokładnie nie wiem jakie informacje mają być wymieniane między urządzeniami i jakie wymagane są co do prędkości. Zapewne chodzi o to że każdy element ma dostosowywać odległość do innych w zależności od szerokości ładunku.

    W przypadku o którym mówisz sieć pomiędzy kolejnymi elementami jest odrębną siecią. Nie znam wszystkich wymagań, ale może prościej by było zastosować jedną magistralę łączącą wszystkie elementy oraz jeden sterownik nadrzędny master, który cyklicznie odpytywałby każdy element. Wtedy transmisja byłaby prostsza - jeden element, który inicjuje transmisję, wysyła zapytanie, po czym czeka na odpowiedź. I tak kolejno od każdego slave'a. Dodatkowo wysyła jakieś dane sterujące.

    Co do okablowania to nie mam wiedzy, nie chcę wprowadzić w błąd.

    Pozdrawiam
  • REKLAMA
  • #5 5884516
    wierzbol
    Poziom 11  
    Cytat:
    Dokładnie nie wiem jakie informacje mają być wymieniane między urządzeniami i jakie wymagane są co do prędkości. Zapewne chodzi o to że każdy element ma dostosowywać odległość do innych w zależności od szerokości ładunku.


    Generalnie tak, tylko nie odległość a szerokość. Rysunek poglądowy poniżej. Widok z góry, strzałki wskazują kierunek ruchu. Element 1. posiada jedną szerokość, 2. drugą, 3. trzecią. Między elementami co najmniej jeden segment wolny, aby dać czas na przestawienie szerokości, zanim element wjedzie.
    Mam nadzieję że dostatecznie dobrze przedstawiłem idę działania.

    
    
      1     2     3     4     5
                            -----
                ----- -----
    ----- -----
     el.1        el.2        el.3  ...
    ----- -----
                ----- -----
                            -----
    
    ->      ->      ->      ->
    
    


    Chodzi o to żeby urządzenie dostało wytyczne jaką szerokość (a będzie ich bodaj 7) ma ustawić i żeby ją po prostu ustawiło. Ewentualnie jeszcze instrukcję żeby zapisało ustawienie. Chciałbym, też aby każde urządzenie potwierdzało odebranie komendy. Czyli ilość informacji nie będzie duża.

    Cytat:
    może prościej by było zastosować jedną magistralę łączącą wszystkie elementy oraz jeden sterownik nadrzędny master, który cyklicznie odpytywałby każdy element


    Może faktycznie tak byłoby lepiej. Tyczko czy nie wyjdzie drożej i o jaką sieć to oprzeć. RS485?
  • #6 5888744
    arturt134
    Poziom 27  
    A może przyjrzyj się magistrali CAN? Nie musisz wtedy definiować mastera, urządzenia wymieniają komunikaty między sobą, interfejs przewiduje też priorytety i arbitraż. Sterownik CAN ma w chwili obecnej wiele kontrolerów, więc od strony sprzętowej też nie powinno być kłopotów.
  • #7 5889857
    wierzbol
    Poziom 11  
    No może to i dobre rozwiązanie ale z tego co się orientuję to zrobienie can'a nawet na mikrokontrolerach ze sterownikiem nie jest takie trywialne.

    Mi potrzebne jest chyba coś prostszego i coraz bardziej chyba skłaniam się w kierunku RS485, który powinien zaspokoić moje potrzeby. Trochę szkoda mi czasu na zabawę z can'em, szczególnie że w chili obecjen ni mam go za dużo. Ale dzięki za sugestie. Coś chyba na ten temat poczytam jeszcze żeby się lepiej zorientować.
REKLAMA