В этом примере показано, как использовать Control System Toolbox™ для анализа и проектирования систем управления с задержками.
Многие процессы связаны с потерей времени, также называемыми задержками транспорта или временными задержками. Управление такими процессами проблематично, потому что задержки вызывают линейные сдвиги фазы, которые ограничивают полосу пропускания управления и влияют на стабильность замкнутого контура.
Используя представление пространства состояний, можно создать точные открытые или замкнутые модели систем управления с задержками и анализировать их устойчивость и эффективность без приближения. Объект пространства состояний (SS) автоматически отслеживает «внутренние» задержки при объединении моделей, см. руководство «Определение временных задержек» для получения дополнительной информации.
Рассмотрим стандартный цикл отслеживания уставки:
где модель процесса P
имеет время смерти 2,6 секунды и компенсатор C
является ПИ-контроллер:
Можно задать эти две передаточные функции как
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
команда для вычисления аппроксимаций Паде моделей LTI с задержками. Для примера управления PI, приведенного выше, можно сравнить точную реакцию с обратной связью T
с ответом, полученным для Аппроксимации Паде первого порядка задержки:
T1 = pade(T,1); step(T,'b',T1,'r',100) grid, legend('Exact','First-Order Pade')
Ошибка приближения довольно велика. Чтобы получить лучшее приближение, попробуйте Аппроксимацию Паде второго порядка задержки:
T2 = pade(T,2); step(T,'b',T2,'r',100) grid, legend('Exact','Second-Order 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) и Tustin. Для моделей с внутренними задержками дискретизация 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)
Jagged переходная характеристика (обратите внимание на «эхо» начального шага):
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)