Система управления испытана в полете

25 июля 2016

В июне-июле наши «летающие стенды» (тестовые ракеты, предназначенные для отработки системы управления (СУ) в реальном полете) слетали два раза.

Конструкцию СУ и «летающего стенда» мы детально описали ранее. Как и в апрельских полетах, мы запустили две модификации СУ —одна разработана внешним специалистом на Arduino, а вторая полностью изготовлена внутри «Лин Индастриал».

12 июня стартовал ракета с СУ, выполненной на Arduino (фото старта в начале статьи). Впервые без замечаний отработана вся программа полета, а именно — пуск первых двух двигателей на земле (кировские РД1-300М полным импульсом 300 Н∙с каждый), пуск вторых двух двигателей после завершения работы первых, а также выход парашюта в высшей точке траектории.

К сожалению, один из двух двигателей второй ступени прогорел, что вызвало вращение ракеты, которое вы видели на видео.

Некоторые данные, полученные во время испытаний, мы представили на графике ниже.

Угловая скорость по оси крена, градусы/сек

На нем представлены:

ускорение вдоль продольной оси ракеты;

скоростной напор (пропорционален квадрату скорости, подсчитан с точностью ~5%, поскольку скорость получена интегрированием ускорения вдоль продольной оси ракеты);

угловая скорость по оси крена, то есть угловая скорость вращения ракеты вокруг продольной оси.

Угловая скорость приведены в градусах/сек, остальные величины в условных единицах для сравнения. Красными чертами отделен период после схода ракеты с направляющей длительностью одной секунды. В это время колебания угловой скорости не уменьшаются, но и не увеличиваются. Однако затем что-то происходит, после чего СУ перестает справляться — колебания угловой скорости резко растут, причем настолько резко, что в моменты максимального увеличения колебаний гироскоп зашкаливает (это видно по срезанным пикам на графике угловой скорости).

На третьей секунде прогорел двигатель, ракету начало крутить, оси начали меняться местами и дальнейшая интерпретация графика затруднена.

У нас было несколько версий того, почему после истечения первой секунды полета СУ пошла в разнос. Например, случайный сильный порыв ветра или неполадки в СУ. Или упругость рулей и медленная работа рулевых машин. Так, на изображении ниже видно, как набегающим потоком воздуха заламывает рули, когда ракета летит боком после прогара одного из двигателей.

Эту проблему мы решили, заменив рулевые машинки на более прочные — с жесткими металлическими осями на двух подшипниках.

Но все-таки основная версия состояла в другом. Анализ записей шести полетов показал, что потеря устойчивости происходила при одном и том же скоростном напоре. Поскольку с ростом скоростного напора растет управляющий момент рулей при том же угле отклонения, то частота вынужденных колебаний тоже растет с ростом скорости. Упрощенно говоря, при маленьких скоростях рули нужно выставлять на большой угол, чтобы набегающий поток повернул ракету в нужное положение. Но если мы станем поворачивать рули на большие углы при большой скорости, то вместо плавных поворотов вокруг продольной оси мы увидим, что ракета сильно дергается. Значит, по мере разгона ракеты нужно уменьшать углы поворота рулей.

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

Во-первых, диапазон скоростей ракеты от 0 до 150 м/с был поделен на 16 участков. По мере разгона и торможения ракеты угол отклонения рулей уменьшается и увеличивается от 2 до 16 раз от исходного (стартового) значения. К моменту, когда происходила потеря устойчивости в предыдущих пусках, угол отклонения оказывается уже в 2 раза меньше, чем раньше, а на скорости свыше 80 м/с — в 16 раз меньше, чем раньше.

Для полетов со скоростями свыше 150 м/с надо еще сильнее уменьшать угол отклонения рулей, но такую скорость на дозвуковом «летающем стенде» мы вряд ли получим.

Во-вторых, контроллер управляет рулевыми машинками, выдавая им сигнал с широтно-импульсной модуляцией. Проще говоря, схема выглядит так. Машинка способна принимать сигнал от контроллера с периодичностью 14 мс. Если длительность импульса составляет 1 мс, то руль начинает поворачиваться в положение -150 градусов от нулевого, 1,5 мс —в нулевое положение, а 2 мс — в +150 градусов. Возможны, и повороты на промежуточные положения в зависимости от длины импульса.

