konto usunięte

Temat: Wybór odpowiedniego protokołu do komunikacji

Natrafiłem na ciekawy problem i postanowiłem zasięgnąć opinii innych osób. Otóż robię aplikację w Symfony która ma obsługiwać zarówno ludzi jak i mikrokontrolery. O ile z pierwszą grupą wszystko jest jasne, to już z mikrokontrolerami mam mały problem. Mógłbym co prawda obsługiwać je przez zwykłe żądanie HTTP, jednak jest to dla mnie trochę bez sensu. Przesyłam lub odbieram jedynie kilka znaków (w tym hasło) , więc rozsądniej byłoby skorzystać z innego protokołu.
Może ktoś spotkał się z bibliotekami PHP do innych protokołów niż HTTP/HTTPS, lub nawet robił coś podobnego i może polecić konkretny protokół do takiego celu?

konto usunięte

Temat: Wybór odpowiedniego protokołu do komunikacji

Ale przecież protokół to nic innego jak opisany sposób wymiany informacji. Za pośrednictwem TCP przesyłasz dane. Ale jak za to jak je zinterpretować odpowiada protokół.

Ciężko odpowiedzieć na to pytanie nie wiedząc co będziesz przesyłał. Jeżeli tylko kawałki danych to zrób sobie protokół bitowy. Rezerwujesz sobie kilka pierwszych bitów i nimi operujesz. Musisz rozpocząć wymianę danych, oddzielać instrukcje, kończyć jakoś wymianę itp.

Ta funkcja Ci się przyda http://php.net/manual/en/function.chr.php razem z tabelą ascii http://www.asciitable.com/

konto usunięte

Temat: Wybór odpowiedniego protokołu do komunikacji

Bardziej chodziło mi o to czy istnieją jakieś biblioteki do Symfony związane z protokołami. Samo zapytanie do serwera może nie jest jakimś problemem ponieważ i tak korzystam na mikrokontrolerze z biblioteki z wbudowanym HTTP i Telnet. Jednak chcę potwierdzać odebranie kompletu danych i ich poprawność. Więc przydałby mi się właśnie jakiś protokół który nie wysyła tyle zbędnych śmieci co HTTP.
Protokół oparty o czystą wymianę bitową byłby najlepszy. Głównie dlatego że taki mikrokontroler to straszny prymityw od strony programowej. Żadnego systemu operacyjnego ani oprogramowania. A jak kiedyś wgrałem bibliotekę do zamiany liczby 8-bitowej na ASCII to zajęła jakieś 25% pamięci Flash. Aż się nie mogłem przestać śmiać jak to zobaczyłem.
Stąd chciałbym już na wstępie dmuchać na zimne i maksymalnie uprościć obliczeniowo całą komunikację. Dla takich prostszych mikrokontrolerów komunikacja przez Ethernet to szczyt możliwości.
Wojciech Mazurek

Wojciech Mazurek właściciel, PPHU
Neuron

Temat: Wybór odpowiedniego protokołu do komunikacji

Dawid Z.:
Głównie dlatego że taki mikrokontroler to straszny prymityw od strony programowej. Żadnego systemu operacyjnego ani oprogramowania. A jak kiedyś wgrałem bibliotekę do zamiany liczby 8-bitowej na ASCII to zajęła jakieś 25% pamięci Flash. Aż się nie mogłem przestać śmiać jak to zobaczyłem.

to chyba Atiny4 z 6 nogami i 256bajtami flasha ;)

Stąd chciałbym już na wstępie dmuchać na zimne i maksymalnie uprościć obliczeniowo całą komunikację. Dla takich prostszych mikrokontrolerów komunikacja przez Ethernet to szczyt możliwości.

Najprostszą i dość sensowną drogą jest konwerter RS/LAN

Wysyłasz w czystym protokole TCP/IP strumień danych do konwertera RS/LAN a on ten sam strumień, bajt po bajcie prześle do procesora po RS.

Tu https://www.elmark.com.pl/pl/sklep/moxa/nport-5110
jest konwerter nport - ten to oczywiście gotowe ustrojstwo ale są podobne konwertery do zabudowy na PCB

Taki konwerter (adres IP, parametry rsa itp ) można konfigurować i przez wbudowany webserwer
i z procesora za pomocą RSa

To warstwa fizyczna i najniższy poziom - wyżej można zastosować np modbusa TCP
To bardzo prosty protokół do zaimplementowania i w procku ( są setki przykładów)
jak i do samodzielnego zaimplementowania wszędzie tam gdzie można pchać/ zdejmować na/ze stosu TCP strumienie (tablice) bajtów.

konto usunięte

Temat: Wybór odpowiedniego protokołu do komunikacji

Z tą zajętością pamięci to wcale nie żartuję. Mikrokontrolery typu ATmega czy ATtiny mają dość prymitywny asembler i to powoduje ogromne trudności w pisaniu programów. Polecam obejrzeć sobie porównanie asemblera w rodzinach rdzeni ARM. Na takiej rycinie najlepiej widać dlaczego prostsze mikrokontrolery mają tak dużą trudność w wykonywaniu nawet prostych zadań. Oraz naturalnie dlaczego proste w C programy zajmują ogromną ilość miejsca po skompilowaniu na kod maszynowy/asembler.

Samo hardware posiadam, jest to coś w rodzaju tego co pokazujesz. Jednak korzysta z innego interfejsu i jest 10x tańsze. Nie ma tutaj problemu bo z tego co widziałem to nawet dwa układy scalone produkują do obsługi Ethernetu. Nikt nawet nie próbuje tego sam ogarniać.

Dzięki twojej wypowiedzi o TCP przejaśniło mi się jak to ma wyglądać bitowo po samym kablu. Przyznam że nie do końca rozumiałem do tej pory model OSI, jakoś nie mogłem bez wątpliwości przełożyć rysunku OSI na bity.
Natomiast protokół modbus TCP może być właśnie tym czego szukam. Pozostanie tylko pogrzebać w biblitekach czy jak kto woli Bundles do Symfony, w poszukiwaniu funkcji do wysyłania pakietów TCP. Chociaż tutaj to i nawet własna bliblioteka nie będzie pewnie problemem.Ten post został edytowany przez Autora dnia 24.11.15 o godzinie 23:47

konto usunięte

Temat: Wybór odpowiedniego protokołu do komunikacji

Może bardzo lekki protokół MQTT.



Wyślij zaproszenie do