Всем привет! Вам никогда не хотелось поломать ядерный реактор? Мы, компания ЭНИМЦ МС («Моделирующие системы») из города Первой в мире АЭС Обнинска, виртуально занимаемся этим ежедневно, потому что одно из направлений нашей работы – создание тренажёров для атомных станций. Для чего нужны такие тренажёры и как они делаются – читайте под катом.
Когда тренажёры возили грузовиками
История компании начиналась в советские времена, когда военные от щедрот душевной решили поделиться с обнинским атомным вузом (на тот момент – филиал МИФИ) списанным тренажёром. После того, как студент четверокурсник Валерий Левченко с трудом растолкал груды железа по каморкам и аудиториям, военные позвали его разгружать следующий грузовик. Так стало понятно, что тренажёры для атомной отрасли – дело серьёзное, и так появилась сначала лаборатория (начальником которой стал Валерий), а потом на её месте наша компания.
![Первый тренажер на «персональном компьютере» Первый тренажер на «персональном компьютере»](https://habrastorage.org/getpro/habr/upload_files/30e/ff6/3a1/30eff63a1558a2bfad46a6cf98b925a7.jpg)
На самом деле, всё было немного сложнее. Для того, чтобы появилась лаборатория в Обнинске (и ещё две таких же в Москве), потребовалось целое совместное постановление ЦК КПСС и Совета Министров СССР за номером 602. А постановление было принято только после аварии на Чернобыльской АЭС, когда в нашей стране всерьёз задумались о повышении уровня подготовки кадров для атомной энергетики.
Все три лаборатории выжили, но в разной форме. Мы, например, пройдя различные этапы, превратились в частную компанию и сегодня с гордостью говорим: «Серьёзная частная компания в атомной отрасли России – да, это вполне возможно. Главное условие – хорошо и качественно работать и не приобретать в собственность обогащённый уран (шутка)».
Тренажёры и операторы бывают разными
Тренажёры у атомщиков бывают полномасштабные и аналитические. Первые требуют полного повторения обстановки на пульте управления, вплоть до цвета стен. Вторым достаточно одних только компьютеров, но объёмы моделирования у тех и других часто идентичны.
![Аналитический тренажёр реактора БН-800 на быстрых нейтронах с теплоносителем натрий Аналитический тренажёр реактора БН-800 на быстрых нейтронах с теплоносителем натрий](https://habrastorage.org/getpro/habr/upload_files/03d/e8a/683/03de8a683c1835401a7df01b3dac00f4.jpg)
Операторов-атомщиков можно условно поделить на две категории. Первые работают на небольших исследовательских реакторах, сокращённо – ИРы. На ИРах, как правило, не производится электроэнергия, у них другие цели – например, наработка радиоизотопов для медицины и промышленности. Операторы ИРов могут каждый день утром пускать реактор, а вечером его глушить (останавливать). Для них тренажёры полезны отработкой нештатных ситуаций, а рутинной производственной деятельности им хватает и на практике.
У операторов АЭС всё по-другому, потому что атомные станции эксплуатируются в базовом режиме, когда в идеале месяцами ничего не меняется. Можно так изловчиться с планированием отпусков и отгулов, что за всю карьеру оператора ни разу не попасть в смену, которая глушит энергоблок или вводит его в строй. Поэтому у тренажёров для АЭС есть дополнительная задача – поддерживать операторов в тонусе, чтобы они не оплошали, когда настанет их черёд действовать.
А ещё, задача тренажёра – научить операторов действовать в таких ситуациях, которые в реальности никогда не должны произойти и, как все надеются, никогда не произойдут (например, обесточивание энергоблока). Действовать правильно, чтобы оператор в сложной обстановке предотвращал аварию, а не был «человеческим фактором», её усугубляющим.
Анатомия тренажёра
Тренажёры производства нашей компании сетевые, с клиент-серверной структурой. Основной сервер выполняет задачи по обслуживанию, распределяет кому что считать и хранит поле общих данных. За само моделирование отвечают процессы (модули), которых может быть много. Наш рекорд – примерно 40 процессов, разведённых по нескольким вспомогательным серверам, столько их потребовалось для тренажёра энергоблока с быстрым натриевым реактором БН-800.
Также есть места для тренирующихся и место инструктора. Инструктор – это человек-неисправность, по его велению задвижка, которую оператор хочет закрыть, не закроется в самый неподходящий момент. Отказы инструктор может вводить как в случайном порядке, так и повторяя конкретные нештатные ситуации, случавшиеся на АЭС. Задача инструктора – усложнить рутинную процедуру прохождения сценария тренировки, сделать её непредсказуемой.
На скрине ниже – одно из табло, которые видит тренирующийся, результат работы модели системы внутриреакторного контроля (СВРК), показывающей распределение подогревов теплоносителя (воды) по кассетам (ТВС, тепловыделяющие сборки). Чем однороднее распределение, тем эффективнее используется ядерное топливо. Задачей уменьшения неравномерности температурного распределения занимаются физики, а задача оператора – следить, чтобы в каких-то кассетах вода не начала греться особенно сильно, создавая угрозу кипения.
![СВРК СВРК](https://habrastorage.org/getpro/habr/upload_files/c78/3b4/c76/c783b4c76601309001f5294af0ce96c9.png)
Языки и операционки – лучшее враг старого
Первая версия среды разработки тренажёра была написана в нашей компании в 90-ые годы. За образец взяли аналогичные среды западных фирм, но сделали всё сами от начала до конца, кроме стандартного протокола обмена TCP/IP. Язык среды – C++. После того, как среда была готова, большая команда кодеров не требуется. В основном они пишут элементы человеко-машинного интерфейса, и то не с нуля, а адаптируя их из нашей библиотеки.
Операционная система, в которой разрабатываются тренажёры – Windows, причём чаще всего «семёрка», потому что так хотят заказчики. Предвидим вопрос как отблеск былых холиваров: «Как можно использовать такую систему как Windows на столь опасном технологическом объекте как АЭС?». Ответ простой: тренажёр – не часть АЭС, это локальная сеть, не имеющая выхода в интернет и не соединённая с производственной АСУ ТП атомной станции. Более того, тренажёр физически может находиться за пределами площадки АЭС в административном здании. Так что хакеры взломать тренажёр не сумеют.
На самом деле однажды мы разработали тренажёр совместно с одной европейской фирмой на основе оборудования SUN Microsystems в операционной системе SunOS (олдфаги должны оценить и вспомнить Solaris). Тренажёр получился на заглядение, был передан одной из российских АЭС, после чего бесславно скончался. Сгорел один из процессорных модулей, и выяснилось, что найти замену негде, их больше не выпускают. Пришлось срочно покупать б/у-шный модуль в Англии в буквальном смысле слова на барахолке.
После этого случая с экспериментами ради экспериментов мы покончили. А вот вынужденная замена произойдёт. В атомной отрасли России принят курс на переход на системы семейства Linux, к которому мы готовимся.
Как правильно распараллеливать процессы
Главная сложность при разработке тренажёра – правильно распараллелить процессы. Если точнее, у нас принята более сложная структура. На каждом шаге по времени сначала отрабатывает слой физических моделей (нейтронная физика, теплофизика, теплогидравлика и так далее), причём все они считаются параллельно. После этого делает шаг по времени слой датчиков, актуаторов, проверок «закрыто/открыто» и так далее.
Запускать все процессы параллельно нельзя! Процессы влияют друг на друга, изменения характеристик в одном процессе должны как можно скорее дойти до связанных с ним процессов. В нашем подходе максимальное опоздание составляет один шаг по времени, это, например, 100 миллисекунд. В противном случае, при полностью параллельном подходе, более быстрая модель, приступающая к расчёту следующего шага, будет брать старые данные от других моделей. Потому что новых нет, они ещё не посчитаны. В пределе изменения могут запаздывать на три или четыре шага, а это для нас критично. Представьте, что тренирующийся оператор открыл клапан, а математика тренажёра это действие долго не видит!
Окончательное разделение на процессы происходит после сборки тренажёра. Задача разработчиков сделать так, чтобы в системе не образовывались тяжёлые процессы, потребляющие много ресурсов и времени и заставляющие всех остальных простаивать в ожидании.
На скрине ниже – первый контур отечественного легководного реактора ВВЭР. Сам реактор, насосы, парогенераторы, системы безопасности и так далее. За их физический и теплогидравлический расчёты отвечают различные процессы.
![](https://habrastorage.org/getpro/habr/upload_files/826/4dd/8e3/8264dd8e396ac304bc512f79aebb6e1f.png)
Быстрый и сложный – тренажёр БН-800
Самым сложным с этой точки зрения был для нас тренажёр БН-800. Реактор на быстрых нейтронах отличается от «стандартных» реакторов на тепловых нейтронах не только тем, что у него в первом контуре не вода, а натрий, и при фукусимских авариях его активную зону нельзя заливать водой из пожарных машин. И даже не тем, что у него три контура охлаждения, а не два. Для нас, тренажёрщиков, его главное отличие – парогенераторы.
Парогенератор «обычного» реактора ВВЭР для нас представляет собой бак, в котором есть вода и пар. Модульный парогенератор «натрий-вода» реактора БН-800 – это отечественное ноу-хау. прекрасно показавшее себя на практике, но заставившее нас не спать ночами. Точное количество клапанов разных типов, которые потребовалось учесть при моделировании, называть нельзя (ноу-хау!), скажем только, что это число с двумя нулями. А есть ещё и трубопроводы, а есть ещё особенности эксплуатации таких парогенераторов, и наконец, модульных парогенераторов в БН-800 просто больше, чем обычных парогенераторов в ВВЭР. В апреле этого года китайцы смонтировали на своём строящемся БН-600 (CFR-600) первый из 16 модульных парогенераторов, и мы заранее им сочувствуем, как они будут их моделировать в своих тренажёрах!
![Скрин из тренажёра быстрого реактора. Выглядит просто, но его простота обманчива. Беда тренажёрщика скрыта под простыми буквами SG (Steam Generator) в левой части экрана Скрин из тренажёра быстрого реактора. Выглядит просто, но его простота обманчива. Беда тренажёрщика скрыта под простыми буквами SG (Steam Generator) в левой части экрана](https://habrastorage.org/getpro/habr/upload_files/7fe/ece/a25/7feecea25abd898fe29ef0bbab56f2b2.png)
Зато по окончанию разработки тренажёра для БН-800 мы получили высшую возможную (кроме денег, конечно) награду – признание заказчика. На БН-800 персонал в основном молодой, и это могло вызывать беспокойство. Но при сдаче тренажёра смена молодых операторов продемонстрировала высокий класс, виртуозно справляясь со всеми «пакостями» от инструкторов, которые отчаянно старались их завалить. Нам это было по-человечески приятно!