Форум программистов, компьютерный форум, киберфорум
Наши страницы
Dima_control
Войти
Регистрация
Восстановить пароль
Рейтинг: 4.00. Голосов: 1.

Костыли и грабли или как мы делали симулятор - ч.2

Запись от Dima_control размещена 04.01.2020 в 12:42

Продолжаем. Итак я решил начать с разработки модели Вычислительной Системы (ВС) транспортного пилотируемого корабля (ТПК) Союз-ТМА. Конечно я потом понял, что это оказалась плохая идея и начинать нужно было с другого. Но да ладно. Начал так начал. Для начала я решил разобраться с тем какие параметры будут на входе и что будет на выходе и разбить это на группы. В основу модели лег конечно Бортовой Цифровой Вычислительный Комплекс(БЦВК) - Аргон-16, который был в составе КА Союз-ТМА. У меня имелись некоторые алгоритмы этого комплекса некоторое представление о его работе. По сути все упиралось в то, что на него поступает сигнал (аналоговый с датчика угловых скоростей или же импульс "квитанции" срабатывания реле) и он то же что-то отправляет.
Я прикинул список основных необходимых входящих параметров и обозначил их все типом данных double. В итоге вышло следующее:
C++
1
2
3
4
5
6
7
8
double aks_vx;         //Ускорение по оси Х от акселерометра
double ikv1_kr_tn[2];  //Углы крена и тангажа от ИКВ 1
double ikv2_kr_tn[2];  //Углы крена и тангажа от ИКВ 2
double bdus_1[3];      //Сигналы с датчика Блока Датчиков Угловых Скоростей (БДУС)
double bdus_2[3];      //Сигналы с БДУС - 2й комплект
double bdus_3[3];      //Сигналы с БДУС - 3й комплект
double ruo_w[3];       //Сигнал с Ручки Управления Ориентацией
double rud[3];         //сигнал с Ручки Управления Движением
Все эти параметры должны откуда-то придти, а именно от моделей датчиков, как это реализовано в тренажерах. Но для нас эти лишнее, т.к. я конечно могу ошибаться, но разработка модели датчиков, описывающую технические возможности каждого датчика и его ВАХ, в которую будут поступать не просто сигналы, а напряжение (как это и есть в аналоговых датчиках) и выдавать она будет напряжение, которое потом нам надо будет преобразовать в понятный сигнал - загвостка на несколько месяцев и нагрузка на систему. Так что я решил поступить так - модель движения корабля (включающая в себя фундаментальные законы небесной механики, уравнения, диффуры и т.п. (Уравнения кстати брал у Дубошина)) по заданным начальным условиям (НУ) (которые пользователь вводит перед "пуском" режима) формирует все возмущения на корабль (т.е. угловые скорости по всем каналам X Y Z для БДУС и линейное ускорение в продольном канале для акселерометра ) которые уже в виде массивов передаются в модели необходимых вычислительных устройств(ВУ). Теперь стоило бы описать что и откуда приходит и куда уходит что бы было более менее понятно.

aks_vx - линейное ускорение в продольном канале (т.е. по ходу движения) выражается в м/с. Поступает в спец вычислитель КС-020 (благо тренажерная модель, хоть и на Паскале КС-020 у меня уже была) где используется для вычислений.

ikv1_kr_tn и ikv2_kr_tn - выходные параметры с двух комплектов прибора ИКВ (построитель местной вертикали, что бы КА одной осью все время смотрел на землю, в нашем случае осью "-Y"). Параметры выражаются в виде значения отклонения угла тангажа и крена текущего положения КА от заданного. При совпадении оси “-Y” ТК с местной вертикалью (МВ) на выходе ИКВ сигнал равен нулю. При отклонении оси “-Y” ТК от МВ выходной сигнал ИКВ содержит информацию о величине и направлении этого отклонения.

bdus_1, bdus_2 и bdus_1 - выходное значение угловой скорости в каждом канале X Y Z которое приходит от 3-х комплектов БДУС (предназначен для измерения проекций вектора абсолютной угловой скорости ТК (Wx, Wy, Wz) на его связанные оси и формирования управляющих сигналов, пропорциональных им, а также формирования сигналов, пропорциональных угловым отклонениям корабля), выражается в градусах в секунду (гр/с).

ruo_w - сигналы с ручки управления ориентацией, по сути сигналы с джойстика. В симуляторе планируется использовать 3 штатных органа управления(РУД, РУО, РУС) и несколько вариантов самого управления (с физических ОУ типа джойстиков или с клавиатуры). Фото РУД и РУО Но тут стоит немного по подробнее рассказать про сами ручки и то с какой проблемой я столкнулся при разработке их интеграции для ПК - у РУО имеется так называемые “мягкие упоры”, при прохождении которых противодействующие моменты возрастают скачкообразно. Когда мы отклоняем ручку до мягкого упора(около 60% от максимального отклонения), то выходная характеристика одна (0,85 гр/с), а когда отклоняем ее больше, уже до "жесткого упора" (механического - 100%), то характеристика соответственно возрастает (2,4 гр/с). Очень важным было повторить этот принцип и на ПК, в итоге долго думая я решил использовать клавиши клавиатуры для управления КА таким образом - обычное нажатие клавиш Q E J U приводит к работе РУО в "мягком упоре", а нажатие этих клавиш с левым Shift'ом к работе в "жестком упоре".

