OberonCore
https://forum.oberoncore.ru/

Коммуникационное ПО на ББ для АСУ ТП АЭС
https://forum.oberoncore.ru/viewtopic.php?f=31&t=4496
Страница 1 из 1

Автор:  Илья Ермаков [ Пятница, 20 Сентябрь, 2013 22:50 ]
Заголовок сообщения:  Коммуникационное ПО на ББ для АСУ ТП АЭС

Дмитрий Дагаев. Реализация однопоточного коммуникационного ПО
Статья в сборнике трудов конференции "Объектные системы-2013".
http://objectsystems.ru/files/2013/Obje ... edings.pdf

Цитата:
При модернизации распределенной системы обработки данных АСУТП АЭС была
поставлена задача замены коммуникационного ПО. Рассматривались действующее ПО на
основе CORBA [1], реализующее клиент-серверное взаимодействие, технология DDS [2] на
основе модели публикация-подписка и новая разработка ПО для этих задач. При этом нужно
было повысить качество сетевого взаимодействия.
Действующая система была реализована в виде многопоточного пользовательского ПО
с блокировками потоков до получения данных. При сбоях связи и зависаниях сети система
штатно переходила на резервированные сети, с выдерживанием задержек, но время от
времени приходилось сталкиваться с присущими CORBA проблемами [3]: "ошибками,
относящимися к надежности потоков управления, надежности исключительных ситуаций и
управлению памятью". Опыт эксплуатации показывал не всегда правильное
функционирование при сложных условиях связи, ошибках в сети и переходах на резервные
маршруты передачи данных. Кроме того, архитектурно сложно выглядели системы,
требующие модели публикации-подписки.
Второй подход, в свою очередь, не слишком хорошо решает не присущие DDS клиент-
серверные задачи. Предлагаемый [2] протокол RTPS использует UDP как транспортный
уровень и переносит механизмы гарантированной доставки на пользовательский уровень.
Это не первый и не последний способ реализации функциональности TCP в пространстве
пользователя. Является ли это решение не худшим, чем транспортная реализация TCP, - это
вопрос, требующий тщательного рассмотрения.
С точки зрения приложения важен еще момент буферизации данных, которые
получены по UDP. DDS предоставляет многопоточные сетевые сервисы для этих целей,
которые добавляют еще один уровень сложности.
Учитывая вышесказанное, было принято решение разработки коммуникационного ПО
TA (англ. Transparent Architecture), призванного совместить клиент-серверную модель и
модель публикации-подписки. Технология Transparent Architecture построена на основном
временном цикле одного потока, который осуществляет прием и передачу данных без
единой блокировки. Это, кстати, дает дополнительное преимущество, т.к. "все переключения
контекста при получении каждого пакета сильно расходуют время центрального процессора
и существенно снижают производительность сети" [4] .


Цитата:
1. Основные принципы реализации
Неблокируемость и немодальность – ключевые особенности Transparent Architecture.
Клиентские программы в клиент-серверных приложениях часто построены по принципу
выделения отдельного потока для приема данных от сервера. Типичными особенностями
такой схемы является модальность, заключающаяся в переходе в режим ожидание чтения
данных с таймаутом. Поток при этом блокируется, при обрыве связи происходят переходы
от одного таймаута к другому.
Транспортный уровень построен на неблокирующих способах взаимодействия (в
частности, сокетах). Прием данных осуществляется при наличии данных без ожидания,
передача – без ожидания завершения, которое будет зафиксировано позднее. Главный цикл
обеспечивает точность поддержания времени в соответствии с требованиями задачи и
возможностями операционной системы.


Цитата:
Первоначально коммуникационное ПО было реализовано в виде C-библиотеки с
возможностью присоединения к BlackBox. Начиная с версии 2.0, появились Оберон-
реализации для BlackBox и XDS. Все реализации тестировались для ОС Windows и Linux.
TA реализована, версия 2.0 доступна в исходных текстах как ta1 на sourceforge.net.
http://sourceforge.net/projects/ta1/

Автор:  Илья Ермаков [ Пятница, 20 Сентябрь, 2013 23:05 ]
Заголовок сообщения:  Re: Коммуникационное ПО на ББ для АСУ АЭС

На самом деле, что тут можно сказать...

Ещё три месяца назад, когда участвовал я в редактировании этого сборник "Объектных систем" - и параллельно читал всякие разборки на форумах - думалось: кто-то занимается нытьём, о том, что не хватает того и того, и того... а кто-то берёт и просто делает. решает свои задачи. Жалко, выпуск сборника ростовчане немного затянули, нельзя было поделиться раньше :)

Собственно, уважаемый Дмитрий Дагаев продолжил линейку славящихся применений Оберонов для "своих сложных задач, где не нужно чужих тараканов". С чем его и хочется поздравить.

А также обратить внимание на продолжение в современном системном программировании тренда отказа от конкуррентности в пользу неблокирующего однопоточного подхода (о чём я писал для И21 вот здесь: http://www.inr.ac.ru/~info21/zametki/welcome.html).

Автор:  Дмитрий Дагаев [ Суббота, 21 Сентябрь, 2013 18:15 ]
Заголовок сообщения:  Re: Коммуникационное ПО на ББ для АСУ ТП АЭС

Илья, спасибо большое, что обратили внимание.

Возможности использования неконкурентной многозадачности не исчерпаны. По поводу ссылки позволю одно уточнение: Services.Action не использует механизм кооперативной многозадачности(как гласит первое предложение). Это - чистое асинхронное программирование, также, как и TA.

Кооперативная многозадачность может тоже весьма интересно применяться для Оберонов, ну в моем пакете Co_ есть пример с Co_ObxActions, как альтернатива родной ObxActions на Services.Actions
http://www.zinnamturm.eu/downloadsAC.htm#Co_

Автор:  Пётр Кушнир [ Суббота, 21 Сентябрь, 2013 19:07 ]
Заголовок сообщения:  Re: Коммуникационное ПО на ББ для АСУ ТП АЭС

Дмитрий Дагаев писал(а):
Вопрос, пугающий своей новизной: зачем в названии подчёркивание? :D

Автор:  Valery Solovey [ Суббота, 21 Сентябрь, 2013 20:54 ]
Заголовок сообщения:  Re: Коммуникационное ПО на ББ для АСУ ТП АЭС

Чтобы спрятать смайлик Co_ObxActions : )

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