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

[BugFixed] Падение DCON


Автор Сообщение
Сообщение создано: 17. 07. 2009 [15:44]
almaz
Almaz Karimov
Contributor
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
На каких-то блоках внутренний дип, на других внешний переключатель, на некоторых внешняя перемычка INIT-GND. При изменении любых настроек блока надо замыкать, после чего, разомкнув, перегрузить блок.

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 24. 07. 2009 [09:18]
andrelek
Андрей Полевой
Зарегистрирован(а) с: 13.12.2008
Сообщения: 210
almaz wrote:

На каких-то блоках внутренний дип, на других внешний переключатель, на некоторых внешняя перемычка INIT-GND. При изменении любых настроек блока надо замыкать, после чего, разомкнув, перегрузить блок.


Спасибо уже разобрался! На моем модуле и внутренний дип и перемычка INIT-GND.
Сообщение создано: 24. 07. 2009 [09:26]
andrelek
Андрей Полевой
Зарегистрирован(а) с: 13.12.2008
Сообщения: 210
Спасибо, господа разработчики, огромное!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
После исправлений скада с модулем работает сутки! ))))
Сообщение создано: 05. 12. 2009 [19:14]
almaz
Almaz Karimov
Contributor
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
При падениях в модуле DCON происходил вылет всей OpenSCADA.
Существует ли возможность изолировать ядро OpenSCADA от ошибок в модулях?
То есть, чтобы в случае падения одного модуля, происходил автоматический перезапуск только этого модуля (не затрагивая работу ядра и остальных модулей) с выдачей соответствующего сообщения в лог или stderr ?

PS Вечную жизнь микроядру /usr/bin/openscada!!!icon_smile.gif

[Сообщение редактировалось 2 раз(а), в последний раз 05.12.2009 в 19:18.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 05. 12. 2009 [19:48]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
В рамках одного процесса нет. Это цена за высокую производительность.
Можно сделать путём выноса функции модуля в отдельный процесс и отражать его данные с помощью DAQGate.

Learn, learn and learn better than work, work and work.
Сообщение создано: 05. 12. 2009 [20:32]
almaz
Almaz Karimov
Contributor
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
Несколько процессов - каждый с определёнными модулями icon_rolleyes.gif
Это несколько увеличит надёжность. Если знаешь от каких модулей изолироваться... Но никто не перезапустит сбившийся процесс...

Кто знает какой из нескольких десятков модулей и при каких условиях может дать сбой, например, через год непрерывной работы?icon_rolleyes.gif

А насколько может снизится производительность системы при изоляции ядра от модулей?

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 05. 12. 2009 [22:02]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
almaz wrote:

Кто знает какой из нескольких десятков модулей и при каких условиях может дать сбой, например, через год непрерывной работы?icon_rolleyes.gif

Так-же как и никто не может знать какой из драйверов ОС или её компонентов даст сбой.
Для этого делается несложный диспетчер прямо в скрипте OpenSCADA или используется стандартный, например monit.

almaz wrote:

А насколько может снизится производительность системы при изоляции ядра от модулей?

На затраты сеарилизации данных в поток и межпроцесный обмен.

Learn, learn and learn better than work, work and work.
Сообщение создано: 06. 12. 2009 [09:21]
almaz
Almaz Karimov
Contributor
Зарегистрирован(а) с: 25.09.2008
Сообщения: 516
Может быть тогда есть возможность обеспечить хотя бы не полную изоляцию (не выделяя ядро и модули в разные процессы)?
Допустим, чтобы обработчик ошибок перезапускал только поток процесса в случае возникновения в нём непредвиденной ошибки. С выдачей диагностического сообщения.

[Сообщение редактировалось 1 раз(а), в последний раз 06.12.2009 в 09:24.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Сообщение создано: 06. 12. 2009 [16:35]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
Я таких механизмов не знаю. Сигнал сегментации памяти приходит процессу целиком и его обработка не прерывает поток, а зацикливает его на этой ошибке. Во всяком случае раньше я пробовал, а затем закоментировал. Сейчас выделил код создания потоков, что позволило вести их учёт, но получить большинство информации всёравно нет возможности, например получить TID потока, не находясь в контексте этого потока нет возможности. А без TID нет возможности получить статистику работы потока.

Learn, learn and learn better than work, work and work.



22148