MATLAB+Simulink 8.0 (R2012b): проектирование и анализ систем контроля
Введение
Пакет расширения Control System Toolbox представляет собой основной пакет расширения. Этот один из старейших пакетов расширения широко применяется при анализе и проектировании систем и устройств управления в аэрокосмической области, ракетостроении, проектировании подвижных объектов гражданской и военной сфер применения, а также ориентирован на создание и построение систем контроля общего назначения, что является отличительным и ценным качеством пакета.
Новейшая реализация пакета имеет то же наименование серии, что и система MATLAB, — R2012a. На рис. 1 представлено окно справки по этому пакету с перечнем его основных разделов.
Как видно из рис. 1, данный пакет расширения состоит из следующих разделов:
- Linear System Representation — модели представления линейных систем;
- Basic Models — модели основных систем;
- Model Interconnection — модель соединения и диаграммы;
- Model Transformation — преобразования моделей;
- Linear analysis — линейный анализ систем;
- Control Design — проектирование контроля;
- Matrix Computations — матричные операции.
Системы и основные функции систем, входящие в пакет расширения Control System Toolbox, представлены на рис. 2. Система в Control System Toolbox характеризуется графической диаграммой. Ее типичный (но далеко не единственный) вид представлен на рис. 3.
Основные характеристики линейных систем
Пакет Control System Toolbox работает с линейными системами. Наиболее часто используются системы single-input, single-output (SISO) — с одним входом и одним выходом следующего типа:
- Basic Models — основные модели;
- Tunable Models — перестраиваемые модели;
- Models with Time Delays — модели с временной задержкой;
- Model Attributes — модель атрибутов;
- Model Arrays — модель массивов.
Системы SISO задаются своей передаточной характеристикой, указанной в операторной форме G(s) в виде отношения числителя (numerator) к знаменателю (denominator), например:
G(s) = s/(s2+3s+2).
Такая математическая модель системы на языке MATLAB создается следующими командами с применением функции задания передаточной характеристики tf:
>> num = [1 0]; >> den = [1 3 2]; >> G = tf(num,den);
Как видно, числитель и знаменатель задаются векторами коэффициентов операторной передаточной характеристики. Отметим еще три важные характеристики линейных систем sys:
- Переходная step(sys)— реакция системы на единичный скачок.
- Импульсная impulse(sys)— реакция системы на импульс единичной площади и стремящейся к 0 длительностью.
- Диаграмма Боде bode(sys)— логарифмическая амплитудно-частотная и фазочас-тотная характеристики коэффициента передачи системы — отношения операторного выражения для выходного сигнала системы к операторному выражению для входного сигнала.
Эти характеристики (как и диаграмму Найквиста в комплексной плоскости) строит следующая программа, заданная в редакторе программного кода MATLAB (рис. 4):
sys = tf([8 18 32],[1 6 14 24]); subplot(221); step(sys); subplot(222), impulse(sys) subplot(223); bode(sys), grid; subplot(224);nyquist(sys), grid;
Если задана некоторая временная зависимость сигнала, то нетрудно найти реакцию на u‑сигнал системы (рис. 5):
t = 0:0.01:5; figure u = exp(-t).*sin(t); lsimplot(sys,u,t)
Одними из широко распространенных устройств, описываемых линейными системами контроля второго порядка, являются RLC-цепи с одной индуктивностью и емкостью. Для оценки поведения таких цепей создано окно анализа с графическим интерфейсом пользователя GUI, имитирующим лабораторную работу по RLC-цепям. Для его вызова достаточно исполнить в окне командного режима MATLAB команду:
>> rlc_gui
Как видно из рис. 6, с помощью движковых регуляторов окно GUI позволяет задавать топологию цепи и значения параметров R, L и С. В окне отображается формула для передаточной характеристики выбранной схемы и ее основные характеристики.
Системы с обратной связью
Под обратной связью понимается передача части выходного сигнала системы обратно на вход системы. Для этого система должна иметь явный или неявный сумматор на входе. Если сигналы — действительные величины, то обратная связь будет положительной (если сигнал обратной связи находится в фазе с входным сигналом) или отрицательной (если сигналы имеют противоположную фазу). В общем случае обратная является комплексной и зависит от характера подачи сигнала обратной связи на вход системы и способа его получения из выходного сигнала.
Обратная связь может существенно изменить параметры, характеристики и поведение системы. Поэтому для простейшей системы с обратной связью было введено окно с графическим интерфейсом пользователя GUI (рис. 7), позволяющее в интерактивном режиме исследовать простые системы с обратной связью и находить их запасы (margins) по усилению и фазе. Оно вызывается командой:
>> margin_gui
Пакет System Control Toolbox поддерживает анализ и проектирование большого числа SISO-систем различной конфигурации, например показанных на рис. 8. Наряду с однопетлевыми и двухпетлевыми системами с обратной связью обеспечена поддержка и многопетлевых систем контроля.
Конструирование SISO-систем облегчается наличием GUI-конструктора и анализатора SISO-систем, которые вводятся командой (рис. 9):
>> sisotool(tf(1,[1,1]))
В состав систем с обратной связью часто входят блоки различных корректоров, регуляторов, стабилизирующих устройств и т. д. Например, широкое распространение получили пропорционально-интегрирующие регуляторы PID, содержащие два блока — пропорционального регулирования и интегрирования. Включение таких блоков в состав системы с отрицательной обратной связью позволяет уменьшить время нарастания переходной характеристики системы, устранить выбросы выходного сигнала и повысить точность контроля (рис. 10).
Для задания такой системы и получения ее характеристик Боде (рис. 11) в окне командного режима работы достаточно выполнить команды:
>> notch = tf([1,0.5,9],[1,5,9]); integ = pid(0,0.34); >> C = integ*notch; figure; bode(C);
Преобразование моделей
Небольшое число MATLAB-функций служит для преобразования моделей систем. Прежде всего, это функция преобразования непрерывной модели в дискретную c2d (рис. 12):
H = tf([1 -1], [1 3 4], ‘inputdelay’, 0.35); Hd = c2d(H, 0.2, ‘foh’); step(H,‘-’,Hd,‘--’);
Сигнал на выходе дискретной модели является квантованным с равномерным квантованием во времени. И на рис. 12 это отчетливо видно. Рис. 13 дает пример реализации дискретизации модели Notch-фильтра, запускаемой командой:
>> notchdemo
В раздел функций преобразования включена также функция построения графика сингулярных Hankel-значений (рис. 14) динамической модели:
sys = rss(20); h = hsvplot(sys,‘AbsTol’,1e-6); setoptions(h,‘Yscale’,‘log’,‘Offset’,0.3)
Преобразование модели из дискретной формы в непрерывную полезно при проведении различных других преобразований. Так, при изменении частоты дискретизации или ее скорости обычно преобразуют дискретную модель в непрерывную и из нее берут новые дискретные отсчеты (в том числе промежуточные между отсчетами дискретной модели). Пример запускается командой:
>> resampledemo
Он демонстрирует такую возможность (время квантования меняется от 0,1 до 0,025 с). При его исполнении получаем выход:
Gd = 0.07462 z - 0.09162 z^(-10) * -------------- z^2 - 1.571 z + 0.7408 Sample time: 0.1 seconds Discrete-time transfer function. Gr = 0.02343 z - 0.02463 z^(-40) * --------------- z^2 - 1.916 z + 0.9277 Sample time: 0.025 seconds Discrete-time transfer function. ----------------------------
Иногда мощным средством преобразования систем контроля является изменение их порядка. Следующая программа иллюстрирует выполнение этой операции:
h = tf([1 11 36 26],[1 14.6 74.96 153.7 99.65]); [hb,g] = balreal(h); g' hmdc = modred(hb,2:4,'MatchDC'); hdel = modred(hb,2:4,'Truncate'); bodeplot(h,'-',hmdc,'x',hdel,'*') Ее исполнение дает: ans = 0.1394 0.0095 0.0006 0.0000
Далее программа строит диаграммы Боде для исходной и измененной систем, показанные на рис. 15.
Для построения переходных характеристик (рис. 16) в конец программы надо добавить строку:
stepplot(h,‘-’,hmdc,‘-.’,hdel,‘--’);
Анализ устойчивости и стабильности систем с обратной связью
Выводы о характере работы систем с обратной связью обычно получают из анализа расположения нулей и полюсов линейной или линеаризованной нелинейной системы на комплексной плоскости. Для этого служат функции zero и pole. Есть также функция damping для оценки логарифмического коэффициента затухания динамических систем и функции сортировки полюсов. Особо важны функции margin и allmargin для оценки запасов устойчивости систем со 100%-ной обратной связью, такие как представлены на рис. 17.
Функция margin используется в виде:
[Gm,Pm,Wg,Wp] = margin(sys) [Gm,Pm,Wg,Wp] = margin(mag,phase,w)
Она выдает выходные параметры:
- Gm — запас по усилению;
- Pm — запас по фазе;
- Wg — частота, на которой оценивается запас по усилению;
- Wp — частота, на которой оценивается запас по фазе.
Пример вычисления параметров устойчивости систем с обратной связью:
>> hd = tf([0.04798 0.0464],[1 -1.81 0.9048],0.1); >> [Gm,Pm,Wg,Wp] = margin(hd)
Будут получены параметры: Gm = 2,0517, Pm = 13,5711, Wg = 5,4374 и Wp = 4,3544.
Для конкретной системы диаграммы Боде (рис. 18) строятся командой:
>> margin(hd)
На рис. 18 показан графический смысл запасов по усилению и по фазе. Запас по усилению — это разница между усилением в 0 дБ и усилением на частоте, для которой фазовый сдвиг равен 180%. Запас по фазе — это разница между фазовым сдвигом –180% и фазовым сдвигом на частоте, при которой усиление равно 0 дБ (или 1 в абсолютных значениях). Чем эти запасы выше, тем меньше вероятность самовозбуждения системы при изменении ее параметров, ведущем к переходу обратной связи от отрицательной к положительной.
Оценка чувствительности систем с обратной связью
Чувствительность по отношению к изменению того или иного параметра оценивается крутизной графических характеристик этого параметра. Так, чувствительность к изменению переходной характеристики системы (рис. 19) позволяет оценивать следующий пример:
wn = realp('wn',3); zeta = realp('zeta',0.8); F = tf(wn^2,[1 2*zeta*wn wn^2]); Fsample = replaceBlock(F,'wn',[3;5],'zeta',[0.6 0.8 1.0]); step(Fsample)
В другом примере рассматривается Noth-фильтр с PI-контроллером и его поведение во временной области:
s = tf('s'); P = exp(-2.6*s)*(s+3)/(s^2+0.3*s+1); C = 0.06 * (1 + 1/s); T = feedback(ss(P*C),1); notch = tf([1 0.2 1],[1 .8 1]); C = 0.05 * (1 + 1/s); Tnotch = feedback(ss(P*C*notch),1); tau = linspace(2,3,5); Tsens = repsys(Tnotch,[1 1 5]); for j=1:5; Tsens(:,:,j).InternalDelay = tau(j); step(Tsens); grid title('Closed-loop response for 5 delay values between 2.0 and 3.0')
Нетрудно заметить, что характеристики (рис. 20) содержат определенные горизонтальные участки, на которых изменение времени с изменением амплитуды весьма значительно. С помощью дополнительного фрагмента программы:
Tnotch0 = Tnotch; Totch0.InternalDelay = 0; bode(Tnotch,’b’,Tnotch0,’r’,{1e-2,3}) grid, legend(‘Delay = 2.6’,’No delay’,’Location’,’SouthWest’)
нетрудно убедиться в том, что характеристики Боде данной системы (рис. 21) также имеют небольшие почти горизонтальные участки.
Пакет расширения Simulink Control Design
Общей тенденцией развития системы MATLAB является реализация большинства MATLAB-функций в виде функций и блоков пакета расширения для блочного имитационного моделирования Simulink. Это позволяет задавать и решать задачи пользователя в удобной графической оболочке и применять более понятные, чем программы, графические диаграммы систем и их функций. Для анализа и проектирования систем контроля типичными для Simulink средствами служит пакет расширения Simulink Control Toolbox.
Библиотечка Simulink Control Toolbox содержит небольшое число блоков, представленных на рис. 22. Наряду с этими блоками в диаграммах моделей систем управления можно использовать многочисленные блоки как самого пакета расширения Simulink, так и других пакетов расширения. Методика и приемы построения диаграмм вполне обычные и описаны в книгах по Simulink. Следует подчеркнуть, что многие диаграммы запускаются командой MATLAB open с указанием имени демонстрационного примера.
На рис. 23 показана простая диаграмма Simulink-модели контроля блока watertank (резервуар с водой), субмодель которого также представлена на рисунке. Это типичная нелинейная система с обратной связью и интегратором. Основная диаграмма имеет PID-регулятор, петлю обратной связи и виртуальные средства Simulink-измерений и визуализации параметров системы.
Функции пакета расширения Simulink Control Toolbox
Ряд функций пакета расширения Simulink Control Toolbox нужен для генерации сложных сигналов, предназначенных для использования в качестве входных сигналов различных систем контроля. Это последовательности синусоидальных сигналов, сигналы с частотной модуляцией, генерация перепадов и др. Имя этих точек начинается со слова frest, а затем через точку указывается основное имя функции.
Примером может служить функция frest.Sinestream для генерации в программе watertank последовательности из нескольких периметров синусоидального сигнала с различной амплитудой (рис. 24), периодом и декрементом роста и затухания:
input = frest.Sinestream(sys) input = frest.Sinestream(‘OptionName’,OptionValue)
Пример применения этой функции представлен ниже (рис. 24):
input = frest.Sinestream('Frequency',[1 2.5 5], 'Amplitude',[1 2 1.5],... 'NumPeriods',[4 6 12], 'RampPeriods',[0 2 6], 'SettlingPeriods',[1 3 7]); plot(input)
Другая часть функций предназначена для анализа реакции систем контроля на входное воздействие: вычисления диаграмм Боде и переходных характеристик, диаграмм нулей и полюсов — словом, уже описанных функций. Но предназначены они для реализации не в MATLAB, а в Simulink. Могут анализироваться как линейные, так и (после линеаризации) нелинейные системы.
Приведем пример на построение диаграммы Боде системы watertank (рис. 25):
input = frest.Sinestream('Frequency',logspace(-3,2,30)); watertank io(1)=linio('watertank/PID Controller',1,'in'); io(2)=linio('watertank/Water-Tank System',1,'out','on'); watertank_spec = operspec('watertank'); op = findop('watertank',watertank_spec); sysest = frestimate('watertank',op,io,input); bode(sysest)
Другой пример (построения переходной характеристики, рис. 26) представлен следующей программой:
input = frest.createStep(‘FinalTime’,100); watertank; watertank_spec = operspec(‘watertank’); op = findop(‘watertank’,watertank_spec) io(1)=linio(‘watertank/PID Controller’,1,‘in’); io(2)=linio(‘watertank/Water-Tank System’,1,‘out’); [sysest,simout] = frestimate(‘watertank’,op,io,input) sys = linearize(‘watertank’,op,io); frest.simCompare(simout,sys,input);
В этих примерах нелинейная система линеаризируется с помощью функций linio и kinearize, и используется аппарат анализа линейных систем пакета расширений Control System Toolbox.
Проектирование и настройка компенсаторов
Для улучшения характеристик систем контроля используются, помимо PID-регуляторов, различные типы компенсаторов. Пример системы с PID-регулятором и компенсатором приведен на рис. 27.
Simulink-программа для этой диаграммы предусматривает основные средства для интерактивной настройки систем с компенсатором — SISO Deaign Tool for SISO Design Task и конструктор линейных цепей типа LTI. Настройка осуществляется путем перемещения мышью маркера на диаграмме Боде компенсатора с контролем изменений других параметров системы, например ее переходной характеристики (рис. 27). Интерактивность достигается благодаря применению GUI-интерфейса (рис. 28).
Линеаризация и контроль скорости пневмодвигателя
Наиболее простыми системами контроля являются системы электрического привода. Но MATLAB с пакетами расширения по системам контроля обеспечивает построение и анализ гораздо более «экзотических» систем — например, управления пневмодвигателем (рис. 29).
Как видно из рис. 29, зависимость скорости двигателя от времени получается практически монотонная, что важно для некоторых практических применений. Она индицируется виртуальным осциллографом и представлена осциллограммой — это типичные средства Simulink.
Моделирование сливного бачка
Модель сливного бачка, обычно применяемого в туалетах, в особых комментариях, видимо, не нуждается — пожалуй, каждому пришлось наблюдать, а то и ремонтировать это устройство. Хотя комментарий в туалете одной из научных фирм «Сделав дело, дерни это!» слишком прост для описания моделирования слива воды даже в сливном бачке. А потому приведем диаграмму модели, которая показана на рис. 30.
Это типичная релаксационная система. Она имеет два вида обратной связи — назад и вперед. При запуске диаграмма выводит окно с графическим интерфейсом пользователя и интерактивным управлением, дающее повышенную степень визуализации «процессов» (слива воды в бачке и его последующего заполнения до заданного уровня).
Моделирование конвейерного механизма
Средства пакетов расширения Control System Toolbox, особенно Simulik Control Design, совместно с другими пакетами расширения удобны для моделирования конвейерных механизмов, представляющих собой длинную цепочку устройств, расположенных друг за другом (рис. 31).
Моделирование MIMO-системы химического реактора
Иногда возникает необходимость в моделировании систем, управляемых многими параметрами. В этом случае используются MIMO-системы со многими входами и многими выходами. Пример моделирования химического реактора запускается командой:
open_system(‘scdcstrctrlpidblock’);
На рис. 32 изображена диаграмма модели химического реактора с загруженными параметрами. Она использует макромодель реактора CSTR, которая тоже присутствует на рисунке справа. Показаны также полученные виртуальным осциллографом результаты моделирования.
Моделирование маятника Фуко с демонстрацией виртуальной модели
Диаграмма, показанная на рис. 33, описывает поведение маятника Фуко с учетом физических законов и их параметров в заданном месте. Маятник Фуко — это груз, подвешенный на достаточно длинной нити к потолку высокой комнаты. В справке по этому примеру можно найти его теоретическое описание и аналитические выражения, лежащие в основе модели маятника.
Программа этого примера предусматривает применение средства виртуальной реальности для отображения построения работающего маятника Фуко (рис. 34). Обратите внимание на естественность виртуального изображения маятника!
Приведенные примеры носят обзорный характер и демонстрируют широту применения пакетов расширения по конструированию и анализу систем управления. Разумеется, каждый такой пример может потребовать более детального разбора — в меру интересов читателя.
Заключение
Проектирование и анализ систем контроля в системе MATLAB+Simulink 8.0 (R2012b) реализованы в ряде пакетов расширения. Из них наиболее специализированными являются пакеты Control System Toolbox для MATLAB и Simulink Control Design для Simulink. Оба пакета имеют небольшой набор функций и блоков, специально предназначенных для проектирования и анализа систем контроля в матричной среде MATLAB и построения графических диаграмм в пакете блочного имитационного моделирования Simulink последних реализаций. Пакеты обеспечивают объектно-ориентированное и визуально-ориентированное программирование при решении задач проектирования и анализа SISO и MIMO линейных систем с различными видами обратных связей, возможности линеаризации нелинейных систем и проектирования систем контроля самых разнообразных устройств, систем и механизмов.
- mathworks.com
- Дьяконов В. П. MATLAB R2006/2007/2008 + Simulink 5/6.7. Основы применения. 2‑е издание, дополненное и переработанное. М.: СОЛОН-Пресс. 2008.
- Дьяконов В. П. MATLAB. Полный самоучитель. М.: ДМК-Пресс, 2012.
- Дьяконов В. П. MATLAB и Simulink для радиоинженеров. Издание 2‑е. М.: ДМК-Пресс, 2012.
- Дьяконов В. П. Особенности новой реализации MATLAB и Simulink 2012a // Компоненты и технологии. 2012. № 7.