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

mikrokontrolery na 8051 połączone po MODBUSIE..realizowalne?

wielkimechatronik 13 Sty 2009 00:40 1696 6
  • #1 5991079
    wielkimechatronik
    Poziom 10  
    Posty: 20
    Witam wszystkich
    Jakiś czas temu (wakacje) założyłem wątek:
    Link
    w którym przedstawiłem z grubsza swoją koncepcję terminali egzaminacyjnych (opartych na mikrokontrolerach) rozmieszczonych po sali i komunikujących się z urządzeniem master.
    Korzystając z rad przyjrzałem się uważniej standardowi RS485 i protokołowi MODBUS.
    Postanowiłem użyć tych dwóch standardów do utworzenia sieci, pozwalającej laptopowi egzaminatora(master) komunikować się (znaczy odpytywać) poszczególne terminale.
    Obecnie posiadam pod ręką zestaw uruchomieniowy ZL2MCS51 z mikrokontrolerem AT89C51RD2. Zastanawiam się czy udźwignie on implementację MODBUSA (a ściśle pseudo MODBUSA -bo dostosowanego do potrzeb ściśle egzaminacyjnych) dla jednostek SLAVE.
    Odstrasza fakt,że '51 nie mają rejestru FIFO i każdy znak wysyłąny będę musiał wrzucać "ręcznie" do ramki.
    Z drugiej strony zestaw jest kompletny, jeżeli chodzi o peryferia -LCD (16*2) i 8 przycisków, co uważam za wystarczające.
    Czy ktoś miał może styczność z tego typu rozwiązaniami na architekturze 8051?
    A jeśli nie, to jaki inny mikroprocek będzie w stanie bezboleśnie pociągnąć MODBUSA? (z racji tego pytanie pozwoliłem sobie umieścić temat w dziale ogólnym)
    pozdrawiam
  • #2 5991184
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Modbus to banalny protokół 8051 spokojnie jest w stanie go udźwignąć. Co do FIFO to możesz je zrobić programowo.
  • #3 6157947
    wielkimechatronik
    Poziom 10  
    Posty: 20
    Zacznę dalej drążyć temat, bo zaczyna się praktyczne zastosowanie zgromadzonych dokumentacji i literatury :).

    W dokumentacji mikrokontrolera AT89C51RD2 widnieje sześć 8-bit I/O Ports. Czy to znaczy,że chcąc zgodnie z protokołem Modbus sczytać z tego układu 40B danych, będę musiał "dzwonić" do niego prawie 10razy?
    Mam nadzieję,że coś pokręciłem, bo przy 70 urządzeniach trwałoby to całe wieki :).
  • Pomocny post
    #4 6162017
    MarasK
    Poziom 18  
    Posty: 231
    Pomógł: 19
    Ocena: 4
    nie wiem co rozumiesz przez wieki, ale 700 odczytów (10*70) przy odpowiednim zegarze nie będzie wiele trwało:

    700*8*2 (odsyłanie ramki) = 11200 - przy częstotliwości 115 000 (jedna ze standardowych uartu) będzie to trwało ~100ms.

    Dodając do tego więcej 'zapasu' itp nawet 2x na sekundę. To za mało?

    Poza tym, kto Ci każe odczytywać stan wszystkich portów? Do czego to ma dokładnie służyć?
  • #5 6165453
    wielkimechatronik
    Poziom 10  
    Posty: 20
    Dziękuję za zainteresowanie.
    Po krótce, system ma służyć do sczytywania z rozmieszczonych w znaczącej wymiarów sali terminali egzaminacyjnych. Terminali jest łącznie 70, więc stąd moja obawa o długi czas procesu akwizycji danych z tych urządzeń.
    Maksymalna liczba pytań to 40, przy zdublowaniu dla bezpieczeństwa przesyłanych odpowiedzi na wszystkie pytania (wielokrotny wybór-> a lub/i b lub/c lub/i d) dostaję 40B do przesłania z każdego urządzonka.
    Sam czas dostępu do portów i ich sczytania pomijam, bo jak napisałeś to czasowe "grosze" w porównaniu do czasu zapytania urządzenia slave i otrzymania odpowiedzi 700krotnie przy uwzględnieniu długości magistrali i maksymalnej prędkości katalogowej Modbusa (19,2kb/s).
    Wiem,że ostatecznie mogę użyć kllku sterowników do sczytywania danych z podległych im terminali (załóżmy 1 sterownik na 17terminali) ale chciałbym uniknąć dodatkowych kosztów, a zarazem zapewnić przyzwoite ramy czasowe procesowi akwizycji danych.

    Pozdrawiam

    EDIT: Lekko zwichniąłem pojęcie pobierania danych z terminala i stąd całe te wypociny wyżej. Nie wiedzieć czemu, nie domyśliłem się,że urządzenie wysyła dane na szynę z określonego przeze mnie adresu, a nie z portów :|. Moja culpa, za bardzo wczytałem się w przemysłowe rozwiązania istąd taka głupota.
    Co do postu niżej :), to także racja, bo w sumie z Modbusa to potrzebuję tylko samego mechanizmu porozumiewania się między urządzeniami. Wszystko pozostałe (włącznie z prędkością transmisji) ustalam sam, więc jeśli piszesz,że ćwierka i na 115200 to prawdopodobnie tak jest. Choć dalej twierdzę,że w katalogu znalazłem max 19,2 kb/s :D.
    Póki co zaczynam zaznajamiać się z 8051 w praktyce.

    Dzięki za zainteresowanie raz jeszcze
  • Pomocny post
    #6 6176157
    gmp
    Poziom 19  
    Posty: 434
    Pomógł: 29
    Ocena: 28
    Protokol Modbus ma zabepieczenie w postaci CRC, wiec Twoje dublowanie nic lepszego nie wniesie. Skoro Ty konstrujesz urzdzenie to decydujesz o predkosci(skad wziales te 19200....) Na Rs485 przy dobrym dopasowaniu spokojnie pojdzie 115200 nawet przy kilkudziesiciu metrach. Profibus chodzi na 1.5Mb a i tez na 12Mb.
  • #7 6176367
    MarasK
    Poziom 18  
    Posty: 231
    Pomógł: 19
    Ocena: 4
    jak już sam zauważyłeś - modbus to tylko implementacja komunikacji (czy jak to tam nazwał). Możesz 'bezkarnie' zwiększyć prędkość 10-krotnie przy zastosowaniu RS485 i jak to nie będzie przewód 400m to nie powinno być problemów.

    Jak mówił gmp na RS485 biega i Profibus i wiele innych protokołów przemysłowych, więc problemów być nie powinno.

    W razie dalszych pytań - pisz.

