Аппроксимация Паде входного сигнала задержки по времени

Этот пример показывает, как использовать аппроксимацию Паде в теории систем управления для моделирования временных задержек в отклике системы первого порядка. Задержки возникают в таких системах, как химические и транспортные процессы, где существует задержка между входом и откликом системы. Когда эти входы моделируются, они называются входами с потерей времени.

Этот пример использует Symbolic Math Toolbox™, чтобы решить для передаточной функции системы первого порядка и найти отклик системы к шагу с потерей времени с помощью аппроксимации Padé. Этот пример выполняет вычисления символически, чтобы получить аналитические результаты.

Введение

Аппроксимация порядка Паде [m, n] аппроксимирует функцию f(x) вокруг x=x0 как

a0+a1(x-x0)++am(x-x0)m1+b1(x-x0)++bn(x-x0)n.

Аппроксимация Паде является рациональной функцией, образованной отношением двух степенных рядов. Поскольку это рациональная функция, она точнее ряда Тейлора в аппроксимации функций с полюсами. Аппроксимация Паде представлена функцией Symbolic Math Toolbox™ pade.

Когда шест или нуль существует в точке расширения x=x0точность аппроксимации Паде уменьшается. Чтобы увеличить точность, используйте альтернативную форму аппроксимации Паде, которая

(x-x0)p(a0+a1(x-x0)++am(x-x0)m)1+b1(x-x0)++bn(x-x0)n.

The pade функция возвращает альтернативную форму аппроксимации Паде, когда вы задаете OrderMode входной параметр в Relative.

Поиск передаточной функции системы первого порядка

Поведение системы первого порядка описывается этим дифференциальным уравнением

τdy(t)dt+y(t)=ax(t).

Введите дифференциальное уравнение в MATLAB ®.

syms tau a x(t) y(t) xS(s) yS(s) H(s) tmp
F = tau*diff(y)+y == a*x;

Найдите преобразование Лапласа F использование laplace.

F = laplace(F,t,s)
F = laplace(y(t),t,s)-τy(0)-slaplace(y(t),t,s)=alaplace(x(t),t,s)laplace (y (t), t, s) - tau * (y (0) - s * laplace (y (t), t, s)) = = a * laplace (x (t), t, s)

Примите ответ системы в t = 0 является 0. Использование subs для замены y(0) = 0.

F = subs(F,y(0),0)
F = laplace(y(t),t,s)+sτlaplace(y(t),t,s)=alaplace(x(t),t,s)laplace(y(t), t, s) + s*tau*laplace(y(t), t, s) == a*laplace(x(t), t, s)

Чтобы собрать общие термины, используйте simplify.

F = simplify(F)
F = sτ+1laplace(y(t),t,s)=alaplace(x(t),t,s)(s * tau + 1) * laplace (y (t), t, s) = = a * laplace (x (t), t, s)

Для читаемости замените преобразования Лапласа x(t) и y(t) с xS(s) и yS(s).

F = subs(F,[laplace(x(t),t,s) laplace(y(t),t,s)],[xS(s) yS(s)])
F = yS(s)sτ+1=axS(s)yS (s) * (s * tau + 1) = = a * xS (s)

Преобразование Лапласа передаточной функции yS(s)/xS(s). Разделите обе стороны уравнения на xS(s) и использовать нижние индексы для замены yS(s)/xS(s) с H(s).

F = F/xS(s);
F = subs(F,yS(s)/xS(s),H(s))
F = H(s)sτ+1=aH (s) * (s * tau + 1) = = a

Решите уравнение для H(s). Замена H(s) с помощью фиктивной переменной решите для фиктивной переменной с помощью solve и присвойте решение Hsol(s).

F = subs(F,H(s),tmp);
Hsol(s) = solve(F,tmp)
Hsol(s) = 

asτ+1a/( s * tau + 1)

Поиск отклика системы на отложенный по времени шаг Входа

Вход в систему первого порядка является шагом с задержкой во времени. Чтобы представлять входной вход шага, используйте heaviside. Задержка входа на три временных модулей. Найдите преобразование Лапласа с помощью laplace.

step = heaviside(t - 3);
step = laplace(step)
step = 

e-3ssexp (-3 * s )/s

Найдите ответ системы, который является продуктом передаточной функции и входа.

y = Hsol(s)*step
y = 

