Эта статья продолжает цикл воспоминаний разработчика тренажёрных комплексов. Несколько лет назад наша команда столкнулась с задачей создания эмулятора автоматизированной системы управления технологическим процессом (АСУ ТП) для одной из тепловых электростанций. Задача выглядела стандартной и несложной: воспроизвести логику контроллеров, разработать мнемосхему и запустить модель.

Однако реальность внесла свои коррективы. Исходных данных не хватало, сроки были крайне ограниченными, ресурсов недостаточно, а первая версия интерфейса HMI, созданная на собственном проверенном, но морально устаревшем инструменте проектирования, не соответствовала требуемым характеристикам производительности и масштабирования.

Цель настоящей публикации — поделиться опытом разработки эмуляторов АСУ для учебных тренажёрных комплексов, рассмотреть типы симуляций, привести пример архитектуры подобного решения, коснуться используемых технологий и языков программирования, описать часто возникающие трудности и предложить способы их преодоления.

Цена точности: сравнение методов моделирования АСУ в тренажёрах

 

Пару слов о методах моделирования АСУ ТП и компонентов в составе прикладного программного обеспечения тренажеров.  Есть несколько методов, а именно

  • Полная симуляция — копия АСУ ТП, включающая аппаратное и программное обеспечение, интегрируется с тренажёром

  • Виртуальная симуляция — используется виртуальная копия программного обеспечения АСУ ТП на эмулируемом оборудовании

  • Гибридный метод — используется аппаратная платформа человеко-машинного интерфейса (HMI) АСУ ТП с эмулируемым программным обеспечением

  • Полная эмуляция — используется эмулируемое аппаратное и программное обеспечение АСУ ТП

Сравнение методов эмуляции/симуляции АСУ

Характеристика

Полная симуляция

Виртуальная симуляция

Гибридный метод

Полная эмуляция

Необходимость данных

Не требуется (предоставляются вендором АСУ)

Низкая (требуется для корректного взаимодействия с эмулируемым HMI)

Средняя (требуется для связи между HMI и эмулируемым ПО)

Высокая (требуется для точной эмуляции реальной АСУ; чем точнее данные, тем лучше эмуляция)

Проприетарные ограничения

Максимальные (все права на ПО и оборудование принадлежат вендору АСУ)

Высокие (все права на ПО и оборудование принадлежат вендору АСУ)

Средние (основная проблема — протокол связи между HMI АСУ и эмулируемым ПО)

Отсутствуют (всё оборудование и ПО полностью независимы от вендора АСУ)

Временные затраты

Минимальные (время тратится только на точную интеграцию АСУ с моделями симуляции)

Низкие (время тратится на точную интеграцию моделей симуляции и эмулируемого HMI)

Высокие (время тратится на эмуляцию ПО АСУ и взаимодействие с HMI)

Низкие (время тратится только на эмуляцию ПО АСУ)

Обновления

Средние (несложно реализовать, но может быть дорого)

Средние (зависит от ситуации)

Низкие (может быть сложнее, но может выполняться внутренним персоналом или сторонними специалистами)

Низкие (может быть сложнее, но может выполняться внутренним персоналом или сторонними специалистами)

Техническое обслуживание

Высокое (сильно зависит от вендора АСУ по проприетарным компонентам и ПО)

Среднее (низкие затраты на обслуживание оборудования, но зависимость от проприетарного ПО вендора)

Среднее (низкие затраты на обслуживание ПО, но зависимость от проприетарного оборудования вендора)

Низкое (недорогое, легкодоступное оборудование и не проприетарное ПО)

Стоимость в рамках поставки тренажера

Максимальная (каждый экземпляр АСУ включает полную стоимость проприетарного оборудования)

Низкая (недорого, при условии включения лицензионного сбора, можно использовать доступное оборудование)

Высокая (каждый экземпляр АСУ включает полную стоимость проприетарного оборудования)

Минимальная (недорого, легкодоступное оборудование и не проприетарное ПО)

Вот именно о полной эмуляции мы и поговорим.

Боевой проект

На примере проекта по разработке и внедрению полномасштабного тренажера для тепловой станции мощностью в 800 МВт и работающей на закритических параметрах пара (это важно, так как модель физических процессов тоже очень нетривиальная).

Компоненты эмуляторов АСУ ТП в составе тренажера
Компоненты эмуляторов АСУ ТП в составе тренажера

Что же у нас есть на входе? Набор данных об АСУ ТП объекта прототипа. Это и инструкции по эксплуатации, технологические схемы, выгрузки из оперативной базы данных, схемы электрические принципиальные, и много чего еще. А главное, единиц оборудования порядка 1000 механизмов двигательной нагрузки, 4000 тысячи различной электроприводной арматуры, и около 10000 точек аналогово и дискретного контроля вместе взятых. И на все это есть свой алгоритм дистанционного управления, автоматического регулирования и не забываем про технологические защиты и блокировки. Гораздо важнее было то, что управляющие программы генерировались из штатной инженерной станции в виде человеко-читаемых текстовых файлов (некое подобие Structured Text), содержащие функциональные блоки и связи между ними. Такую информацию можно интерпретировать в виде модели.

Структурировав исходные данные (так как документы еще были с разными временными датами и о разных версиях ПО, и в разношерстных форматах PDF/DOC/ DWG/CSV), начала вырисовываться картинка что нужно сделать. На основе описания функциональных блоков были разработаны модели для работы в составе исполнительной системы тренажера. Интерпретатор программ управления среднего уровня был реализован на Python (версии 3.8.5 на тот момент), выбор был сделан из-за его простоты, работы со строками и текстом в целом. Первый прототип эмулятора среднего уровня был готов уже в течении недели, а дальше приходилось уже его полировать и доводить «копию близко к оригиналу». Хочу отметить, что возможности исполнительной системы тренажера позволяют также эмулировать и работу контроллерного оборудования, расчет программ с различным квантованием по времени, обмен между эмулируемыми контроллерами.

Оригинальные видеокадры на АРМ оператора
Оригинальные видеокадры на АРМ оператора
Оригинальные видеокадры на АРМ оператора
Оригинальные видеокадры на АРМ оператора

Интереснее дела обстояли с верхним уровнем. Операторские кадры хранятся в бинарном формате. И некоторую часть времени пришлось потратить для разбора в «языке древних свитков». Но команда у нас опытная, и это не первый эмулятор, который приходилось реализовывать. Разобравшись с исходными файлами, команда разработки принялась к созданию эмулятора верхнего уровня. Здесь уже в качестве технологического стека используется Java. Приложение должны быть кроссплатформенным, быстрым, и так сложилось, что в компании набралась сильная компетенция по разработке десктопных приложений на Java(Swing/JavaFx).

Часть компонентов была взята из наших библиотек, такие как обмен с моделью тренажера, сервисы архивации, сигнализации и журналирования, хотя некоторые изменения были внесены и в них, дабы соответствовать эталону. В качестве основного стека использовалась Java версии 14, а для рендеринга SVG графики на видеокадрах взяли популярную библиотеку Batik. Для хранения архивных данных использовали старую-добрую MariaDB. Весь проект получился порядка 300+ классов.  

Окна трендов, управления механизмами, ввода информации реализовывались уже отдельно. Стоит дополнить, что не смотря на успешность разработки и проведение испытаний на полигоне, доработка программного обеспечения и отладка моделей во время опытной эксплуатации остается трудоемким процессом. Сказывается не хватка исходных данных, противоречивая информация от тест-операторов. 

Пару слов про производительность. Поскольку на оригинальных АРМ обновлялись с дискретностью в 1 с, нагрузка на сервер и обмен информацией не столь значительны. Используемый на проекте сервер оснащён процессором Intel Core i7‑8700K (6 ядер, 3,7/4,7 ГГц) и 16 ГБ оперативной памяти DDR4. Его ресурсов достаточно как для выполнения полномасштабной модели объекта в реальном времени, так и для выполнения серверных функций эмулятора верхнего уровня АСУ ТП.

