Цитата:
Сообщение от Max2114
|
Кстати да, давно хотел создать тему с решением проблемы адастровского сервера. Наверное просто переименую вашу.
Создатель видео действительно просто один из наших клиентов и не имеет отношения к адастре. На видео показан способ закостылить повторный опрос при ошибке связи.
Кстати, я думаю, что неустойчивость работы их сервера, когда в сети много устройств, растёт из этого же места, откуда выросла неустойчивость работы с Пикселем. Когда устройств много, латентности растут и, похоже, после перевала через критические для их сервера 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.
Перефразирую. Сейчас ваш сервер реагирует как юная барышня криком "Аааааа, мЫЫЫЫЫЫшь!!!" на любую тень. Хотя должен как нормальный пацан, убеждаться, что в тени нет подкроватных чудищ и продолжать красться на кухню к холодильнику к любимым сосисонам.
|