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

Создание моделей непрерывных систем

В данном примере рассмотрим, как создать модель непрерывной во времени системы с помощью функций tf zpk ss.


Библиотека ControlSystems.jl позволяет задавать линейные модели непрерывных систем тремя разными способами:

  • Передаточные функции (tf)

  • Задание полюсов и нулей (zpk)

  • Пространство состояний (ss)

#Подключение библиотеки для работы с САУ
using ControlSystems

Передаточные функции

Для SISO систем передаточная функция представляет собой отношение многочленов и , которые являются изображениями по Лапласу выходной и входной величин.

В Engee многочлен задается в виде вектора коэффициентов. Например, для многочлена: , вектор коэффициентов: .

Получим передаточную функцию вида:

num = [1, 0]; #Задаем числитель
den = [1, 2, 10]; #Задаем знаменатель
W1 = tf(num, den)
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
      s
-------------
s^2 + 2s + 10

Continuous-time transfer function model

В качестве другого варианта, можно перейти в область Лапласа и вместо вектора с коэффициентами передать многочлен с переменной s.

s = tf('s'); #Создаем переменную Лапласа
W2 = s/(s^2 + 2*s + 10)
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
      s
-------------
s^2 + 2s + 10

Continuous-time transfer function model

Задание полюсов и нулей

Заданное с помощью функции zpk() описание модели выглядит как передаточная функция.

Корни числителя называются нулями, а знаменателя полюсами. Скалярный коэффициент - коэффициент усиления.

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

z = [0]; # Нули
p = [2,1+1im,1-1im]; # Полюса
k = -2; # коэффициент усиления
H = zpk(z,p,k)
TransferFunction{Continuous, ControlSystemsBase.SisoZpk{Int64, Complex{Int64}}}
            s
-2---------------------
  (s - 2)(s^2 - 2s + 2)

Continuous-time transfer function model

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

s = zpk("s");
H = -2*s/(s - 2)/(s^2 - 2*s + 2)
TransferFunction{Continuous, ControlSystemsBase.SisoZpk{Float64, ComplexF64}}
                                 1.0s
-2.0---------------------------------------------------------------
    (1.0s - 2.0)(1.0s^2 - 1.9999999999999996s + 1.9999999999999991)

Continuous-time transfer function model

Модель в пространстве состояний

Модель пространства состояний это представление дифференциальных уравнений в матричной форме. Полная модель объекта в пространстве состояний содержит два уравнения:

где - вектор состояния системы, - вектор входа(сигнал управления), - вектор выхода; - матрицы.

Для задания модели в пространстве состояний существует функция ss(). Для этого на вход функции нужно задать описанные матрицы.

A = [0  1 ; -5  -2];
B = [0 ; 3];
C = [1  0];
D = 0;
H = ss(A,B,C,D)
StateSpace{Continuous, Int64}
A =
  0   1
 -5  -2
B =
 0
 3
C =
 1  0
D =
 0

Continuous-time state-space model

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