УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

[BugFixed] Последовательность отсоединения от контроллера Siemens (libnodave)


Автор Сообщение
Сообщение создано: 09. 11. 2012 [14:20]
punk
Василий Петров
Создатель темы
Зарегистрирован(а) с: 09.05.2011
Сообщения: 57
Есть контроллер (S7-315), подключенный по ethernet(CP-343-1). Очень давно у меня была проблема - иногда контроллер начинал мигать всеми светодиодами и на ключ не реагировал. Начиналось это при закрытии скады. Свое сообщение на эту тему не нашел, но на тот момент решили, что это что-то странное т.к. почти не воспроизводилось. Недавно удалось воспроизвести подобное зависание. Несколько удивили вызовы daveNewInterface() & daveConectPLC при отключении, думаю, что проблема в этом.
1|/WorkStation/sub_DAQ/mod_Siemens/cntr_CIP34/ | Останов контроллера!
0|/WorkStation/sub_DAQ/mod_Siemens/cntr_CIP34/ | Ошибка чтения блока '10': Timeout when waiting for PLC response
daveNewInterface(fd.rfd:26 fd.wfd:26 name:IFCIP34 local MPI:0 protocol:122 PB speed:2)
daveSetTimeOut(di:0xb31ef130, time:1500000)
IFCIP34 daveConnectPLC() step 1. got packet: :

Лог с включенной отладкой libnodave прилагаю.
Вложенный файл

daveLOGG (Тип файла: application/octet-stream, Размер: 30.92 килобайт) — 1354 загрузок
Сообщение создано: 09. 11. 2012 [15:04]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"punk" wrote:

Есть контроллер (S7-315), подключенный по ethernet(CP-343-1). Очень давно у меня была проблема - иногда контроллер начинал мигать всеми светодиодами и на ключ не реагировал. Начиналось это при закрытии скады. Свое сообщение на эту тему не нашел, но на тот момент решили, что это что-то странное т.к. почти не воспроизводилось. Недавно удалось воспроизвести подобное зависание. Несколько удивили вызовы daveNewInterface() & daveConectPLC при отключении, думаю, что проблема в этом.
1|/WorkStation/sub_DAQ/mod_Siemens/cntr_CIP34/ | Останов контроллера!
0|/WorkStation/sub_DAQ/mod_Siemens/cntr_CIP34/ | Ошибка чтения блока '10': Timeout when waiting for PLC response


У меня тоже такой контроллер есть и работая с ним я подобных проблем никогда не видел!

Версия OpenSCADA какая?

Похоже на то, что задача контроллера реально не останавливается, а ресурсы освобождаются. В текущей версии причин для подобного я не вижу.

Конфигурация в целом жуткая! Может Вы бы разобрались с ней для начала?

Learn, learn and learn better than work, work and work.
Сообщение создано: 22. 03. 2013 [11:09]
punk
Василий Петров
Создатель темы
Зарегистрирован(а) с: 09.05.2011
Сообщения: 57
Немного поразбирался с этой проблемой и сделал тестовую конфигурацию, в которой ошибка (максимум) с нескольких попыток проявляется. Суть проблемы в том, что она возникает при (относительно) большом объеме читаемых данных. В моем примере используется 7 строк суммарным размером 540 байт. При сильно меньшем количестве -- поведение абсолютно нормальное.
Версия OpenSCADA - от сегодня, соединение с CPU по Ethernet (ISO_TCP).
Модулеи Siemens: CPU -- 6ES7-315-2AF01-0AB0, EthernetCP -- 6GK7-343-1E20-0XE0

Прилагаю конфигурацию и лог работы (запуск, через пару секунд -- выход).
Вложенный файл

oscSiemBug.tgz (Тип файла: application/x-compressed-tar, Размер: 944.03 килобайт) — 1390 загрузок
logSiemensBug (Тип файла: application/octet-stream, Размер: 7.26 килобайт) — 1341 загрузок
Сообщение создано: 22. 03. 2013 [12:37]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"punk" wrote:

Прилагаю конфигурацию и лог работы (запуск, через пару секунд -- выход).

Я вижу только сообщение:
0|/WorkStation/sub_DAQ/mod_Siemens/cntr_testPLC/ | Ошибка чтения блока '10': Timeout when waiting for PLC response
0|/WorkStation/sub_DAQ/mod_Siemens/cntr_testPLC/ | Ошибка чтения блока '10': Timeout when waiting for PLC response

Только само по себе это не проблема и с первичной проблемой врядли связано:
иногда контроллер начинал мигать всеми светодиодами и на ключ не реагировал


Если объяснять эти сообщения то они происходят в момент остановки, возможно по причине того, что в процессе останова потоку опроса шлются сигналы SIGUSR1 и SIGALRM. Причём SIGALRM предназначен как раз прервать различные функции ожидания. Возможно SIGALRM попадает на ожидание ответа от контроллера, а алгоритм LibNoDave интерпретирует это как достижение таймаута.

Оно то конечно можно сказать не слать SIGALRM, но тогда задачи с большими таймаутами будут останавливаться долго, особенно если на момент останова нет связи.

Learn, learn and learn better than work, work and work.
Сообщение создано: 22. 03. 2013 [16:49]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"roman" wrote:

Я вижу только сообщение:
0|/WorkStation/sub_DAQ/mod_Siemens/cntr_testPLC/ | Ошибка чтения блока '10': Timeout when waiting for PLC response
0|/WorkStation/sub_DAQ/mod_Siemens/cntr_testPLC/ | Ошибка чтения блока '10': Timeout when waiting for PLC response

Добавил в циклы обхода блоков проверку на endrun и теперь это сообщение появится не более одного раза.

Learn, learn and learn better than work, work and work.
Сообщение создано: 24. 03. 2013 [10:52]
punk
Василий Петров
Создатель темы
Зарегистрирован(а) с: 09.05.2011
Сообщения: 57
"roman" wrote:

"roman" wrote:

Я вижу только сообщение:
0|/WorkStation/sub_DAQ/mod_Siemens/cntr_testPLC/ | Ошибка чтения блока '10': Timeout when waiting for PLC response
0|/WorkStation/sub_DAQ/mod_Siemens/cntr_testPLC/ | Ошибка чтения блока '10': Timeout when waiting for PLC response

Добавил в циклы обхода блоков проверку на endrun и теперь это сообщение появится не более одного раза.

Проверил, на тестовом примере контроллер зависать перестал. На неделе проверю на оборудовании, где систематически зависает при отключении.
Спасибо.



1753