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

Создание моделей дискретного времени

В этом примере показано, как создавать линейные модели с дискретным временем.

Определение моделей дискретного времени

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

Например, чтобы задать передаточную функцию дискретной системы: $$ H(z) = \frac{z-1}{z^2-1.85z+0.9} $$

С периодом дискретизации $Ts = 0.1$.

In [ ]:
using ControlSystems

num = [1, -1];
den = [1, -1.85, 0.9];
H = tf(num,den,0.1)
Out[0]:
TransferFunction{Discrete{Float64}, ControlSystemsBase.SisoRational{Float64}}
     1.0z - 1.0
--------------------
1.0z^2 - 1.85z + 0.9

Sample Time: 0.1 (seconds)
Discrete-time transfer function model

точно так же можно задать модель дискретной системы в пространстве состояний: $$ x[k+1]=0.5x[k]+u[k] $$ $$ y[k]=0.2x[k] $$

С периодом дискретизации $Ts = 0.1$.

In [ ]:
sys = ss(.5,1,.2,0,0.1)
Out[0]:
StateSpace{Discrete{Float64}, Float64}
A = 
 0.5
B = 
 1.0
C = 
 0.2
D = 
 0.0

Sample Time: 0.1 (seconds)
Discrete-time state-space model

Распознавание систем дискретного времени

Существует несколько способов определить дискретна ли линейная модель. Например, sys.Ts или H.Ts возвращают не нулевое значение $Ts$, если модель дискретная.

In [ ]:
H.Ts
Out[0]:
0.1

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

In [ ]:
using Plots

plot(step(H,8))
Out[0]:

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