Стартовая страница › Форумы › Разработка и интеграция › Зависание опроса, после откл. опрашиваемого
- В этой теме 40 ответов, 2 участника, последнее обновление 3 года, 8 месяцев назад сделано Mikhail.
-
АвторСообщения
-
15.07.2020 в 09:38 #16653manjey73Участник
Так-с. Схема подключения. Scada на Raspberry Pi, опрос через 2-х портовый Ethernet-RS485 (USR N-520), оба подключены к ИБП.
Счетчик Меркурий 236 на одном порту, и Allen Bradley на втором порту.
При отключении света соответственно отключается счетчик (питание интерфейса по 3-ей фазе), Allen Bradley тоже на ИБП, но вчера я его отключил из розетки. Картина та же.
Драйвера соответственно разные, но работающие через COM порт. В Scada настроен как TCP клиент на Ethernet-RS485 преобразователь.15.07.2020 в 09:39 #16654manjey73Участник15.07.2020 в 09:46 #16655manjey73УчастникПри отключении устройства от сети, в логе происходит запрос, ответа нет. Прибор подключаем обратно к сети, ничего не меняется. Только после перезапуска линии в логе появляется надпись Принято (0/2) Ошибка связи. Как будто не срабатывает отключение связи по timeout.
Так происходит на обоих приборах. Вот конец лога при отключении питания прибора
2020-07-14 23:12:01 Отключение от 192.168.0.12 2020-07-14 23:14:00 Установка TCP-соединения с 192.168.0.12:26 2020-07-14 23:14:00 Сеанс связи с КП 133 "MicroLogix1400_1", тип: KpRAdf1, адрес: 89 Отправка (20): 10 01 59 10 02 59 00 0F 00 CA 19 A2 3A 0A 89 00 00 10 03 ED
Хотя питание я на него подал, и скопировал лог гораздо позже, после его подключения.
В драйверах вроде нет потоков, то есть весь опрос происходит в Session.
В драйверах реализован разный способ остановки опроса, если в Меркурий вычисляется длина ответа, то в Allen Bradley идет остановка по массивам байт. Но логически все выполняется в Session последовательно.Вчера поздно приперся домой, так что логи только с одного устройства. Со счетчика нет. Еще могу отключить счетчик воды Пульсар по питанию, он висит на USB-RS485 преобразователе.
15.07.2020 в 16:49 #16656MikhailМодераторНужно точнее определить момент зависания.
Добавьте в драйвере вывод в лог до и после отправки данных, до и после приёма данных.Отключается ли питание сетевого роутера и преобразователя Ethernet-RS485 при отключении света?
15.07.2020 в 17:47 #16657manjey73УчастникНет, питание остального не отключается. Галочка «Оставаться на связи» отключена.
Сегодня еще постараюсь проверить на счетчике воды Пульсар. У него отдельное питание.
Добавлю вывод в лог. Проверю еще чтение счетчика через USB-RS485 в такой ситуации.
По результату отпишусь.15.07.2020 в 21:50 #16658manjey73УчастникУспел проверить только счетчик воды. На скрине все видно. Отключил питание счетчика, потом включил.
Все таки подозрение что не отрабатывает код остановки когда происходит опрос COM over TCP
завтра добавлю код логирования в драйвера Меркурий и Allen Bradley и вечером проверю.
16.07.2020 в 13:21 #16659manjey73УчастникСегодня отключали свет. Снял логи до перезагрузки Коммуникатора
2020-07-16 10:45:43 Отключение от 192.168.0.12 2020-07-16 10:46:00 Установка TCP-соединения с 192.168.0.12:23 2020-07-16 10:46:00 Сеанс связи с КП 64 "Mercury236мгн_20", тип: KpMercury23x, адрес: 20 Отправка (5): FE 03 08 11 06 Отправка (6): 14 08 14 00 8B 16 Приём (1/19): FE Ошибка связи! Отправка (6): 14 08 14 00 8B 16
Видимо отключение произошло на моменте чтения (Прием (1/19).
И после перезагрузки Коммуникатора
даже как бы и ответ пришел, очень интересно, почему данного ответа не было в логе ? Хотя не важно, timeout линии точно не отрабатывает, когда COM порт подключен через Ethernet-RS485, подключенный к ИБП. Отключается питание только на конечном устройстве.
16.07.2020 в 13:36 #16660manjey73УчастникДа, счетчик воды, подключенный через USB-RS485 и по питанию на грязном, как ни в чем не бывало продолжил чтение после появления питания.
2020-07-16 10:46:00 Сеанс связи с КП 53 "Счетчик воды", тип: KpPulsar, адрес: 68309 Отправка (14): 00 06 83 09 01 0E 01 00 00 00 C2 90 99 EC Приём (14/14): 00 06 83 09 01 0E 8C 6C 4F 40 C2 90 00 38 OK! Отправка (12): 00 06 83 09 0A 0C 1C 00 56 EE 22 05 Приём (18/18): 00 06 83 09 0A 12 02 00 00 00 00 00 00 00 56 EE FE 3E OK! 2020-07-16 10:47:00 Сеанс связи с КП 53 "Счетчик воды", тип: KpPulsar, адрес: 68309 Отправка (14): 00 06 83 09 01 0E 01 00 00 00 80 81 69 40 Приём (0/14): Ошибка связи! Отправка (14): 00 06 83 09 01 0E 01 00 00 00 80 81 69 40 Приём (0/14): Ошибка связи! --------- тут все ошибки связи пока не было света ------- 2020-07-16 11:28:00 Сеанс связи с КП 53 "Счетчик воды", тип: KpPulsar, адрес: 68309 Отправка (14): 00 06 83 09 01 0E 01 00 00 00 EB 75 47 F7 Приём (0/14): Ошибка связи! Отправка (14): 00 06 83 09 01 0E 01 00 00 00 EB 75 47 F7 Приём (0/14): Ошибка связи! 2020-07-16 11:29:00 Сеанс связи с КП 53 "Счетчик воды", тип: KpPulsar, адрес: 68309 Отправка (14): 00 06 83 09 01 0E 01 00 00 00 27 48 D3 26 Приём (0/14): Ошибка связи! Отправка (14): 00 06 83 09 01 0E 01 00 00 00 27 48 D3 26 Приём (0/14): Ошибка связи! 2020-07-16 11:30:00 Сеанс связи с КП 53 "Счетчик воды", тип: KpPulsar, адрес: 68309 Отправка (14): 00 06 83 09 01 0E 01 00 00 00 C3 3A 18 03 Приём (14/14): 00 06 83 09 01 0E EE 7C 4F 40 C3 3A 48 56 OK! Отправка (12): 00 06 83 09 0A 0C 1C 00 D1 BB 81 CA Приём (18/18): 00 06 83 09 0A 12 02 00 00 00 00 00 00 00 D1 BB 5D F1 OK!
И вот я перестартанул линию, чтобы Меркурий начал читаться
2020-07-16 12:52:00 Сеанс связи с КП 53 "Счетчик воды", тип: KpPulsar, адрес: 68309 Отправка (14): 00 06 83 09 01 0E 01 00 00 00 87 17 EB 1E Приём (14/14): 00 06 83 09 01 0E 77 BE 4F 40 87 17 DF 53 OK! Отправка (12): 00 06 83 09 0A 0C 1C 00 52 7F E1 69 Приём (18/18): 00 06 83 09 0A 12 02 00 00 00 00 00 00 00 52 7F 3D 52 OK! 2020-07-16 12:52:07 Закрытие последовательного порта /dev/mydev/Com5 2020-07-16 12:52:07 Завершение работы линии связи 12 "Вода" -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 2020-07-16 12:52:15 Инициализация линии связи 12 "Вода" 2020-07-16 12:52:17 Запуск линии связи 12 "Вода" 2020-07-16 12:52:17 Открытие последовательного порта /dev/mydev/Com5 2020-07-16 12:52:17 Сеанс связи с КП 53 "Счетчик воды", тип: KpPulsar, адрес: 68309 Отправка (14): 00 06 83 09 01 0E 01 00 00 00 72 45 2D B3 Приём (14/14): 00 06 83 09 01 0E 77 BE 4F 40 72 45 19 FE OK!
16.07.2020 в 18:43 #16661MikhailМодераторТо есть зависания перестали происходить?
Если нет, то в каком месте зависание?17.07.2020 в 11:01 #16664manjey73УчастникНе перестали.
1. Счетчик эл. Меркурий 236 подключен через Ethernet-RS485 (на ибп) как TCP клиент
зависает
2. счетчик воды подключен через USB-RS485, питание берет от грязной розетки. не зависает.драйвера и того и другого есть на ГИТе, по части опроса они практически идентичны, так как известна длина ответа. Механизмов остановки по массиву байт не используется.
3. PLC Allen-Bradley так же подключен через тот же Ethernet-RS485 на втором порту, но и сам сидит на ИБП. Вот его я отключал из розетки и зависание такое же.
Момент зависания виден на скрине. СО стороны Scada идет запрос и тишина. Ни тебе отработки по таймауту, ничего. Но когда перегружаешь Коммуникатор, чтобы возобновился опрос, каким то чудом в лог попадает запись «Прием (0/19» и т.д.
В момент зависания в логи нет строк «Прием (0/Х)» нет записи «Ошибка» и т.д. И это будет висеть до тех пор, пока не перезапустишь Коммуникатор. Как вариант можно вырубить питание еще и преобразователю, вероятно восстановится соединение после этого.
17.07.2020 в 12:34 #16666manjey73УчастникТак как соединение через TCP клиент и связь с Ethernet-RS485 преобразователем есть, то Коммуникатор ждет ответа от прибора бесконечно, но если успел прийти хоть один байт, тогда срабатывает timeout. Что видно по скрину. Но если нет ни одного байта (следующий запрос на скрине) то выпадает в осадок. А так как после включения питания прибора он ждет запроса, которого уже нет и не будет, так как Коммуникатор выпал в осадок на ожидание то так и продолжает висеть.
17.07.2020 в 17:01 #16671MikhailМодераторКак я уже писал: «Добавьте в драйвере вывод в лог до и после отправки данных, до и после приёма данных.»
Без этого непонятно, зависание происходит в момент отправки или в момент приёма.Возникнет ли зависание, если запустить опрос с Windows-машины? Может быть проблема проявляется только на Mono.
17.07.2020 в 22:03 #16672manjey73УчастникСкорее всего вы правы, проблема в Mono вероятно.
Запустил опрос на Windows, вырубил питание на ПЛК, срабатывает по таймауту, потом включил и пошел опрос.Завтра обновлю Raspberry по полной. Вообще она у меня зависает время от времени, вплоть до невозможности подключиться по SSH. А чего ей не хватает непонятно?…
18.07.2020 в 10:24 #16673manjey73УчастникОбновил систему и Mono
Mono JIT compiler version 6.10.0.104 (tarball Fri Jun 26 20:06:03 UTC 2020)
Ничего не изменилось.
Лог до перезагрузки Коммуникатора2020-07-18 09:44:01 Отключение от 192.168.0.12 2020-07-18 09:46:00 Установка TCP-соединения с 192.168.0.12:26 2020-07-18 09:46:00 Сеанс связи с КП 133 "MicroLogix1400_1", тип: KpRAdf1, адрес: 89 Отправка (20): 10 01 59 10 02 59 00 0F 00 D6 04 A2 3A 0A 89 00 00 10 03 F6
и после перезагрузки Коммуникатора
2020-07-18 09:44:01 Отключение от 192.168.0.12 2020-07-18 09:46:00 Установка TCP-соединения с 192.168.0.12:26 2020-07-18 09:46:00 Сеанс связи с КП 133 "MicroLogix1400_1", тип: KpRAdf1, адрес: 89 Отправка (20): 10 01 59 10 02 59 00 0F 00 D6 04 A2 3A 0A 89 00 00 10 03 F6 Приём (0/2): Ошибка связи! 2020-07-18 09:49:31 Отключение от 192.168.0.12 2020-07-18 09:49:31 Завершение работы линии связи 19 "Allen" -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 2020-07-18 09:49:37 Инициализация линии связи 19 "Allen" Registration key is valid 2020-07-18 09:49:39 Запуск линии связи 19 "Allen" 2020-07-18 09:49:39 Установка TCP-соединения с 192.168.0.12:26 2020-07-18 09:49:39 Сеанс связи с КП 133 "MicroLogix1400_1", тип: KpRAdf1, адрес: 89 Отправка (20): 10 01 59 10 02 59 00 0F 00 01 00 A2 3A 0A 89 00 00 10 03 CF Приём (2/2): 10 06 OK! Отправка (4): 10 05 59 A7 Приём (69): 10 02 00 59 4F 00 01 00 59 00 01 00 AB 1A 05 00 00 00 00 00 00 42 00 00 00 01 00 49 D1 FF 57 00 CB FF FB FF 00 00 00 00 00 00 00 00 05 00 F1 FF 00 00 ED 01 00 00 2C 01 00 00 00 00 04 00 00 00 28 00 10 03 80 Отправка (2): 10 06 OK! Отправка (20): 10 01 59 10 02 59 00 0F 00 02 00 A2 9E 0B 89 00 00 10 03 69 Приём (2/2): 10 06 OK! Отправка (4): 10 05 59 A7 Приём (171): 10 02 00 59 4F 00 02 00 00 00 64 00 00 00 E8 03 00 00 64 00 31 01 ED 01 0A 00 10 10 03 99 01 8C 03 4D 04 FD 03 2C 01 E4 FF D2 FF BE FF A8 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C3 F2 00 C0 01 00 00 00 E8 03 00 00 10 10 00 2D 00 06 00 19 00 08 00 0B 00 00 00 2C 01 E4 FF D2 FF BE FF A8 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2C 01 00 00 00 00 00 00 00 00 19 00 1E 00 78 00 2D 00 7C 01 0A 00 20 1C 08 00 00 00 00 00 00 00 00 00 59 00 00 0A 2C 01 0A 00 00 00 00 00 00 00 00 00 F0 00 10 03 34 Отправка (2): 10 06 OK! Отправка (20): 10 01 59 10 02 59 00 0F 00 03 00 A2 14 0C 89 00 00 10 03 F1 Приём (2/2): 10 06 OK! Отправка (4): 10 05 59 A7 Приём (31): 10 02 00 59 4F 00 03 00 31 08 3D 03 8E 03 00 00 00 00 00 00 00 00 00 00 00 00 07 05 10 03 3F Отправка (2): 10 06 OK! Отправка (20): 10 01 59 10 02 59 00 0F 00 04 00 A2 14 08 8A 00 00 10 03 F3 Приём (2/2): 10 06 OK! Отправка (4): 10 05 59 A7 Приём (32): 10 02 00 59 4F 00 04 00 00 C8 E2 45 9E 80 D6 3F 75 CD E4 3C 00 10 10 03 45 00 00 BC 41 10 03 7B Отправка (2): 10 06 OK! 2020-07-18 09:49:40 Отключение от 192.168.0.12
Как видно строк Приём (0/2): и Ошибка связи! до перезагрузки Коммуникатора НЕТ. а после перезагрузки появляются.
18.07.2020 в 10:30 #16674MikhailМодераторЗначит опять в Mono… Обязательно перейдём на .NET Core — вопрос времени.
Надпись «Приём (0/2)» появляется уже после того, как метод приёма отработал. Поэтому нам нужно убедиться, что приём уже начался и зависание происходит либо на отправке, либо на приёме. Поэтому нужно в лог добавить дополнительный вывод сообщений — до начала приёма и после окончания приёма.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.