Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

rs485 - czy magistrala jest zajęta?

thorin00 30 Wrz 2007 19:01 5137 10
  • #1 30 Wrz 2007 19:01
    thorin00
    Poziom 14  

    witam
    czy da sie jakoś sprawdzić czy magistrala jest zajęta?
    robie projekt oparty na rs485 na układach max485 w którym będzie kilka układów master . przełączenie max-a na nadawanie odbywa sie poprzez podanie stanu wysokiego na wejścia DE oraz RE. czy da sie jakoś sprawdzić czy jakiś układ master przełączył sie na nadawanie?
    z góry dziękuje za odpowiedz
    pozdrawiam

  • Pomocny post
    #2 30 Wrz 2007 20:37
    mirekk36
    Poziom 42  

    to jest odwieczny problem tego typu skąd inąd bardzo dobrej komunikacji RS485. Sam ją używałem i sam pisałem sobie własny protokół komunikacji typu Master/Slave. Jak się to dobrze przemyśli - działania w oparciu o własne ramki danych, przekazaywanie ew tzw TOKENa itp to naprawdę nie ma problemów aby spokojnie działać na tej magistrali. Oczywiście można sięgać po gotowe rozwiązania jak ModBus itp - ale naprawdę za pomocą minimum wysiłku można samemu to sobie wszystko zorganizować w jakimś tam zakresie, wszystko zależy co to ma być

    powodzenia

    PS a przy okazji jeśli chcesz włączyć się z komputerkiem PC w tą magistralę aby coś tam kontrolować lub działać jako zwykły slave to może ci się przydać jeśli nie masz taki schemat. Zrobiłem sobie taką przejściówkę RS232-RS485 do kompa i działa wyśmienicie ;)

    rs485 - czy magistrala jest zajęta?
    to jest schemat zdaje się że z EP

  • #3 01 Paź 2007 08:27
    thorin00
    Poziom 14  

    @mirekk36 co do schematu który załączyłeś to zrobiłem coś takiego lecz z wykorzystaniem prostej przejściówki usb-ttl (rs232) na attiny45 zamiast max232 (zresztą rozmawialiśmy na temat tej przejsciówki na poscie w konstrukcjach DIY :) )

    a wracając do tematu. istnieje jakaś sprzętowa możliwość sprawdzenia czy magistrala jest zajęta, chodzi mi o to czy jeżeli jakiś układ ustawi stan wysoki na RE i DE da sie to jakoś sprawdzić, czy dopiero jak zacznie wysyłać dane?

  • Pomocny post
    #4 01 Paź 2007 15:55
    BoskiDialer
    Poziom 34  

    Odłączona magistrala jest terminowana opornikami po chyba 120R, więc jeśli wszystkie nadajniki są wyłączone, napięcie na obu przewodach będzie zbliżone (przy drobnych wachaniach napięcia stan wyjścia odbiorników nie zmienia się na skutek działania histerezy 200mV - czy coś koło tego) - nadajnik po wpięciu się w szynę wysterowywuje jeden przewód do masy a drugi do przewodu zasilającego, więc mozna sprawdzić, czy magistrala jest wysterowywana sprawdzając, czy pomiędzy przewodami jest napięcie (więcej lub równe +-200mV).

  • Pomocny post
    #5 02 Paź 2007 11:45
    Jdsoul
    Poziom 23  

    Max-485 daje na jednej z nóg stan magistrali , chyba że się mylę ??

    Wystarczy czytać ten pin.

    Co do realizacji arbitrażu , hmm... może metoda testowania kolizji, może okna czasowe, może Master-Slave. Decyzja należy do ciebie :) oczywiście każda metoda narzuca inny tryb pracy magistrali i inne wymagania na poszczególne węzły.
    Magistrala z jednym Masterem wydaje się najprostsza do realizacji, ale ostrożnie, musi to dotyczyć systemu w całości i klient nie może nadawać jeśli nie został zapytany :) To ogranicza system do pracy w ściśle określonych timeoutach

    Dodano po 11 [minuty]:

    A propos schematu Mirka to masz tam NE555 pracujący w układzie przerzutnika monostabilnego, więc czas oddania magistrali do dyspozycji jest ściśle zależny od wartości R1,C5 taki trick :)

    Pojawienie się nadawania na wyjściu MAX 232 przełącza transceiver MAX485 na nadawanie, niezależnie od stanu magistrali.

    Czas jest tak dobrany, żeby kolejne bity cały czas wyzwalały timer podtrzymując prace w torze nadawania tak długo, aż nadawanie nie ustanie :).
    Nie radzę robić takiej sztuczki po stronie slave :)

    Układ nie testuje magistrali wogóle , jest to konwerter dla Mastera i to tylko w trybie pracy z oczekiwaniem czasowym :)

  • Pomocny post
    #6 02 Paź 2007 11:59
    elektrofil
    Poziom 17  

    witam. ja z powodzeniem stosuje podanie 1/2 zasilania poprzez dzielnik 1k/1k. sprawdzam czy jest 1/2 zasilania jeżeli tak to jest wolna. ale przy dużym ruchu są kolizje. rozwiązałem je w ten sposób:
    -powstał układ master nad masterami.
    -wysyła on kolejnym master'om zezwolenia na nadawanie i czeka aż zasygnalizują koniec działania.
    wtedy zezwala następnemu.. itd.
    kolizje zniknęły. czas reakcji poniżej 0,1 sek. co jest dla mojego systemu wystarczające.

  • #7 02 Paź 2007 21:44
    mirekk36
    Poziom 42  

    Witam,

    elektrofil -> fajny sposób z tym masterem masterów ;) ... tak sobie pomyślałem na początku, że to trochę może mało bezpieczne bo jeśli któryś z masterów któremu przy okazji dałbym tytuł MasterMaster np by "zechł" to kicha ale z drugiej strony to można tak jak piszesz przy tak niskich kosztach poprostu dodatkowy jeden procek, który tylko tym masterowaniem się zajmuje i niczym innym więc mniejsze niebezpieczeństwo że zawiśnie w innych okolicznościach.

    no i fajny czas 0,1 sek ci przy tym wyszedł - tylko czy dobrze myślę że dałeś właśnie tylko takiego jednego SuperMastera który służy tylko do tego arbitrażu?

    pozdrówka

  • #8 05 Paź 2007 10:09
    elektrofil
    Poziom 17  

    tak tylko jeden i tylko oznajmia innym masterom że teraz mogą pracować.
    następnie czeka aż ten master któremu pozwolono działać zamelduje koniec działania. jeżeli nastąpi zwiecha mastera to jest zonk, lecz trzeba po prostu dobrze napisać soft. przy master'ze masterów jest sygnalizacja piszczykiem i lcd który pokazuje który master zdechł. w ciągu 3-ch miesiecy miałem dwie zwiechy i to z mojej winy. usterki programowe poprawiłem i od 3-ch miesiecy spokój. jak jest większa transmisja to magistrala jest nawet zajęta 3sekundy. to 0,1 sek dałem aby nie obciążać masterów przerwaniami od transmisji i im zbytnio nie przeszkadzać. mam 18 układów master, a każdy ma pod sobą kilka/kilkanaście slave'ów. wszystko na atmega 162(master) atmega 8 i 16 slave.

  • #9 05 Paź 2007 16:11
    Jdsoul
    Poziom 23  

    Podobna zabawa jest w konwerterze firmy Roger UT-2 , magistrala jest plokowana na 2 milisekundy po ostatnim wysłanym znaku :) - poprawiłem ewidentny błąd (sekundy na milisekundy) jeszcze raz sorki

  • #10 09 Paź 2007 11:50
    elektrofil
    Poziom 17  

    bez przesady chyba 2msek. używam UT2 na co dzień. doskonały nie jest, ale skąd te 2 sek??? proponuje podłączyć oscyloskop i obejrzeć przebiegi, aby innych nie wprowadzać w błąd! chyba mamy sobie pomagać a nie szkodzić nieprawidłowymi danymi technicznymi.
    gdybym przeczytał w poście, że ut-2 ma 2sek zmianę kierunku, to na pewno bym go nie kupił i bym się męczył aby coś takiego projektować.
    jedyne czego mi brakuje w UT-2 to sygnalizacja kierunku. to by jeszcze bardziej zwiększyło komfort użytkowania.

  • #11 10 Paź 2007 16:58
    Jdsoul
    Poziom 23  

    Zgadza się 2ms mea qulpa.

    Cytat z instrukcji UT-2


    Cytat:
    STEROWANIE NADAWANIEM
    Sterowanie przepływem danych (tzn. przełączanie pomiędzy nadawaniem a odbiorem) w interfejsie UT-2 jest realizowane na zasadzie czasowej. W stanie normalnym linie A i B interfejsu RS485 są ustawione w trybie odbioru co powoduje, że dane przechodzące z magistrali RS485 są przesyłane do komputera. Z chwilą gdy komputer rozpoczyna
    transmisję, linie RS485 są natychmiastowo przełączane w tryb nadawania i pozostają w tym stanie tak długo jak komputer kontynuuje przesyłanie pakietów danych przez port szeregowy. Linie RS485 (A i B) powracają do trybu odbioru automatycznie po czasie ok. 1.5ms od momentu nadania ostatniego bitu danych przez komputer.

    Uwaga: Sposób sterowania przepływem danych w interfejsie UT-2 ma charakter indywidualny, specjalnie zaprojektowany do obsługi kontrolerów dostępu serii PR produkowanych przez Roger Sp. j. W przypadku chęci wykorzystania modułu UT-2 do innych celów, należy wcześniej przeprowadzić testy które potwierdzą przydatność
    interfejsu w innych aplikacjach.


    W żadnym razie 2 s. źle przytoczyłem , co nie zmienia faktu, że bez arbitrażu u badania linii danych w trybie czasowym.

    Dziękuję za szybką reakcję elektrofil

TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo