Этот пример показывает, как использовать Control System Toolbox™, чтобы анализировать и разработать системы управления с задержками.
Много процессов включают потери времени, также называемые транспортными задержками или задержками. Управление такими процессами сложно, потому что задержки вызывают линейные сдвиги фазы, которые ограничивают пропускную способность управления и влияют на устойчивость с обратной связью.
Используя представление пространства состояний, можно создать точный открытый - или модели с обратной связью систем управления с задержками и анализировать их устойчивость и производительность без приближения. Объект пространства состояний (SS) автоматически отслеживает "внутренние" задержки при объединении моделей см. "пример по" Задержек Определения для получения дополнительной информации.
Рассмотрите стандартный цикл отслеживания заданного значения:
где модель процесса, которую P
имеет в 2.6 вторых раза и компенсатор C
, является контроллером PI:
Можно задать эти две передаточных функции как
s = tf('s');
P = exp(-2.6*s)*(s+3)/(s^2+0.3*s+1);
C = 0.06 * (1 + 1/s);
Чтобы анализировать ответ с обратной связью, создайте модель T
из передачи с обратной связью от ysp
до y
. Поскольку существует задержка этой обратной связи, необходимо преобразовать P
и C
к пространству состояний и использовать представление пространства состояний для анализа:
T = feedback(P*C,1)
T = A = x1 x2 x3 x1 -0.36 -1.24 -0.18 x2 1 0 0 x3 0 1 0 B = u1 x1 0.5 x2 0 x3 0 C = x1 x2 x3 y1 0.12 0.48 0.36 D = u1 y1 0 (values computed with all internal delays set to zero) Internal delays (seconds): 2.6 Continuous-time state-space model.
Результатом является модель третьего порядка с внутренней задержкой 2,6 секунд. Внутренне, объект T
пространства состояний отслеживает, как задержка вместе с остающейся динамикой. Эта структурная информация не видима пользователям, и отображение выше только дает A, B, C, D значения, когда задержка обнуляется.
Используйте команду STEP
, чтобы построить переходной процесс с обратной связью от ysp
до y
:
step(T)
Колебания с обратной связью происходят из-за слабого поля усиления, как замечено по ответу разомкнутого цикла P*C
:
margin(P*C)
В частотной характеристике с обратной связью существует также резонанс:
bode(T)
grid, title('Closed-loop frequency response')
Чтобы улучшить проект, можно попытаться отметить резонанс около 1 рад/с:
notch = tf([1 0.2 1],[1 .8 1]); C = 0.05 * (1 + 1/s); Tnotch = feedback(P*C*notch,1); step(Tnotch), grid
Много алгоритмов системы управления не могут обработать задержки непосредственно. Общее обходное решение состоит из замены задержек их приближениями Pade (фильтры все-передачи). Поскольку это приближение только допустимо в низких частотах, важно сравнить истинные и аппроксимированные ответы, чтобы выбрать правильный порядок приближения и проверять валидность приближения.
Используйте команду PADE
, чтобы вычислить приближения Pade моделей LTI с задержками. Поскольку PI управляет примером выше, можно сравнить точный ответ с обратной связью T
с ответом, полученным для приближения Pade первого порядка задержки:
T1 = pade(T,1); step(T,'b',T1,'r',100) grid, legend('Exact','First-Order Pade')
Ошибка приближения является довольно большой. Чтобы получить лучшее приближение, попробуйте приближение Pade второго порядка задержки:
T2 = pade(T,2); step(T,'b',T2,'r',100) grid, legend('Exact','Second-Order Pade')
Ответы теперь соответствуют тесно за исключением неминимального артефакта фазы, введенного приближением Pade.
Задержки редко известны точно, таким образом, часто важно понять, насколько чувствительный система управления к значению задержки. Такой анализ чувствительности легко выполняется с помощью массивов LTI и свойства InternalDelay.
Например, чтобы анализировать чувствительность с пазами управления PI выше, создайте 5 моделей со значениями задержки в пределах от 2,0 к 3,0:
tau = linspace(2,3,5); % 5 delay values Tsens = repsys(Tnotch,[1 1 5]); % 5 copies of Tnotch for j=1:5 Tsens(:,:,j).InternalDelay = tau(j); % jth delay value -> jth model end
Затем используйте STEP
, чтобы создать график конверта:
step(Tsens)
grid, title('Closed-loop response for 5 delay values between 2.0 and 3.0')
Этот график показывает, что неуверенность на значении задержки имеет мало эффекта на характеристики с обратной связью. Обратите внимание на то, что, в то время как можно изменить значения внутренних задержек, вы не можете измениться, сколько существует то, потому что это - часть образцовой структуры. Чтобы устранить некоторые внутренние задержки, обнулите их значение или используйте PADE
с нулем порядка:
Tnotch0 = Tnotch; Tnotch0.InternalDelay = 0; bode(Tnotch,'b',Tnotch0,'r',{1e-2,3}) grid, legend('Delay = 2.6','No delay','Location','SouthWest')
Можно использовать C2D
, чтобы дискретизировать непрерывно-разовые системы задержки. Доступные методы включают хранение нулевого порядка (ZOH), хранение первого порядка (FOH) и Тастин. Для моделей с внутренними задержками дискретизация ZOH не всегда "точна", т.е. непрерывные и дискретизированные переходные процессы не могут соответствовать:
Td = c2d(T,1); step(T,'b',Td,'r') grid, legend('Continuous','ZOH Discretization')
Warning: Discretization is only approximate due to internal delays. Use faster sampling rate if discretization error is large.
Чтобы исправить такие разрывы дискретизации, уменьшайте период выборки до непрерывного и дискретного соответствия ответов тесно:
Td = c2d(T,0.05); step(T,'b',Td,'r') grid, legend('Continuous','ZOH Discretization')
Warning: Discretization is only approximate due to internal delays. Use faster sampling rate if discretization error is large.
Обратите внимание на то, что внутренние задержки остаются внутренними в дискретизированной модели и не раздувают порядок модели:
order(Td) Td.InternalDelay
ans = 3 ans = 52
Время и частотные характеристики систем задержки могут выглядеть причудливыми и подозрительными только знакомым с анализом LTI без задержек. Ответы времени могут вести себя хаотично, Диаграммы Боде могут показать колебания усиления и т.д. Это не причуды программного обеспечения, но действительные функции таких систем. Ниже несколько рисунков этих явлений
Пульсации усиления:
G = exp(-5*s)/(s+1); T = feedback(G,.5); bodemag(T)
Колебания усиления:
G = 1 + 0.5 * exp(-3*s); bodemag(G)
Зубчатый переходной процесс (отмечают "эхо" начального шага):
G = exp(-s) * (0.8*s^2+s+2)/(s^2+s); T = feedback(G,1); step(T)
Хаотический ответ:
G = 1/(s+1) + exp(-4*s); T = feedback(1,G); step(T)