Разработка симулятора Союз-ТМА часть 1

2533

Публикую основную информацию о том, что у нас имеется по симулятору, и как мы собираемся его реализовывать. Проект очень сложный и с каждым днем мы понимаем это все больше. Наша задача — разработать программу, которая будет работать на одном компьютере, не будет требовать специального оборудования и будет позволять симулировать вычислительную систему (компьютерные модели блоков систем корабля, объединенные в одну компьютерную модель), имитировать внешнюю визуальную обстановку (звездное небо, космический корабль, Земля, МКС), имитировать акустическую обстановку (звуки работы систем, двигателей и т.д.). Сердцем симулятора является математическая модель движения, которая состоит из уравнений движения, которые описывают движение космического аппарата по заданным начальным условиям, которые пользователь задает перед началом режима. Мы решили писать модель движения на языке программирования С++. Этот выбор был сделан не случайно, мы изучили многие симуляторы и тренажеры космических кораблей, а так же вели переговоры с разработчиками ПО для ЦПК им. Гагарина(Центр Треанжеростроения в г. Новочеркасск) и выяснили, что самыми часто используемыми и удобными ЯП являются именно Си и С++. Математическая Модель Движения (ММД) будет находится в главной программе управления – «МиУ» и будет в виде динамической библиотеки DLL.

Моделирование и Управление (МиУ) — главная программа, которая позволяет ввести начальные условия, контролировать состояние всех параметров корабля и предоставляет пользователю возможность полного контроля за состоянием КА и всех моделей, как перед началом режима (выставка НУ), так и во время полета (к примеру ввод нештатных ситуаций(НшС)). Пользовательский интерфейс МиУ написан на ЯП C# .NET, т.к. он больше всего подходит для данной задачи. МиУ позволяет вводить начальные условия, отрабатывать их, управлять запуском и остановкой режима, выводить в виде графических форматов параметры текущего положения КА в пространстве (здесь и далее положение КА определяется координатами XYZ в эпохе J2000.0), выводить состояние систем КА, вводить НшС по заданным условиям и многое другое.

ИнПУ — Интегрированный Пульт Управления — входит в состав пульта космонавтов «Нептун-МЭ» и является основным инструментом отображения параметров корабля, с которым взаимодействует пользователь во время симуляции (вариант 3D «от первого лица» пока не рассматриваем). Модель ИнПУ полностью идентична штатному ИнПУ, используемому на ТПК «Союз ТМА» как графически, так и программно. В состав пульта «Нептун-МЭ» входит два таких пульта: ИнПУ-1 и ИнПУ-2 соответственно. На первом этапе ИнПУ будут реализованы в виде двух виртуальных машин для VirtualBOX. Это решение обусловлено тем, что у нас имеется штатная модель ИнПУ для корабля 200й серии (Союз ТМА) в виде исходных кодов написанных на ЯП Pascal. Она работает только в ОС MsDOS и имеет разрядность 16 bit, что не позволяет ее запускать в ОС выше Windows XP, поэтому, что бы не вынуждать пользователя переустанавливать ОС, мы решили использовать несколько ВМ, объединённых в одну сеть виртуальным адаптером. Обмен между моделями ИнПУ реализован в протоколе TCP\IP. Пока есть определенные сложности с обменом, о которых я расскажу в отдельном посте, но всё работает, и два пульта видят друг друга и позволяют производить взаимное управление. Временная задержка между двумя пультами (Δtime) составляет в среднем 50-70 мс в статичном состоянии (когда пользователь не совершает никаких действий с ИнПУ) и 120-200 мс при динамике.

ВС — модель Вычислительной Системы, является комплексом компьютерных моделей всех систем корабля (БЦВМ «Аргон-16», КС-020, КДУ, СИОС, СЖО и т.д.), который состоит из отдельных программных модулей, описывающих алгоритмы бортовых вычислителей и систем корабля. Начальные параметры модель ВС получает от модели движения и от МиУ.

В следующем посте я расскажу о первых реализациях моделей и выложу ссылки на модели систем со стабильной работой.

Пульт космонавтов “Нептун-МЭ”

Soyuz Developer Team

11 Comments

Show All

Please, into your profile to comment posts, make bookmarks and rate other users. It takes two clicks to create a profile or log in.

Січ 05, 2020 21:19

Нормально так заморочились. Хотя, согласно современной моде, 3d кокпит необходимость, а лучше и с поддержкой VR.
А исходники ИнПУ настоящие или просто модель? Интересно было бы глянуть на них, хотя помощник из меня не очень, ввиду недостатка свободного времени.

Січ 06, 2020 09:06

Модель для тренажера ТДК-7СТ, но они практически не отличаются от бортовых, т.к. заливаются в такой же пульт как и на борту.

Січ 06, 2020 06:36

Амбициозно. Ветер в паруса! Интересно, Вы для визуализации будете использовать Google Earth/Sky, Bing или что то ещё? По-идее, раз UI на дотнете решили делать, то логично облегчить себе жизнь и использовать экосистему MS

Січ 06, 2020 09:08

вопрос визуализации пока не решен окончательно, но это будет или Unity3d или же свой движок для OpenGL или DirectX. Будем перебирать варианты что бы подобрать самый оптимальный.

Січ 06, 2020 12:10

Unreal Engine 4 не рассматривается? В плане симуляции его API более гибкий, нежели Юнити (есть опыт)