ae-3sssτ+1(a * exp ((-3 * s) )/( s * (s * tau + 1))

Чтобы разрешить построение графика отклика, установите параметры a и tau к конкретным значениям. Для a и tau, выберите значения 1 и 3, соответственно.

y = subs(y,[a tau],[1 3]);
y = ilaplace(y,s);

Поиск отклика системы с использованием аппроксимаций Padé

Найдите аппроксимацию порядка Паде [2 2] шага, используя входной параметр порядок, чтобы pade.

stepPade22 = pade(step,'Order',[2 2])
stepPade22 = 

3s2-4s+22ss+1(3 * s ^ 2 - 4 * s + 2 )/( 2 * s * (s + 1))

Найдите ответ на вход, умножив передаточную функцию и аппроксимацию Padé входного сигнала.

yPade22 = Hsol(s)*stepPade22
yPade22 = 

a3s2-4s+22ssτ+1s+1(a * (3 * s ^ 2 - 4 * s + 2 )/( 2 * s * (s * tau + 1) * (s + 1))

Найдите обратное преобразование Лапласа yPade22 использование ilaplace.

yPade22 = ilaplace(yPade22,s)
yPade22 = 

a+9ae-s2τ-2-ae-sτ2τ2+4τ+3τ2τ-2a + (9 * a * exp ((-s)) )/( sym (2) * tau - 2) - (a * exp ((-s/tau)) * (2 * tau ^ sym (2) + sym (4) * tau + 3) )/( tau * (sym (2) * tau - 2))

Чтобы построить график отклика, установите параметры a и tau к своим значениям 1 и 3, соответственно.

yPade22 = subs(yPade22,[a tau],[1 3])
yPade22 = 

9e-s4-11e-s34+1(9 * exp ((-s)) )/4 - (11 * exp ((-s/3)) )/4 + 1

Постройте график отклика системы y и ответ, вычисленный из аппроксимации Паде yPade22.

fplot(y,[0 20])
hold on
fplot(yPade22, [0 20])
grid on
title 'Padé approximant for dead-time step input'
legend('Response to dead-time step input', 'Padé approximant [2 2]',...
    'Location', 'Best');

Figure contains an axes. The axes with title Padé approximant for dead-time step input contains 2 objects of type functionline. These objects represent Response to dead-time step input, Padé approximant [2 2].

Увеличение точности аппроксимации Паде с помощью OrderMode

The [2 2] Аппроксимация Паде не хорошо представляет реакцию, потому что полюс существует в точке расширения 0. Для повышения точности pade когда в точке расширения есть шест или нуль, установите OrderMode введите аргумент в Relative и повторите шаги. Для получения дополнительной информации смотрите pade.

stepPade22Rel = pade(step,'Order',[2 2],'OrderMode','Relative')
stepPade22Rel = 

3s2-6s+4s3s2+6s+4(3 * s ^ 2 - 6 * s + 4 )/( s * (3 * s ^ 2 + 6 * s + 4))

yPade22Rel = Hsol(s)*stepPade22Rel
yPade22Rel = 

a3s2-6s+4ssτ+13s2+6s+4(a * (3 * s ^ 2 - 6 * s + 4) )/( s * (s * tau + 1) * (3 * s ^ 2 + 6 * s + 4))

yPade22Rel = ilaplace(yPade22Rel);
yPade22Rel = subs(yPade22Rel,[a tau],[1 3])
yPade22Rel = 

12e-tcos(3t3)+23sin(3t3)37-19e-t37+1(12 * exp ((-t)) * (cos ((sqrt (sym (3)) * t )/3) + (2 * sqrt (sym (3)) * sin ((sqrt (sym (3)) * t )/3 )/3) )/7 - (19 * exp ((-t/3)) )/7 + 1

fplot(yPade22Rel, [0 20], 'DisplayName', 'Relative Padé approximant [2 2]')

Figure contains an axes. The axes with title Padé approximant for dead-time step input contains 3 objects of type functionline. These objects represent Response to dead-time step input, Padé approximant [2 2], Relative Padé approximant [2 2].

Увеличение точности аппроксимации Паде путем увеличения порядка

Можно увеличить точность аппроксимации Паде, увеличив её порядок. Увеличьте порядок до [4 5] и повторите шаги. The [n-1 n] Аппроксимация Паде лучше аппроксимирует ответ при t = 0 чем [n n] Паде аппроксимация.

stepPade45 = pade(step,'Order',[4 5])
stepPade45 = 

27s4-180s3+540s2-840s+560s27s4+180s3+540s2+840s+560(27 * s ^ 4 - 180 * s ^ 3 + 540 * s ^ 2 - 840 * s + 560 )/( s * (27 * s ^ 4 + 180 * s ^ 3 + 540 * s ^ 2 + 840 * s + 560))

yPade45 = Hsol(s)*stepPade45
yPade45 = 

a27s4-180s3+540s2-840s+560ssτ+127s4+180s3+540s2+840s+560(a * (27 * s ^ 4 - 180 * s ^ 3 + 540 * s ^ 2 - 840 * s + 560) )/( s * (s * tau + 1) * (27 * s ^ 4 + 180 * s ^ 3 + 540 * s ^ 2 + 840 * s + 560))

yPade45 = subs(yPade45,[a tau],[1 3])
yPade45 = 

27s4-180s3+540s2-840s+560s3s+127s4+180s3+540s2+840s+560(27 * s ^ 4 - 180 * s ^ 3 + 540 * s ^ 2 - 840 * s + 560 )/( s * (3 * s + 1) * (27 * s ^ 4 + 180 * s ^ 3 + 540 * s ^ 2 + 840 * s + 560))

Найдите обратное преобразование Лапласа yPade45 использование ilaplace. Аппроксимация yPade45 численно использование vpa. Постройте график отклика, вычисленного из аппроксимации Паде yPade45.

yPade45 = vpa(ilaplace(yPade45));
fplot(yPade45, [0 20], 'DisplayName', 'Padé approximant [4 5]')

Figure contains an axes. The axes with title Padé approximant for dead-time step input contains 4 objects of type functionline. These objects represent Response to dead-time step input, Padé approximant [2 2], Relative Padé approximant [2 2], Padé approximant [4 5].

Заключения

Показаны следующие точки:

  • Аппроксимации Padé могут моделировать входы шага с потерей времени.

  • Точность аппроксимации Паде увеличивается с увеличением порядка аппроксимации.

  • Когда в точке расширения существует шест или нуль, аппроксимация Паде неточна относительно точки расширения. Чтобы увеличить точность аппроксимации, установите OrderMode опция для Relative. Можно также использовать увеличение порядка знаменателя относительно числителя.