rud - сигналы с Ручки Управления Движением (РУД). Эта ручка предназначена для выдачи сигналов управления на перемещение центра масс вдоль направления главных осей КА в соответствии с отклонением ее оператором. Не имеет (в отличии от РУО) "мягких" и "жестких" упоров.

Так с переменными вроде бы разобрались, но что бы продолжить необходимо внести еще одно понятие - Дискретный и аналоговый контуры. На данном этапе я реализовывал модель ВС, но правильнее было бы назвать ее модель Системы Управления Движением (СУД) в связи с тем, что операции, процедуры и функции которые модель будет в себя включать относятся именно к СУД всего корабля(а также в ее основу входит компьютер БЦВК "Аргон-16" с которого я и решил начать проект). В Союз-ТМА СУД имела (как и я вся техника в СССР специального назначения) забавное название “Чайка-3” и была предназначена для решения задач управления движением ТК на всех участках полета. Основными ее задачами является:
  • построение заданных режимов ориентации;
  • маневрирование (коррекция орбиты);
  • сближение, причаливание, стыковка;
  • спуск с орбиты.
Включает в себя СУД как раз три контура - Аналоговый Контур (АК), Дискретный Контур (ДК) и контур управления спуском.
О спуске я даже не думал и важным для меня был только дискретный, т.к. я хотел получить рабочую версию хоть чего-то, а для этого надо было реализовать программу "минимум", а именно - один из контуров управления.
Немного о самих контурах и с чем их едят . Основным (штатным) контуром управления является дискретный. Аналоговый контур управления является резервным контуром ориентации и стабилизации.
Дискретный контур решает следующие задачи:
Кликните здесь для просмотра всего текста
- программно-логическое управление режимами работы СУД;
- автоматическое построение и поддержание ориентации космического аппарата;
- автоматическое или ручное построение и поддержание ориентации КА относительно
орбитальной системы координат (ОСК);
- выполнение программных разворотов корабля на заданный пространственный угол
относительно выбранной системы координат;
- реализация циклограммы подготовки и включения корректирующего двигателя, измерение
текущего приращения скорости при её работе и формирование команды на выключение
после отработки программного импульса;
- автоматическая и ручная стабилизация корабля в выбранной системе координат во время
работы корректирующего двигателя;
- автоматический контроль состояния системы, контроль выполнения динамических
операций с автоматическим изменением структуры системы при возникновении отказов;
- информация экипажа и оперативной группы управления полетом о ходе выполнения
динамического режима и параметрах системы, о возникновении отказов и неисправностей.

А в состав его входят уже известные нам приборы и блоки:
- бортовой цифровой вычислительный комплекс (БЦВК);
- блок датчиков угловых скоростей (БДУС);
- инфракрасный построитель местной вертикали (ИКВ);
- блок струнных акселерометров (БСА);
- двигательная установка (КДУ).
Для организации обмена информацией между оператором используются следующее оборудование и аппаратура:
- ручки РУД и РУО;
- пульт космонавтов "Нептун-МЭ" - собственно 90% управления кораблем и весь GUI симулятор будет построен на нем.

Итак, подведем итоги - мы имеем начальные условия в виде массива структур на входе в модель и на выходе нужно получить текущее положение корабля в пространстве, а так же иметь возможность изменять его положение с клавиатуры ПК(имитация ускорений от работы двигателей).

Что бы не путаться и каждый раз не рассчитывать положение корабля для начальных условий в системе X Y Z я ввел строгие начальные условия (которые используются в тренажерах ЦПК) с которыми работаю и по сей день.
Кликните здесь для просмотра всего текста
На момент "ПУСКА" режима полета (время Т0) корабль находится на орбите искусственного спутника Земли (ОИСЗ) со следующими параметрами -
А. Оскулирующие элементы (т.е. стандартный набор Кеплеровых элементов орбиты):
- Большая полуось = 6791.573 км
- Эксцентриситет = 0.001
- Долгота восходящего узла = 310.320 гр
- Наклонение = 51.638 гр
- Аргумент перицентра = 77.781 гр
- Истинная аномалия = 158.220 гр
Б. Параметры КА
- Масса корабля = 6770 кг
- J[6] - массив тензоров инерции
В. Параметры ориентации
- Массив углов КА (крен, тангаж, рыскание) = 0 0 0
- Массив начальных угловых скоростей X Y Z = 0 0 0


В следующем блоге расскажу о первых модулях которые я реализовал.
Просмотров 180 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.