Skocz do zawartości

Komunikacja dużej ilości mikrokontrolerów z układem zarządzającym


Veo

Pomocna odpowiedź

Hej,
projektuje (i buduje) większy system i brakuje mi opinii / uwag od osób mających większe doświadczenie. Moje w przypadku tak dużych systemów jest zerowe.

Pojedynczy układ to mikrokontroler z dedykowanym zasilaniem, obsługujący kilka (4-10) wejść i wyjść - są to różne sensory i wyjścia cyfrowe na różne peryferia. Dla uproszczenia możemy założyć, że są to fotodiody (in) i diody (out). Jedyną rolą tego układu jest zbieranie danych wejściowych, przesłanie ich zerojedynkowo (dane zdarzenie wystąpiło lub nie) do układu zarządzającego, oraz przekazywanie danych pochodzących z jednostki sterującej na wyjścia cyfrowe.
Cały system ma się składać z około 150-200 takich układów, które rozmieszczone są mniej więcej równomiernie na podłodze i ścianach. Oddalone są od siebie o około 50-80cm. Wszystkie z nich połączone są z centralnie zarządzającym urządzeniem. Na centralce spoczywa interpretacja wejść z mikrokontrolerów i wysyłanie poleceń do wyświetlenia na wyjściach poszczególnych układów.
 

Chciałbym jakoś rozwiązać problem łączności i komunikacji tych urządzeń. Komunikacja powinna odbywać się po kablu, aby zmniejszyć wpływ zewnętrznych zakłóceń. Pojedyncze układy nie wymieniają informacji między sobą, komunikacja jest jedynie między masterem i poszczególnymi jednostkami. Opóźnienia w komunikacji powinny być możliwie niskie, poniżej 25ms. Pisząc o opóźnieniu mam na myśli czas pomiędzy tym, że sensor coś wykrył, a momentem w którym informacja dociera do jednostki sterującej i w odpowiednio w drugą stronę dla wysyłanego polecenia do układu. Co ważne sygnał wejściowy może pojawić się na wielu urządzeniach jednocześnie, więc trzeba uwzględnić zajętość linii.

 

Chciałbym skorzystać z jakieś magistrali. Po analizie możliwości najlepszy wydaje mi się do tego CAN. Oferuje możliwość wysyłania informacji samodzielnie przez pojedyncze układy, względnie wysoką prędkość transmisji i dość duży zasięg. Jednak przy takiej ilości urządzeń musiałbym to rozbić chyba na kilka osobnych podsieci i później połączyć te 'małe' centralki z głównym urządzeniem sterującym całością. Np. jakiś switch i skrętka + serwer?
Zastanawiałem się jeszcze, czy lepiej dać możliwość poszczególnym urządzeniom 'zgłaszać' się do mastera gdy coś wykryją, czy może lepiej pójść w typową komunikację master-slave. W takim systemie master cały czas iterowałby po wszystkich układach wysyłając dane wyjściowe i otrzymując w odpowiedzi aktualny stan sensorów wejściowych. Przydałoby się w takiej sytuacji z 10-20Hz na układ. Zakładając, że wykrywałyby one wystąpienie danego zdarzenia jak np. pojawienie się świata w fotodiodzie, można by buforować informacje do czasu przesłania jej do centralki. Może takie podejście umożliwiłoby skorzystanie z innej komunikacji? Jakiej?
Jeśli chodzi o wielkość transferowanych danych (nie całej wiadomości z adresowaniem) to myślę, że mógłbym upakować się w 1 bajcie.


Czy rzucają wam się w oczy jakieś wyraźne problemy, które mogą pokrzyżować moje plany? Może moje założenia są z góry błędne i powinienem kompletnie inaczej podejść do komunikacji, czy nawet projektu pojedynczych układów? Zakładam łącznie około 500-800 sensorów zbierających dane z otoczenia. W pobliżu nie będzie jakiś urządzeń przemysłowych, czy innych dużych źródeł zakłóceń.
Mam nadzieje, że nie przeraziłem nikogo ścianą tekstu. 
Jestem otwarty na wszelkie pomysły i uwagi 🐱👓

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.