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

Bascom RS485 - Jak uniknąć konfliktów adresów w sieci master-slave?

mradamf1985 14 Lut 2014 19:42 3108 4
REKLAMA
  • #1 13302205
    mradamf1985
    Poziom 12  
    Witam, chcę zbudować sieć urządzeń opartych o RS485: jeden master i kilka urządzeń slave. Urządzenia typu slave będą zarówno wykonawczymi ON/OFF jak również będą miały czujniki. Wstępnie nawet to zaprogramowałem:
    master wysyła adres urządzenia(np liczba 0-10), następnie komenda (też np 0-10), układ odpowiada np. temperatura. Wszystko niby działa, ale co jeśli jeden z modułów odpowie temperaturą która będzie taka sama jak np nr modułu, uaktywni mi się inny moduł i mogą się dziać cuda. Jak zrobić żeby tego strasznie nie skomplikować a wyeliminować możliwość? Czytałem artykuł RS485 w bascom ale wydaje mi się to za bardzo zagmatwane.

    piotrva: poprawiłem pisownię tytułu
  • REKLAMA
  • #2 13310358
    cyberdar
    Poziom 31  
    Witam,

    Zaimplemetuj coś na zasadzie ramki danych, wg której będą pracowały wszystkie urządzenia; np. z mastera zawsze wysyłasz jako pierwszy bajt wartość stałą (np. 64), jako drugi numer urządzenia, jako trzeci komendę, a jako czwarty sumę kontrolną.
    Slave odpowiada: bajt pierwszy wartość stała (najlepiej inna niż wysyła master np. 65), bajt drugi numer urządzenia, bajt trzeci załóżmy zmierzona wartość, bajt czwarty suma kontrolna.
    Generalnie jak po sieci pójdzie odpowiedź ze slave'a to biorąc pod uwagę pierwszy bajt (65) inny slave będzie mógł taką ramkę odrzucić bo powinien analizować ramkę, która rozpoczyna się wartością stałą 64.

    --
    pozdrawiam
  • REKLAMA
  • #3 13311511
    piotrva
    VIP Zasłużony dla elektroda
    Ja polecam do przesyłu danych liczbowych kod ASCII - niby masz więcej znaków na jedną daną, ale za to wtedy np. Początek ramki kodujesz znakiem nie używanym w transmisji (np. 27=ESC).
  • REKLAMA
  • #4 13311915
    Mateusz@
    Poziom 18  
    Proponuje wpisać w wyszukiwarce
    "Obsługa RS485 w Bascomie"
    "Klocki RS485"

    Wszystko pięknie wyjaśnione.
  • #5 13315641
    mradamf1985
    Poziom 12  
    Te artykuły czytałem, jednak w obydwu przypadkach widzę rękę Pana Wiązani, pytam bo może ktoś robi to inaczej. Standard rs485 określa tylko od strony elektronicznej reszta jest w rękach programisty. Jeśli te sposoby są najlepsze to się do nich zastosuję. Mam jeszcze 3 pytania:
    1. Jak wygląda bitowo przesłanie takiego kodu np. Esc, znalazłem przebieg wysyłania litery "J" i nie widzę tutaj różnicy między ASCII a zwykłą liczbą

    Bascom RS485 - Jak uniknąć konfliktów adresów w sieci master-slave?

    2. Wiadomo, że rs485 to dodatkowo minimum 2 kabelki. Jeśli chciał bym sobie to zastąpić na niewielkie odległości (w obrębie mieszkania) modemem na na sieć 230V takim jak na zdjęciu poniżej to zasady transmisji w sensie oprogramowania mogą chyba pozostać takie same tylko bez stosowania scalaka max485?

    3. Mając na końcu takiego modemu (układy slave) dwa mikrokontrolery mogę je podpiąć do jednego modemu łącząc TX modemu z RX i RX mikrokontolerów, oraz TX i TX mikrokontrolerów poprzez diody np 4148 do RX modemu? Stosował ktoś coś takiego?
    Bascom RS485 - Jak uniknąć konfliktów adresów w sieci master-slave?
REKLAMA