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

[mega8][BASCOM]rs485 proszę o wyjaśnienie

janusz182 08 Sty 2010 11:53 2445 3
REKLAMA
  • #1 7503272
    janusz182
    Poziom 14  
    witam, chciałbym połączyć ze sobą 3 mikrokontrolery i jeszcze PCeta do tego poprzez rs485. Biorę 4x SN75176, jeden max232 do PCeta, łaczę ze sobą i teraz mam pytanie jak to wszystko ma działać. Kiedy włączyć stan wysokiej impedancji i jak sobie w ogóle z tym poradzić. Proszę o pomoc.
    Pozdrawiam
  • REKLAMA
  • #2 7503569
    Samuraj
    Poziom 35  
    Musisz ustalić jaki będzie protokół (jakie dane lecą i w jakiej kolejności).
    Najprościej tak:
    - PC jest masterem i wysyła zapytanie do urządzeń
    - Układ jest slave i odpowiada na pytania ale tylko i wyłącznie jeśli pytanie dotyczy danego układ. W Twoim przypadku 1 do 3. Wszystkie układy slave są w nasłuchu.

    Robisz sobie ramkę danych np:
    01 03 znak końca linii
    W tym przypadku master prosi o odpowiedź układ nr. 1 a pytanie akurat 3.
    Po pytaniu mastera przełączasz na nasłuch, a wybrany slave na nadawanie wysterowawszy SN75176. Jakimi danymi odpowie slave to tylko i wyłącznie zależy od Ciebie.
  • REKLAMA
  • #3 7503629
    janusz182
    Poziom 14  
    przełączenie na nasłuch rozumiem, że to ustawienie sn75176 w stan wysokiej impedancji tak??

    chcialbym zrobic cos takiego, że jeden z mikroprocesorów byłby masterem, a pceta podłączałbym raz na jakiś czas. Czy musiałbym wtedy odłączać zasilanie, czy można to zrobić w locie??

    I teraz jeszcze takie pytanie, jak master wyśle komendę print 0103, to wysyła on na wszystkie układy podłączone do magistrali i tylko w slave o numerze 01 (na przykład) wykona się instrukcja 03??? Tak to rozumiem. No i czy instrukcja INPUT nadaje się do odebrania danych z magistrali??
  • #4 7503830
    Samuraj
    Poziom 35  
    janusz182 napisał:

    I teraz jeszcze takie pytanie, jak master wyśle komendę print 0103, to wysyła on na wszystkie układy podłączone do magistrali i tylko w slave o numerze 01 (na przykład) wykona się instrukcja 03??? Tak to rozumiem. No i czy instrukcja INPUT nadaje się do odebrania danych z magistrali??


    Dokładnie tak ale musisz w procedurze obsługi odebranych komunikatów rozróżnić o który slave ma odpowiadać. Wiadomość dotrze do każdego lecz Ty na podstawie np pierwszego znaku określasz że dalsza część komunikatu dotyczy tego układu a nie innego.

    Co do podpinania PC to musiał byś zrobić dwa Mastery, albo jeden przełączany z Mastera na slave po podłączeniu PC. Tutaj złotej recepty nie ma, wszystko musisz sam obsłużyć.
    Najłatwiej to dać układ z dwoma sprzętowymi magistralami RS w jednym z urządzeń.
    Jednym łączysz się w magistrale np po RS485 a drugim z PC po RS232.
    Albo dodać drugą obsługę RS programową.

    Nie pytaj o polecenia języka Bascom gdyż go nie znam.
REKLAMA