Czas odpowiedzi na gniazdo zależy od urządzenia

0

Projekt, nad którym pracuję, wymaga połączenia NodeMCU (moduł WiFi ESP8266) z bramą (Advantech ARK-1123) wyposażoną w adapter bezprzewodowy. Po tym, jak brama utworzyła oddzielną sieć bezprzewodową i połączyła węzeł, odkryłem, że czas odpowiedzi na otrzymanie wiadomości z bramy jako klienta gniazda i wysłanie z powrotem niektórych danych to 350ms za linię odesłany.

Po przeanalizowaniu kodu NodeMCU i znalezieniu niczego, co mogłoby to spowodować, próbowałem przetestować ten sam program na różnych urządzeniach. Wyniki były takie, że trwa ~ 350ms aby wysłać jedną linię do bramy, ~ 150ms na inny komputer z adapterem bezprzewodowym USB i ~ 10ms do mojego telefonu z aplikacją klienta TCP, niezależnie od używanej sieci lub sposobu, w jaki komputery są podłączone do sieci (przewodowej lub bezprzewodowej). Jestem pewien (cóż, bardziej jak nadzieja), że na komputerach jest pewne ustawienie sieciowe, które domyślnie jest dostępne w telefonie. Celem byłoby mieć czas do 10-15ms na bramce.

Jakieś pomysły?

Domonkos Baksa
źródło
Różne karty sieciowe, różne wielkości MTU, różne systemy operacyjne i stosy sieciowe, różne obciążenia systemu.
Seth
Jasne, ale czy ma sens, że mój telefon szybciej odbiera dane niż komputer? Ponadto 350ms wydaje się absurdalne, aby wysłać łańcuch do urządzenia w tej samej sieci.
Domonkos Baksa
ZA NodeMCU uruchamia wiele warstw abstrakcji języków interpretowanych, ma pojedynczy rdzeń RISC z pamięcią ~ 80 MHz i ~ 128 kB. W zależności od tego, co robisz, wyobrażam sobie, że raczej łatwo jest je wączyć. Dodatkowo, twoje numery mówią tylko o wydajności bezprzewodowej, która może być czymkolwiek od a do ac +, w zależności od tego, co faktycznie robisz i jak podłączasz urządzenie (a). Ponieważ masz dowolną liczbę zmiennych, które mogą wpływać na czasy odpowiedzi.
Seth
Zerwałem mój kod NodeMCU z niczego niezwiązanego z tą komunikacją, aby upewnić się, że nie zależy od jego wydajności. Mogę dołączyć kod lub podać dowolną konfigurację, jeśli uważasz, że to pomoże. Wydaje mi się, że komunikacja tak podstawowa jak komora gniazda nie powinna trwać tak długo. Pingowanie urządzenia odpowiada w 4-5ms, co wydaje się bardziej prawdopodobne.
Domonkos Baksa
Więc te testy były na TCP? Czy zaangażowano TLS? Czy sesja TCP została już uruchomiona lub czy za każdym razem musiałeś wykonać 3-drożny uścisk dłoni? Czy Twój słuchacz był już uruchomiony, czy też został uruchomiony przez xinetd (lub systemd lub cokolwiek)?
Spiff