Документация Engee
Notebook

Тросовая система стабилизации спутника

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

Описание изучаемого процесса

Рассмотрим задачу управления угловым моментом спутника при помощи тросовой системы. Тросовая стабилизация (Yo-yo despin) часто используется для уменьшения углового момента спутника, намеренно созданного для стабилизации во время разгона. Но наша система будет управлять колебаниями спутника вокруг космической платформы.

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

Модель углового движения

На этой модели показано, как длина троса $l$ влияет на угловую скорость $\theta$ движения спутника.

image.png

Полная энергия спутника рассчитывается в блоке Total Energy по формуле:

$$E = 9.8 \cdot \dot \theta (1-cos(\theta)) + \frac{l^2 \cdot \dot \theta^2}{2}$$

В блоке Compute theta_dot_dot вычисляется угловое ускорение спутника в ходе его движения на удалении $l$ от платформы:

$$\ddot \theta = \frac{-2 \dot l \dot \theta + 9.8 sin(\theta)}{l}$$

Переход значений сигнала через 0 фиксируется при помощи блоков HitCross, которые формируют дополнительные переменные в вектор состояния нашей системы.

В конце концов, все 5 переменных этого вектора передаются в блок управления стабилизацией, реализованный в виде конечного автомата, при помощи компонента сhart.

Управляющий блок

Ниже представлена схема системы управления, реализованная при помощи блока chart.

image.png

Когда спутник находится в середине своей периодической траектории (при $\theta = 0$), система переходит в состояние ReelMovingOut. Когда спутник достиг максимального удаления от платформы, система переходит в состояние ReelStop. Затем, когда угловая скорость спутника переходит отметку 0, система переходит в состояние ReelMovingIn. И когда трос достигает минимальной допустимой длины, система снова переходит в состояние ReelStop.

Когда же блок вычисления полной энергии спутника возвращает достаточно малое значение, система стабилизации переходит в состояние Inactive.

Отображение результатов

Запуск модели позволяет увидеть все переменные состояния системы стабилизации: длину троса l, угол спутника theta и их производные.

In [ ]:
modelName = "satellite_yo_yo_model";
model = modelName in [m.name for m in engee.get_all_models()] ? engee.open( modelName ) : engee.load( "$(@__DIR__)/$(modelName).engee");

# Запустим модель
s = engee.run( modelName, verbose=false )
Out[0]:
Dict{String, DataFrames.DataFrame} with 3 entries:
  "theta" => 50001×2 DataFrame…
  "l"     => 50001×2 DataFrame…
  "E"     => 50001×2 DataFrame
In [ ]:
using Plots, LaTeXStrings
plot( s["theta"].time, s["theta"].value, xlabel=L"t, c", ylabel=L"\theta, рад" )
Out[0]:

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

image.png

Как мы видим, энергия системы и амплитуда угловых колебаний снижалась по мере работы системы стабилизации. На синем графике мы видим, как менялась длина троса – от максимально допустимой до минимальной.

Заключение

Совместив несколько видов моделей на одном холсте Engee мы смогли визуализировать процесс управления тросовой системой стабилизации небольшого спутника.

Блоки, использованные в примере