Сообщество Engee

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

Автор
avatar-daryadarya
Notebook

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

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

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

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

Например, чтобы задать передаточную функцию дискретной системы:

С периодом дискретизации .

Pkg.add(["ControlSystems"])
using ControlSystems

num = [1, -1];
den = [1, -1.85, 0.9];
H = tf(num,den,0.1)
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

точно так же можно задать модель дискретной системы в пространстве состояний:

С периодом дискретизации .

sys = ss(.5,1,.2,0,0.1)
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 возвращают не нулевое значение , если модель дискретная.

H.Ts
0.1

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

using Plots

plot(step(H,8))

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