Одновременно СУ может записать в регистр сравнения контроллера число от 0 до 1023. Контроллер так устроен, что последовательно сравнивает регистр с числом от 0 до 1023 и делает это за 14 мс. Если в регистре сравнения число больше, чем в счетчике, то на выход дается импульс, если меньше или равно — ничего не подается. Соответственно, импульс может быть длиной от 0 до 14 мс (кодируется числом в регистре от 0 до 1023), но рулевая машинка понимает только импульсы длиной от 1 до 2 мс, поэтому имеет смысл записывать в регистр только числа от 73 до 146. Такой механизм управления плох тем, что дает точность выставления рулей в 4 градуса. Нас это устраивало раньше, но когда стало понятно, что на высоких скоростях угол отклонения должен быть в 16 раз меньше, чем при старте, точности в 4 градуса перестало хватать.

Чтобы увеличить точность, период сравнения регистра был уменьшен в 4 раза — с 14 мс до 3,5 с (контролер позволяет менять этот период, но не на любой, а с довольно серьезными ограничениями). Но поскольку рулевая машинка понимает команды, только если импульсы приходят с частой в 14 мс, то пришлось на выход машинки пропускать только каждый четвертый импульс. Соответственно, рабочий диапазон для регистра сравнения вырос с 73–146 до 292–584, что дает точность установки руля примерно в 1 градус.

Как видим программирование для микроконтроллеров имеет свои особенности. Ради простоты мы опустили некоторые подробности. Например, в реальности ширина импульс не 1–2 мс, а немного больше. Также у нас одна пара рулей управляет отклонением ракеты по осям крена и рысканья и использует 10-битный управление (от 0 до 1023), а другая — управляет только тангажем и использует 8-битное управление (от 0 до 256). Чтобы не запутаться в названиях осей ракеты, см. нашу памятку.

20 июля, после завершения всех доработок второй «летающий стенд» был установлен на стартовый стол.

Ракета великолепно стартовала. К сожалению, радость была омрачена тем, что из-за ошибки при подготовке старту головной обтекатель отделился сразу после того, как двигатели перестали работать, а потом еще и оторвался парашют. В результате ракета жестко упала на землю.

На графике ниже показано ускорение вдоль продольной оси ракеты по трем акселерометрам: внешним, внутренним и дополнительным акселерометров AltimeterThree.

Ускорение, g

Время полета, сек

Цветами обозначено ускорение по данным внутреннего акселерометра СУ, внешнего акселерометра СУ и прибора AltimeterThree

Вторая пара двигателей запустилась на 1,75 секунде и закончила работать примерно через 3,75 секунды от момента старта. На 5,85 секунде отделился головной обтекатель. На 12 секунде сработал запал парашюта, а на 31-й ракета приземлилась.

На графике ниже показан участок полета до отделения обтекателя по данным трех акселерометров.

Ускорение, g

Время полета, сек

Цветами обозначено ускорение по данным внутреннего акселерометра СУ, внешнего акселерометра СУ и прибора AltimeterThree

В период с T+0,5 секунд до Т+1,75 видно, что показания внутреннего акселерометра ADIS16445 вышли на полку — его зашкалило, так как он не измеряет ускорения свыше 5 g. В такие периоды СУ использует данные с внутреннего акселерометра.

На Т+2,0 видно срабатывание запалов второй ступени, и дальше двигатели дают ровную тягу, но ускорение намного меньше, чем во время работы первой ступени, из-за роста сопротивления воздуха.

На Т+4,0 двигатели все еще выдают тягу, но она меньше сопротивления воздуха, и ракета замедляется.

Максимальное торможение на Т+4,25 секунды — двигатели уже перестали работать, скорость еще велика, поэтому аэродинамическое торможение максимально. Дальше оно плавно уменьшается вместе с падением скорости.

На графике видно, что данные со всех трех акселерометров хорошо согласуются (за исключением участка зашкала внутреннего акселерометра). Линия данных AltimeterThree гораздо более гладкая, но не потому, что у прибора хороший алгоритм с фильтрацией помех, а потому, что он реже опрашивается (наши акселерометры опрашиваются с частотой 819,2 Гц и 100 Гц, а AltimeterThree — только 20 Гц). Поэтому во время резких изменений ускорения данные с этого прибора могут быть менее точны.

Максимальная высота подъема — 577 м.

Высота, м


Время полета, сек

Данные по поведению системы управления в полете в настоящий момент обрабатываются. Результаты испытания будут учтены в следующих полетах.

В наших ближайших пусковых планах: полет двухступенчатой сверхзвуковой ракеты сначала без СУ, а потом и с СУ, а также включение в состав СУ программы отработки тангажа (проще говоря, ракета сможет летать не только вертикально) и датчика солнца (обнаружив солнце в определенном положении, ракета поймет, что вышла в нужную точку траектории и отключит двигатель).