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

Komunikacja pomiędzy mikrokontrolerami

Tomcio7 03 Lis 2009 13:50 2664 5
REKLAMA
  • #1 7209864
    Tomcio7
    Poziom 17  
    Mam mały problem i nie wiem jak go ugryźć a sprawa przedstawia się następująco:

    Załóżmy że posiadam 100 uP Atmeg ktore zajmują się jakimiś swoimi zadaniami, zbierają dane które mam zgromadzić w jednym miejscu którym będzie komputer. Ponadto komputer również ma pośredni wpływ na sterowanie Atmegami w ilości 100sztuk więc komunikacja musi byc dwukierunkowa.
    Komp jest masterem reszta jest mu podporządkowana.
    Każda Atmega gromadzi 100bajtów danych więc do przesłania jest 100x100 = 10k - do tego dochodzą inne dane sterujące, ale zakładam że mieszczę się w 10kB danych. Również narzucony jest limit czasowy, aby przesłać 10kB danych do kompa w czasie 60 sekund co daje nam ok 1,3kB/s czyli załóżmy 2kB/s

    W jaki sposób skomunikować to wszystko ze sobą?

    Dodatkowym założeniem jest (żeby wszystko utrudnić) aby zapewnić poprawność przesyłanych danych na odległość do 100 metrów więc załóżmy 200 metrów.

    RS485 w/g standardów umożliwa komunikację z maksymalnie 32 urządzeniami
    I2C, SPI ograniczenie odległością
    1-wire (do 100 metrów) ale czy da się pożenić to wszystko tą metodą transmisji danych?
    Dali - hmm będzie ciężko bo ogranicza nas ilość danych (ale to jest opcja)
    Może inny standard przesyłu danych.

    Rozchodzi się o to - aby było i tanio (więc wszelkie bezprzewodowe transmisje odpadają) i stosunkowo prosto.

    Mam taki pomysł aby jeden mikrokontroler stał się kordynatorem (urządzeniem pośredniczącym pomiędzy 100 uP'ami a komputerem) i do niego spływały wszelkie dane z innych mikroprocesorów a ten np RS'ie przesyłał je dalej - co również miałoby działać w drugą stronę. Może wykorzystać do przesyłu danych jakiś swój standard przesyłu o którym jeszcze nic nie wiem?

    Najlepiej byłoby gdyby wszystko sparować RS'em (gdyby nie to założenie że nie mogą pracować więcej niż 32 odbiorniki/nadajniki)..
  • REKLAMA
  • #2 7209928
    Father
    Poziom 26  
    Zastosuj konwertery 1/4-unit-load, których na magistrali może być 128 (np. MAX487). Reszta to kwestia opracowania protokołu...
  • REKLAMA
  • #3 7211645
    kamyczek
    Poziom 38  
    Zawsze mozna podzielić na 4 magistrale po 32 ;) i masz 128 urządzeń 4 uarty 4 razy rs 485 i po problemie ...
  • REKLAMA
  • #4 7223609
    micha_
    Poziom 11  
    zobacz can-bus komunikacja do 1mb/s,voll duplex,multimastersystem
  • REKLAMA
  • #5 7249058
    Tomcio7
    Poziom 17  
    do max487 można zastosować konwerter z rs232 do rs485?
  • #6 7261474
    euromatic
    Poziom 21  
    Proste do zrobienia. Oczywiście najprościej RS487, prędkość transmisji dałbym 115200 bo sporo procków do odpytania. sieć RS485 koniecznie izolowana optycznie bo inaczej zrobi się "kuku" Co do tych 32 urządzeń na lini to nie jest to do końca prawdą i nie jest parametrem krytycznym.
    mam obiekty gdzie pracuje po nad 100 sterowników ze scalakami RS485 na magistrali i działa to stabilnie. Każdy ma jednak optoizolacje.
    Dane wysyłaj binarnie, nie hexem. skróci to ramkę i wysyłaj cały pakiet za jednym podejściem. myślę że odpytywanie co 50ms, nie częściej bo procki nie będą miały czasu na swoje czynności.
REKLAMA