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

Аппроксимация временной задержки в непрерывной модели с разомкнутым контуром

В этом примере показано, как аппроксимировать задержки в разомкнутой системе непрерывного времени с помощью pade.

Приближение Паде полезно при использовании инструментов анализа или проектирования, которые не поддерживают временные задержки. Использование слишком высокого порядка приближения может привести к численным ошибкам и, возможно, к нестабильным полюсам. Поэтому избегайте приближений Паде с порядком $n>10$.

Постановка задачи

Создайте образец системы с разомкнутым контуром с задержкой вывода.

timedelayapproximationincontinuoustimeopenloopmodelexample_01.png

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

По умолчанию задержка равна 2.6, но вы можете задать свой параметрю. В результате вы получите P - объект в виде пространства состояний (ss) с временной задержкой 2.6 c.

In [ ]:
s = tf('s');

L = 2.6 # @param {type:"slider", min:0, max:9, step:0.1}
P = exp(-L*s)/(s^2+0.9*s+1)
Out[0]:
DelayLtiSystem{Float64, Float64}

P: StateSpace{Continuous, Float64}
A = 
  0.0   1.0
 -1.0  -0.9
B = 
 0.0  0.0
 1.0  0.0
C = 
 0.0  0.0
 1.0  0.0
D = 
 0.0  1.0
 0.0  0.0

Continuous-time state-space model

Delays: [2.6]

Аппроксимация первого порядка

Вычислите аппроксимацию Паде первого порядка для P.

In [ ]:
Pnd1 = pade(P,1)
Out[0]:
StateSpace{Continuous, Float64}
A = 
  0.0   1.0   0.0
 -1.0  -0.9   0.0
  1.0   0.0  -0.7692307692307692
B = 
 0.0
 1.0
 0.0
C = 
 -1.0  0.0  1.5384615384615383
D = 
 0.0

Continuous-time state-space model

Эта команда заменяет все временные задержки в P на аппроксимацию первого порядка. Таким образом, Pnd1 — это система третьего порядка без задержек.

Сравните частотную характеристику исходной и приблизительной моделей с помощью bodeplot.

In [ ]:
bodeplot([P, Pnd1], label = ["P" "Pnd1"])
Out[0]:

Амплитудные характеристики P и Pnd1 совпадают в точности. Однако фаза Pnd1 отличается от фазы P примерно на 1 рад/с.

Аппроксимация третьего порядка

Увеличте порядок аппроксимации Паде, чтобы расширить диапазон частот, для которых фазовая аппроксимация является хорошей.

In [ ]:
Pnd3 = pade(P,3);

Сравните частотные характеристики P, Pnd1 и Pnd3.

In [ ]:
bodeplot([P, Pnd1, Pnd3], label = ["P" "Pnd1" "Pnd3"])
Out[0]:

Погрешность фазавой характеристики уменьшается при использовании приближения Паде третьего порядка.

Сравните переходные характеристики исходной и аппроксимированной систем во временной области с помощью step.

In [ ]:
plot(
    [step(P), step(Pnd1), step(Pnd3)], 
    label = ["P" "Pnd1" "Pnd3"]
)
Out[0]:

Выводы

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