OberonCore
https://forum.oberoncore.ru/

Серверное ПО SCADA-системы
https://forum.oberoncore.ru/viewtopic.php?f=5&t=5214
Страница 1 из 1

Автор:  Дмитрий Дагаев [ Понедельник, 15 Сентябрь, 2014 15:44 ]
Заголовок сообщения:  Серверное ПО SCADA-системы

Разработка на Обероне серверного ПО.
Сделана система "черный ящик" и внедрена на АЭС.
Презентация со встречи 14 сентября.

Будет продолжение, напишу.

Вложения:
черный ящик.pdf [432.35 КБ]
Скачиваний: 534

Автор:  Роман М. [ Понедельник, 15 Сентябрь, 2014 20:30 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

А как вообще относятся к open-source проектам без поддержки со стороны организаций?
Вот, к примеру, кто сможет оказать поддержку по BlackBox (как ядру так и каркасу) в случае необходимости? Или всё своими силами?
Интересно каковы критерии выбора инструмента разработки при планировании ПО. Почему разработка не ведётся, скажем на C# или, скажем, на Форте?

Автор:  Илья Ермаков [ Понедельник, 15 Сентябрь, 2014 20:44 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

Роман, кстати, посмотрите статью Дмитрия в Объектных системах:

viewtopic.php?f=31&t=4496
Там рассказано о сопоставлении с CORBA и о возросшей стабильности и производительности при уходе с CORBA на свой коммуникационный слой...

Жалко, что ещё не вышел последний выпуск, там тоже будет его очень интересная статья.

А ещё на конференции Дмитрий приводил пример очень паршивой проблемы с CORBA и С++ (сочетание исключений, параллелизма в условиях нестабильной сети), которую в принципе не удалось побороть...

Дмитрий Викторович, наверное, неплохо было бы кратко и здесь раскрыть эту проблему? Пример симптоматичный...

Автор:  Alexey Veselovsky [ Понедельник, 15 Сентябрь, 2014 21:15 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

Илья Ермаков писал(а):
А ещё на конференции Дмитрий приводил пример очень паршивой проблемы с CORBA и С++ (сочетание исключений, параллелизма в условиях нестабильной сети), которую в принципе не удалось побороть...

Проблема, вероятно, не в С++ или Корбе, проблема скорее всего где-то в ошибке при работе с вытесняющей многозадачкой. Точнее с многозадачкой в сочетании с разделяемой общей памятью.

От ЯП это не зависит.

Автор:  Дмитрий Дагаев [ Понедельник, 15 Сентябрь, 2014 21:40 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

Роман М. писал(а):
А как вообще относятся к open-source проектам без поддержки со стороны организаций?
Вот, к примеру, кто сможет оказать поддержку по BlackBox (как ядру так и каркасу) в случае необходимости? Или всё своими силами?
Интересно каковы критерии выбора инструмента разработки при планировании ПО. Почему разработка не ведётся, скажем на C# или, скажем, на Форте?

За атомную отрасль могу сказать. Есть стандарты МЭК, в них написано про использование ранее разработанного ПО. Два варианта:
1. Делаем систему безопасности - тогда каждая строчка кода, ось и весь инструментарий сертифицируется - требования, проект, план качества, ...
плюс требования защиты массивов, нет goto, см МЭК-60880
2. Для остального - можно использовать при наличии комплекса мер по верификации/валидации. Там есть место линуксам и др. Но все хотят избавиться от зависимостей - среды, конкретного компилятора, библиотек.

Автор:  Info21 [ Понедельник, 15 Сентябрь, 2014 21:47 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

Alexey Veselovsky писал(а):
От ЯП это не зависит.
При прочих равных. Которых нет.

Автор:  Илья Ермаков [ Понедельник, 15 Сентябрь, 2014 22:58 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

Alexey Veselovsky писал(а):
Проблема, вероятно, не в С++ или Корбе, проблема скорее всего где-то в ошибке при работе с вытесняющей многозадачкой. Точнее с многозадачкой в сочетании с разделяемой общей памятью.
От ЯП это не зависит.


Думаешь, что идёт разрушение памяти, ведущее к некорретной работе механики исключений?
Но любое разрушение памяти проявлялось бы не одинаковым образом...

Дело таки в какой-то ошибке в реализации рантайм-поддержки исключений в этом компиляторе С++, может быть?

Дело, конечно, не в самом ЯП (т.е. не в особенностях его синтаксиса и семантики), но в толщине непрозрачности того, как его механизм исключений реализован и работает...

Автор:  Илья Ермаков [ Понедельник, 15 Сентябрь, 2014 23:00 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

Дмитрий Дагаев писал(а):
За атомную отрасль могу сказать. Есть стандарты МЭК, в них написано про использование ранее разработанного ПО. Два варианта:
1. Делаем систему безопасности - тогда каждая строчка кода, ось и весь инструментарий сертифицируется - требования, проект, план качества, ...
плюс требования защиты массивов, нет goto, см МЭК-60880


И реально какие применяются инструменты, соответствующие этому стандарту? Ada?

Автор:  Дмитрий Дагаев [ Вторник, 16 Сентябрь, 2014 09:40 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

Илья Ермаков писал(а):
А ещё на конференции Дмитрий приводил пример очень паршивой проблемы с CORBA и С++ (сочетание исключений, параллелизма в условиях нестабильной сети), которую в принципе не удалось побороть...

Дмитрий Викторович, наверное, неплохо было бы кратко и здесь раскрыть эту проблему? Пример симптоматичный...


Конфигурация
Есть многопоточное серверное ПО (C++, linux, CORBA), которое периодически, 1 раз в 2 месяца сбоит на объекте (там не идеальная сеть). На полигоне не сбоит. Путем долгих экспериментов (более месяца удалось придумать конфигурацию, в которой возникают сбои:
58 потоков, 15 локальных и 15 удаленных клиентов с учетверенной скоростью опроса, периодически обрывающих TCP-соединение, программа, которая в cron, которая периодически, раз в полчаса загружает ЦПУ.

Симптомы
Вызываем, скажем из пользовательской клиентской программы получение удаленного объекта
Код:
        try {
                vxch = Xch::_narrow(obj);
        }
        catch (...) {
        }

пересобрали корбу, отследили внутри
Код:
    if(policies_ -> retry.max != 0)
        throw CORBA::UNKNOWN;


Эксперименты
Методом тыка нашли, что перестает падать в данной конфигурации, если изменить код на
Код:
    if(policies_ -> retry.max != 0)
        throw ;

Автор:  Дмитрий Дагаев [ Вторник, 16 Сентябрь, 2014 09:57 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

Alexey Veselovsky писал(а):
Проблема, вероятно, не в С++ или Корбе, проблема скорее всего где-то в ошибке при работе с вытесняющей многозадачкой. Точнее с многозадачкой в сочетании с разделяемой общей памятью.

От ЯП это не зависит.


Выводы
1. Безусловно, многозадачка влияет

2. Корба - это лишних 150тыс строк в библиотеке и лишних пять потоков и интенсивная работа с динамической памятью. Учитывая, что Xch::_narrow использует удаленный блокирующий вызов с переключением на эти пять потоков, не соглашусь - Корба влияет. Кстати, на локальных соединениях эффекта нет.

3. С++. То, что я описываю, означает, что программа падает после исключения, а не вследствие исключения. Есть ли между этими повторяющимися симптомами причинно-следственная связь, я не знаю. Астрология тоже наблюдает повторяющиеся цепочки, но причинно-следственная связь пока не доказана.
Я - гадаю и думаю, что:
нарушение границ массивов и некорректное освобождение памяти в самых удаленных уголках корбы (которые мало тестировались) могло привести к таким последствиям.
По крайней мере, с Обероном пространство поиска (и моих мучений было бы меньше)

Автор:  Дмитрий Дагаев [ Вторник, 16 Сентябрь, 2014 10:41 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

Илья Ермаков писал(а):
Дмитрий Дагаев писал(а):
За атомную отрасль могу сказать. Есть стандарты МЭК, в них написано про использование ранее разработанного ПО. Два варианта:
1. Делаем систему безопасности - тогда каждая строчка кода, ось и весь инструментарий сертифицируется - требования, проект, план качества, ...
плюс требования защиты массивов, нет goto, см МЭК-60880


И реально какие применяются инструменты, соответствующие этому стандарту? Ada?


Для систем безопасности - графический САПР (не Дракон), который сертифицируется. И крутится по прерыванию, либо с Микро Осью. Варианты с Адой у нас не знаю.

Автор:  Info21 [ Вторник, 16 Сентябрь, 2014 16:01 ]
Заголовок сообщения:  Re: Серверное ПО SCADA-системы

Ситуация типологически сходная с научным софтом:

На Обероне может не быть библиотек,
но обмен (С++ + готовая монструозная библиотека) на (Оберон + своя контролируемая библиотека) оказывается сильно в пользу второго варианта -- уж точно по качеству результата.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/