Podsumowanie tematu

✨ Dyskusja dotyczy możliwości implementacji protokołu Modbus na mikrokontrolerach z rodziny 8051, konkretnie na zestawie ZL2MCS51 z mikrokontrolerem AT89C51RD2, w celu stworzenia sieci terminali egzaminacyjnych komunikujących się z urządzeniem master przez RS485. Pomimo braku sprzętowego rejestru FIFO w 8051, protokół Modbus jest uznawany za prosty i możliwy do realizacji programowo, w tym obsługę buforowania znaków. Poruszono kwestię czasu akwizycji danych z 70 terminali, każdy przesyłający do 40 bajtów informacji, co przy standardowej prędkości 19,2 kb/s może być czasochłonne, jednak przy zwiększeniu prędkości do 115200 bps czas odczytu jest akceptowalny (około 100 ms na 700 odczytów). Zwrócono uwagę, że protokół Modbus posiada wbudowaną kontrolę CRC, co eliminuje potrzebę dublowania danych dla bezpieczeństwa. Wskazano, że RS485 pozwala na zwiększenie prędkości transmisji i jest stosowany w wielu protokołach przemysłowych, takich jak Profibus, które działają nawet przy prędkościach do kilku Mb/s na dystansach kilkudziesięciu metrów. Podsumowując, implementacja Modbusa na mikrokontrolerze AT89C51RD2 jest wykonalna, a odpowiednia konfiguracja prędkości transmisji i struktury sieci pozwoli na efektywną komunikację z wieloma terminalami w czasie rzeczywistym.
Wygenerowane przez model językowy.
REKLAMA