Стартовая страница › Форумы › Разработка и интеграция › Опрос КП при ошибке связи
- В этой теме 18 ответов, 2 участника, последнее обновление 7 лет, 2 месяца назад сделано
Mikhail.
-
АвторЗаписи
-
14.06.2019 в 09:54 #12231
manjey73УчастникВ настройках Параметра линии установлено Количество попыток запроса при ошибке = 3
Линии настроена как TCP Client, но при ошибке не происходит повторного запроса.
Почему ? В драйвере при нескольких запросах и хотя бы одной ошибке на любой из запросов счетчик Сеанса связи ошибок увеличивается.
14.06.2019 в 11:19 #12236
manjey73УчастникУстановил галочку «Оставаться на связи», при ошибке линии происходит отключение от узла. Повторного чтения по ошибке не происходит.
Опрос каждые 5 минут выставлен.
Как при при ошибке должен проводиться опрос согласно выставленным параметрам Количество попыток запроса при ошибке = 3. Почему не происходит ?
14.06.2019 в 19:25 #12239
MikhailМодераторО каком драйвере идёт речь?
14.06.2019 в 20:10 #12243
manjey73УчастникПульсар, специально сделал, чтобы даже при одном ошибочном запросе весь Сеанс был ошибкой.
Не зависит от последний запрос был с ошибкой или первый или все запросы в ошибке, никогда не происходит повторного опроса целиком.Может в коде что надо добавлять для этого ?
14.06.2019 в 20:15 #12245
manjey73УчастникИ не зависит от установки «Оставаться на связи».
15.06.2019 в 09:13 #12247
MikhailМодератор15.06.2019 в 14:14 #12248
manjey73УчастникПовторный опрос происходит не по lastCommSucc = false; ? как-то надо заставлять повторять опрос ?
то есть это не на уровне Коммуникатора происходит ?
-
Ответ изменён 7 лет, 2 месяца назад пользователем
manjey73.
16.06.2019 в 10:52 #12252
manjey73УчастникХм, без комментариев ничего толком не понял в коде…
Можно сделать комментарии более подробно для указанных примеров как это работает ?Каким образом это связано с параметром количества опросов при ошибках в Коммуникаторе ?
16.06.2019 в 13:27 #12255
MikhailМодераторэто не на уровне Коммуникатора происходит ?
На уровне драйвера.
Каким образом это связано с параметром количества опросов при ошибках в Коммуникаторе ?
Найдите код методов RequestNeeded() и FinishRequest() в проекте ScadaCommCommon, думаю это прояснит ситуацию.
16.06.2019 в 14:07 #12257
manjey73УчастникА, спасибо… А то ползая по ГИТу непонятно, откуда ноги растут, надо будет на ПК смотреть, скачав…
17.06.2019 в 11:21 #12269
MikhailМодераторДа, на GitHub код смотреть не удобно, потому что нет навигации между методами и классами и нельзя сворачивать блоки.
19.06.2019 в 17:55 #12335
manjey73УчастникНе понимаю кода…. KpModbusLogic
Вот по этой ссылке есть код
while (elemGroupInd < elemGroupCnt && lastCommSucc)А кто определил, что lastCommSucc = true ?, а если у меня несколько запросов в группе элементов и один из запросов не вернул true, ну ошибка CRC или timeout-а и что, опрос прекращается.
Или я что-то не догоняю опять с этим lastCommSucc ????? ведь если он не будет true то не будет выполняться while и не произойдет опроса из очередной группы элементов ?
20.06.2019 в 18:37 #12343
MikhailМодератор1. Сначала чуть выше lastCommSucc = false;
2. Если запрос выполнился успешно, то lastCommSucc = true и мы переходим к запросу следующей группы элементов, то есть идём на п.1 этого списка.А если мы 3 раза сделали запрос, но неудачно, то мы выпадаем из while (elemGroupInd < elemGroupCnt && lastCommSucc), потому что lastCommSucc == false
20.06.2019 в 22:45 #12345
manjey73УчастникВот и вопрос. у нас 5 запросов, 1,2 удачные, 3 нет, и мы выпали вообще не прочитав 4 и 5 ? и где логика если связь может восстановиться ? мы потеряли 2 запроса. а если запросов куда больше и неудачный в начале, то потеряли все остальные?
21.06.2019 в 18:52 #12360
MikhailМодератору нас 5 запросов, 1,2 удачные, 3 нет, и мы выпали вообще не прочитав 4 и 5 ?
Именно так. Но Вы можете сделать по-другому и перейти к следующему запросу, чтобы считать хоть какие-то данные. Это на усмотрение автора драйвера.
-
Ответ изменён 7 лет, 2 месяца назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.