Skocz do zawartości

Jak najlepiej zrealizować komunikację/protokół komunikacji między dwoma urządzeniami do sterowania?


Pomocna odpowiedź

Napisano (edytowany)

Cześć.

Na wstępnie chciałem uprzedzić, że nie do końca jestem programistą albo automatykiem, chociaż studia techniczne niedawno właśnie skończyłem.

Mam taki mini projekt, w którym potrzebne jest zrobienie sterowania na mikrokontrolerze podpiętym do jakiegoś SBC po UART'cie (albo innej, podobnej magistrali). Potrzebuję, żeby komunikacja między SBC i mikrokontrolerem była możliwie jak najbardziej płynna i responsywna (tj. przesyłanie poleceń sterujących zawierających m.in. nastawy regulatorów wyglądało dla człowieka prawie jak real-time (nie musi być faktycznie real-time)).

Żeby być jasnym to nie pytam o wybór magistrali, jej konfigurację, czy o platformę do wykorzystania. Chodzi mi raczej ściśle o to, jak zrealizować komunikację, żeby używając cyfrowych magistrali/protokołów stworzyć iluzję ciągłości w przesyle informacji sterujących - czyli, nazwijmy to metaforycznie, iluzję przesyłu informacji poprzez ciągłe sygnały analogowe. Obrazowym przykładem byłyby te wszystkie tańsze drony, które opierają się o komunikację po WiFi ze smartfonem, gdzie joysticki kontrolera pozwalają na dość responsywne zdalne sterowanie, a jednocześnie cały system komunikacji działa cyfrowo i pozwala na przykład strumieniować obraz z kamery.

Niestety nie miałem na studiach w ogóle takich zagadnień, a są mi akurat teraz potrzebne. Chciałbym zrobić to porządnie. Na razie mam to zrobione tak, że po prostu przesyłam odpowiednie ciągi bajtów w jakichś tam odstępach czasowych z dużą częstotliwością. No, ale nie czuję, żeby to było dobre. Na pewno jest mądrzejszy sposób.

Jeśli bełkoczę albo temat jest zbyt rozległy to chętnie przygarnę też informacje o jakichś źródłach - artykułach, filmikach, książkach. Dziękuję.

Edytowano przez _Shadow_

@_Shadow_ witam na forum 🙂 Myślę, że sporo zależy od faktycznego zastosowania tego projektu. Te dane chcesz przesyłać przewodowo, czy bezprzewodowo? Jakiej prędkości i jakiego transferu oczekujesz? To pojedyncze bajty (tak jak napisałeś) czy jakieś większe pakiety danych? Dobrze byłoby to określić lub podać konkretne przykłady, bo płynność i szybkość dla każdego może być pojęciem względnym i ogólnym 😉 

  • Lubię! 1
Dnia 26.07.2024 o 22:24, _Shadow_ napisał:

Obrazowym przykładem byłyby te wszystkie tańsze drony, które opierają się o komunikację po WiFi ze smartfonem, gdzie joysticki kontrolera pozwalają na dość responsywne zdalne sterowanie, a jednocześnie cały system komunikacji działa cyfrowo i pozwala na przykład strumieniować obraz z kamery.

Sygnał analogowy -> ADC -> przesyłanie -> odpowiedź 😉 

I po prostu te urządzenia naprawdę naparzają tymi danymi (dają nawet 10-20 tys. pakietów na sekundę, wtedy jest to akceptowalnie responsywne).

Myszki komputerowe (segment mid) mają taktowanie około 1kHz 😉 

  • Lubię! 1

Serdecznie dziękuję za odpowiedzi! 🙂 Powoli tworzy mi się już tutaj dokładniejszy obraz zagadnienia.

17 godzin temu, Treker napisał:

Te dane chcesz przesyłać przewodowo, czy bezprzewodowo?

Na oba sposoby. Komputer z mikrokontrolerem przewodowo, natomiast między komputerami bezprzewodowo.

17 godzin temu, Treker napisał:

płynność i szybkość dla każdego może być pojęciem względnym i ogólnym

Jasne, oczywiście. Są to pojęcia mało dokładne i obiektywne ich wyznaczenie i skwantyfikowanie pewnie mocno będzie zależeć od potrzeb konkretnego projektu i jego zastosowania. Natomiast w tej konkretnej chwili ciężko mi jeszcze coś bardziej konkretnego powiedzieć, bo na razie dopiero przymierzam się do tematu i staram się stać się bardziej doinformowanym z wyprzedzeniem.

17 godzin temu, H1M4W4R1 napisał:

te urządzenia naprawdę naparzają tymi danymi (dają nawet 10-20 tys. pakietów na sekundę, wtedy jest to akceptowalnie responsywne).

Oh. To tego się nie spodziewałem. Pewnie to jest jakoś super mega zoptymalizowane, żeby przesył i przetwarzanie tych pakietów odbywały się tak szybko. W moich starych drobnych projektach to mi się tylko udawało zrobić 60-100 Hz... Aż wstyd 😄

Moglibyście Panowie może polecić jakieś dobre źródła dotyczące tego jak się projektuje i optymalizuje takie systemy komunikacji? W ogóle przydały by mi się jakieś dobre źródła z telekomunikacji oraz automatyki/teorii sterowania ( bo tego niestety miałem najmniej :< ).

@_Shadow_ czy naprawdę musisz mieć komunikację typu dziesiątki kilosampli?

Akurat mysz jest tu bardzo dobrym przykładem. Wewnętrznie działa to powiedzmy na kilohercu. Ale interfejs BT HID  działa co najwyżej na 100 Hz. Mysz nie przesyła tego co dostała z czujnika, ale informację w stylu "od ostatniego razu mysz się przesunęła o x w poziomie i y w pionie, a poza tym lewy klawisz zmienił stan z puszczonego na wciśnięty".

Typowy czas ludzkiej reakcji to 0.1 do 0.7 sekundy... poniżej 0.1 sekundy nie przeczytasz cyfrowego interfejsu (możesz odczytać kąt albo zapalenie/zgaszenie ledy).

Przemyśl to.

  • Lubię! 2

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...