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

RS-485 i wykrywanie zajętości magistrali

buczbucz 25 Lut 2007 19:23 1340 3
  • #1 3617159
    buczbucz
    Poziom 1  
    W jaki sposób wykrywać, że magistrala RS-485 jest zajęta?

    Załózmy że mam mikrokontrolery i sa one podłączone przez standardowe IC dla właśnie takiej magistrali (TI albo Analog). A te układy, jak zaóważyłem, nie mają wyjścia informującego o takim stanie, jedynie do nadawania i odbierania.
  • #2 3617575
    bis
    Poziom 21  
    Cytat:
    A te układy, jak zaóważyłem, nie mają wyjścia informującego o takim stanie, jedynie do nadawania i odbierania.
    Bo taki sygnał miał by sens wyłacznie gdyby był "obsługiwany" (np. blokował by transmisję) sprzętowo. Inną sprawą jest mozliwośc wyprodukowania takiego sygnału. Ponieważ ten standard dotyczy "szyny" (czyli wiele urządzeń na jednym drucie) oraz szeregowej transmisji asynchronicznej to w różnych miejscach szyny (a może być długa) w tej samej chwili moga być obserwowane różne stany.
    Cytat:
    W jaki sposób wykrywać, że magistrala RS-485 jest zajęta?

    Kazdy z podpiętych procków musiał by wykrywać bit startu, i odliczać czas potrzebny do nadania bajtu (aż do zakończenia bitów stopu) w tym czasie szyna jest zajęta. Ale ta wiedza nic nie daje.
    Mysle że chciał byś wiedzieć kiedy możesz nadawać ale to jest problem nierozwiązywalny w prosty sposób (bo każdy może zacząć nadawać w tym samym czasie). W wielomasterowych rozwiązaniach trzeba to rozwiązać na poziomie protokołu, priorytetów i wspólnego dla wszystkich algorytmu synchronizacji i liczenia czasu. Generalnie bez ustanowienia jakiegoś głównego "mastera" jest to bardzo skomplikowane (głównie uwzględnienie wszystkich możliwych "zderzeń" i wychodzenia z "zakleszczeń")

    bis
  • #3 3622872
    pug
    Poziom 11  
    A nie prościej zrobić tak: jeden transceiver RS-485 full duplex albo dwa half dupleks, jeden odbiera to co się dzieje na magistrali, drugi do nadawania.

    Jeśli któreś z urządzeń nadaje to my nie nadajemy. to jest normalne.
    Jeśli na magistrali jest cisza (trzeba uwzględnić minimalne czasy przerw w nadawaniu) to nadajemy JEDNOCZEŚNIE sprawdzając, czy to co odbieramy to to co chcieliśmy nadać, jeśli tak to znaczy, że nadajemy tylko my, jeśli to co chcieliśmy nadać jest inne od tego co odebraliśmy to mamy kolizje. Wtedy reagujemy, albo nadajemy jakąś wartość przez określony czas, żeby drugie urządzenie też wyłapało, że była kolizja i później rozpoczynamy ponowną transmisję po określonym (random) czasie albo stwierdzamy, że była kolizja i czekamy do zwolnienia magistrali...

    To tylko mój teoretyczny pomysł rozwiązania problemu detekcji kolizji. Trzeba by sprawdzić praktycznie, czy zadziała?

    Oczywiście w momencie, gdy mamy bardzo obciążone pasmo ten system może zupełnie zablokować sieć, dlatego trzeba wtedy zastosować coś innego !! to podobnie jak przy ethernecie, hubach i dużej ilości komputerów. Dopiero switche likwidują kolizje.

    Pozdrawiam.
    Roman.
  • #4 3624973
    Booby
    Poziom 14  
    Kiedyś zrobiłem taki system jak opisany niżej i działa bez problemu:
    Jest jedno nadrzędne urządzenie, nazwijmy Master i kilkanaście urządzeń podrzędnych, nazwijmy Slave.
    Master cyklicznie odpytuje kolejne Slave, jaka jest ich potrzeba przejęcia magistrali. Jednostką była ilość urządzeń do których dany Slave potrzebował przesłać dane. Jednocześnie w tym odpytaniu Master przydzielał danemu Slave do ilu urządzeń może wysłać dane. Master zarządzał tak przydziałem pasma aby wszystkie urządzenia Slave miały jednakowy dostęp do magistrali (takie akurat było założenie). Z kolei Slave jeśli otrzymał mniejszy przydział niż żądał to sam określał do których urządzeń przesyła dane w pierwszej kolejności. Master monitorował odpowiedzi i po zakończeniu transmisji ostatniej przez Slave, wysyłał kolejne zezwolenie i przydział transmisji do innego urządzenia (lub tego samego jeśli była taka potrzeba). Slave nigdy oczywiście nie inicjował transmisji bez zezwolenia przez Master. System stosunkowo prosty i działający bez zarzutu, bez kolizji i straty pasma.
REKLAMA