Все эмуляторы были готовы в течении 6 месяцев, а далее начался длительный, но важнейший этап – опытная эксплуатация. Эмуляторы «обогащались» доработками и функциями, описаний и функций которых так не хватало в исходных данных. Но это уже привычный и неотъемлемый путь создания качественного тренажерного комплекса.

Эмулятор операторской станции
Эмулятор операторской станции
Эмулятор операторской станции
Эмулятор операторской станции

Осталась одна важная система для эмуляции – ПТК системы регулирования турбины. Всеми любимый «черный ящик». Из исходных данных есть только инструкции по эксплуатации, и то, в основном в них описано взаимодействие с операторским интерфейсом, и со всем немного про алгоритмы регулирования. Эмуляцию пришлось выполнять с помощью нашего САПР, моделировать алгоритмы. А для эмулятора HMI использовали всю ту же Java.

Эмулятор HMI систему регулирования паровой турбины
Эмулятор HMI систему регулирования паровой турбины
Эмулятор HMI систему регулирования паровой турбины
Эмулятор HMI систему регулирования паровой турбины

С какими проблемами мы сталкиваемся при отладке эмуляторов АСУ ТП

Представьте себе, что вы пытаетесь починить огромный механизм, где всё взаимосвязано, как в  часах. Только эти «часы» размером с небоскрёб, и вместо шестерёнок — сотни компьютеров, труб и датчиков. Вот примерно так выглядит отладка эмулятора АСУ ТП.

Еще раз про исходные данные. Очень часто, они похожи на пазл, где половина кусочков потерялась, а оставшиеся не всегда подходят друг к другу. Бывает, что документация написана для разных версий системы, и вы пытаетесь собрать современный смартфон по инструкции от кнопочного телефона. А иногда информация просто противоречит сама себе —как если бы в инструкции к машине говорилось, что руль поворачивает направо, а педали тормозят вперёд.

Забавная ИИшная гидра))
Забавная ИИшная гидра))

А теперь представьте себе древнегреческую гидру. Помните, как только Геракл отрубал одну голову, на её месте вырастали две новые? Точно так же бывает при отладке сложных систем. Закроешь одну ошибку — всплывает другая, иногда в самом неожиданном месте. Как в старом водопроводе: заделаешь течь в одном месте, а вода находит новый путь и прорывается где-то ещё.

Сложность добавляет то, что система распределённая. Это как пытаться дирижировать оркестром, где каждый музыкант находится в отдельном здании, а связь между ними идёт через интернет. Изменишь что-то в одном месте — и непонятно, как это повлияет на всё остальное.

Особенно весело становится, когда дело доходит до систем регулирования. Они часто работают  как чёрные ящики: снаружи видно только кнопки и экраны, а что происходит внутри — загадка. Разработчикам приходится быть настоящими детективами, чтобы понять логику работы системы и правильно её воспроизвести.

В общем, отладка эмулятора АСУ ТП — это как попытка собрать работающий космический корабль, используя инструкции, написанные на неизвестном языке, с кучей ошибок и пропусков. Но трудности только закаляют, верно?

Итоговое слово: когда цена оправдана

Помните знаменитую фразу из фильма: «В каждой подделке есть доля подлинности»? В нашем случае всё наоборот — чем ближе копия к оригиналу, тем больше в ней от настоящего, и тем дороже она обходится.

Годы разработки различных тренажерных программно-технических комплексов убедили меня: высокая стоимость профессиональных решений неслучайна. Точность воспроизведения реального промышленного объекта —это не просто красивая фраза в презентации, а результат колоссальной работы:

  • Детального анализа тысяч параметров

  • Воспроизведения сложных алгоритмов управления

  • Эмуляции поведения оборудования в разных режимах

  • Создания реалистичной среды для обучения

Каждый уровень детализации требует дополнительных ресурсов:

  • Базовая симуляция — это каркас

  • Средняя точность — это проработка деталей

  • Максимальная копия — это уже произведение инженерного искусства

    Важно понимать: дорогой тренажёр — это не переплата за бренд, а инвестиция в:

  • Безопасность обучения

  • Качество подготовки персонала

  • Реальные навыки управления

  • Уверенность в действиях операторов

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