Показать сообщение отдельно
Старый 21.08.2018, 12:10   #3
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Адастра доработала реализацию связи с контроллерами Pixel

Цитата:
Сообщение от Max2114 Посмотреть сообщение
https://www.youtube.com/watch?v=SQ0u3H8NSww
Прислали мне сегодня на почту ссылку.
Кстати да, давно хотел создать тему с решением проблемы адастровского сервера. Наверное просто переименую вашу.

Создатель видео действительно просто один из наших клиентов и не имеет отношения к адастре. На видео показан способ закостылить повторный опрос при ошибке связи.

Кстати, я думаю, что неустойчивость работы их сервера, когда в сети много устройств, растёт из этого же места, откуда выросла неустойчивость работы с Пикселем. Когда устройств много, латентности растут и, похоже, после перевала через критические для их сервера 1.5-2 сек обмен в сети разрушается уже не важно с какими контроллерами.

И в принципе, видео чётко показывает, что я был абсолютно прав, когда писал эти строки:

Цитата:
Время, на которое пропадает связь, можно сократить настройкой сервера. Как правило все нормальные серверы делают несколько попыток соединения (типично 3 раза) прежде, чем выдают статус "Нет связи". Далее, если все 3 попытки были неудачны, то следует пауза и следующие 3 попытки связи (типичное время 60 сек). У вас, похоже, количество попыток равно единице, да и сократить паузу до 5 секунд тоже ничего не мешает.


Из лога не видно, что ваш сервер попытался три раза передать и затем сгенерировал ошибку.

Нормальный лог выглядит так:

13:55:03.060 [996] (192.168.0.242:502) Tx: [12] 00 14 00 00 00 06 01 03 A4 12 00 02
13:55:03.067 [996] (192.168.0.242:502) Rx: [13] 00 14 00 00 00 07 01 03 04 00 00 00 00
13:55:04.002 [996] (192.168.0.242:502) Tx: [12] 00 15 00 00 00 06 01 02 38 00 00 06
13:55:07.003 [996] (192.168.0.242:502) Tx: [12] 00 16 00 00 00 06 01 02 38 00 00 06
13:55:10.004 [996] (192.168.0.242:502) Tx: [12] 00 17 00 00 00 06 01 02 38 00 00 06
13:55:13.004 [996] Ошибка: устройство не отвечает (192.168.0.242:502 Адрес:1)

Это я кабель откинул. Видно, что есть 3 попытки и только потом сервер отругался.

В вашем случае было бы что-то типа:

(192.168.0.242:502) Tx: [12] 00 14 00 00 00 06 01 03 A4 12 00 02
(192.168.0.242:502) Ошибка: connection refused
(192.168.0.242:502) Подключение - Ok
(192.168.0.242:502) Tx: [12] 00 14 00 00 00 06 01 03 A4 12 00 02
(192.168.0.242:502) Rx: [13] 00 14 00 00 00 07 01 03 04 00 00 00 00

Не знаю, какая именно у вас причина, но будет либо "Connection refused", либо "Connection reset by peer". В любом случае сервер должен проводить реконнект и ещё две попытки передать данные.

Тут вопрос, почему это делает Пиксель, вторичен. Причин может быть много и зависят они все от компьютера и состава сети. Первичен вопрос о том, почему сервер так реагирует на две некритические ошибки протокола TCP.

Перефразирую. Сейчас ваш сервер реагирует как юная барышня криком "Аааааа, мЫЫЫЫЫЫшь!!!" на любую тень. Хотя должен как нормальный пацан, убеждаться, что в тени нет подкроватных чудищ и продолжать красться на кухню к холодильнику к любимым сосисонам.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием