Введение

Основные функции

Системы пространства состояний можно создавать с помощью функции ss, а передаточные функции — с помощью функции tf(num, den) или tf(num, den, Ts), где num и den — это векторы, представляющие числитель и знаменатель рациональной функции, а Ts — это интервал дискретизации для системы с дискретным временем. Дополнительные сведения см. в описании функции tf или разделе [Создание систем]. Эти функции далее можно соединять и модифицировать с помощью операторов +,-,*,/ и таких функций, как append.

Пример:

P = tf([1.0],[1,1])
T = P/(1+P)

# output

TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
    1.0s + 1.0
-------------------
1.0s^2 + 3.0s + 2.0

Continuous-time transfer function model

Обратите внимание, что полюса не устраняются автоматически; для этого имеется функция minreal.

minreal(T)

# output

TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
   1.0
----------
1.0s + 2.0

Continuous-time transfer function model

Либо воспользуйтесь feedback(P), чтобы получить минимальную реализацию напрямую (рекомендуется):

feedback(P) # Эквивалентно P/(1+P)
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Float64}}
   1.0
----------
1.0s + 2.0

Continuous-time transfer function model

Передаточные функции представляют системы в виде многочленов и могут иметь плохие числовые характеристики для систем высокого порядка. Хорошо сбалансированные представления пространства состояний зачастую проявляют себя лучше. Дополнительные сведения см. в документе Performance considerations.

Построение графиков

В качестве интерфейса для формирования любых графиков пакет ControlSystems использует RecipesBase.jl (ссылка). Это означает, что пользователь сам выбирает библиотеку для построения графиков, поддерживающую RecipesBase.jl, при этом рекомендуется пакет Plots.jl, позволяющий пользователю свободно выбирать бэкенд. Графики в этом руководстве созданы с использованием Plots.jl с бэкендом GR. Если у вас есть несколько бэкендов для построения графиков, вы можете выбрать нужный с помощью соответствующего вызова Plots (для GR это будет Plots.gr(); другие варианты — pyplot(), plotly(), pgfplots()). Ниже приведен простой пример создания графика и сохранения его в файле.

Другие примеры графиков можно найти в разделе Plotting functions.

using Plots
bodeplot(tf(1,[1,2,1]))