Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пакеты расширения MATLAB. Control System Toolbox и Robust Control Toolbox

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
Глава 4. Функции и команды Robust Control Toolbox 191
Здесь sscp и, соответственно, acp, bcp, ccp, dcp регулятор и матрицы, его описывающие, sscl и, соответственно, acl, bcl, ccl, dcl — то же для замкнутого объекта с передаточной матрицей
T
. Кроме обычных требований по управляемости и наблюдае-
u1y1
мости матрица D
должна быть равна нулю, а матрицы D12è D
11
21
должны иметь полный ранг по столбцам. Пример применения ко­манды см. в (П. 2.12.2).
4.2.3. hinf, dhinf. Эти команды находят уравнения регулятора,
для которого Í
норма (2.74) «расширенного» объекта, созданного
командами augss èëè augtf, меньше 1. Команда dhinf применяет­ся для дискретных систем. Описание команд см. раздел 2.2.7. Синтаксис команд
[sscp,sscl] = (d)hinf(TSS).
Существуют более сложные виды этих команд, но для наших целей достаточно приведенного варианта.
4.2.4. hinfopt. Эта команда находит уравнения регулятора, ми-
нимизирующие Í
норму (2.74) «расширенного» объекта (TSS),
созданного командами augss èëè augtf, путем поиска оптималь­ного значения γ (gamopt). Описание команды см. раздел 2.2.7. Синтаксис команд:
T
[gamopt,sscp,sscl] = hinfopt(TSS) [gamopt,sscp,sscl] = hinfopt(TSS,gamind) [gamopt,sscp,sscl] = hinfopt(TSS,gamind,aux).
Здесь sscp, sscl, как и ранее, регулятор и замкнутая система, gamind — вектор индексов каналов (строк матрицы T
u1y1
), êîòî-
рые умножаются на γ (по умолчанию умножаются все строки), aux — необязательный параметр, определяющий точность и диа­пазон изменения γ, который в большинстве случаев может быть опущен. Примеры применения команды ñì. (Ï. 2.12.5), (Ï. 2.13.1), (Ï. 2.14.1), (Ï. 2.16,1).
4.2.5. lqg. Команда рассчитывает для объекта, находящегося
под действием шумов (входного и измерений), оптимальный сред­неквадратичный регулятор, вычисляются как матрица обратных связей, так и уравнения фильтра Калмана, т.е. эта команда объе­диняет две команды из Control System Toolbox. Регулятор оптими­зирует функционал (2.29) с помощью соотношений (2.30), (2.31), (2.32), а уравнения объекта имеют вид (2.57), (2.58) при Í = 0,
192 Глава 4. Функции и команды Robust Control Toolbox
G = I. Уравнения фильтра имеют вид (2.59). Команда имеет син­таксис:
[af, bf, cf, df] = lqg(a, b, c, d, Z, U)
èëè
[ssf] = lqg(ss, Z, U),
ãäå M[wwT] = Qf,M[vvT] = Rf,M[wvT] = Nf, ss (èëè a, b, c, d)—ре­гулируемый объект, ssf (èëè af, bf, cf, df) — регулятор,
Z
=
QN
T
NR
, U
⎥ ⎦
QN
ff
=
T
NR
f
,
f
(4.1)
Эта команда предоставляет меньше возможностей для созда­ния сложной системы регулирования, чем команды, приведенные в гл. 3.
4.2.6. normh2, normhinf. Рассчитываются Í
(2.72) è Í∞(2.74)
2
нормы системы (1.1), (1.2). Синтаксис команд:
[h2n] = normh2(a, b, c, d) [hinfn] = normhinf(a, b, c, d) [h2n] = normh2(sós) [hinfn] = normhinf(sós).
4.2.7. schmr, balmr. Осуществляется понижение порядка мо-
дели. В основном, применяются команды с синтаксисом:
[am, bm, cm, dm] = balmr(a, b, c, d, Type, aug) [am, bm, cm, dm] = schmr(a, b, c, d, Type, aug) [ssm] = balmr(ss, Type, aug) [ssm] = schmr(ss, Type, aug)
Åñëè Type = 1, тогда aug равно порядку остающейся системы ê,
à åñëè Type = 2, тогда aug = tol — допустимой погрешности, т. е. находится такое ê, что максимальная погрешность меньше tol.Ко­манда balmr дает сбалансированную систему (см. далее команду obalreal или в гл. 3 команду balreal), тогда как schmr более ус­тойчива численно и, следовательно, более предпочтительна, когда балансирование не требуется. Пример применения см. (П. 2.16).
4.2.8. obalreal. Выполняется балансирование системы и ана-
логична команде balreal, описанной в гл. 3, имея некоторые чис­ленные преимущества. Синтаксис команды:
[abal,bbal,cbal] = obalreal(a,b,c).
Глава 4. Функции и команды Robust Control Toolbox 193
4.2.9. cgloci, dcgloci. Вычисляются собственные значения λ
передаточной матрицы системы
GCIABD() ( )jjωω=−+
1
. (4.2)
как функции частоты для непрерывной или дискретной систем. соответственно. Синтаксис команд
[cg,ph,w] = (d)cgloci(a,b,c,d(,Ts)) [cg,ph,w] = (d)cgloci(a,b,c,d(,Ts),'inv') [cg,ph,w] = (d)cgloci(a,b,c,d(,Ts),w) [cg,ph,w] = (d)cgloci(a,b,c,d(,Ts),w,'inv') [cg,ph,w] = (d)cgloci(ss,).
Здесь cg — амплитуда, ph — фаза при частоте ω, Ts— время
выборки для дискретной системы.. Если частота не указывается, то она выбирается автоматически. При наличии строки 'inv' вы­числяются соответствующие величины обратной системы G(jω)
-1
Если левая часть в команде отсутствует, то графики амплитуды и фазы строятся на экране. Для дискретных систем (буква «d» в на­чале команды) вместо G(jω) используется G(e
jωTs
).
4.2.10. sigma, dsigma. Вычисляются сингулярные величины
матрицы G(jω) (4.2) для непрерывных и дискретных систем соот­ветственно. Сингулярные величины определены в разделе 2.1.2. Синтаксис команд:
[sv,w] = (d)sigma(a,b,c,d(,Ts)) [sv,w] = (d)sigma(a,b,c,d(,Ts),'inv') [sv,w] = (d)sigma(a,b,c,d(,Ts),w) [sv,w] = (d)sigma(a,b,c,d(,Ts),w,'inv') [sv,w] = (d)sigma(ss,..).
i
.
Здесь sv — сингулярные величины, смысл остальных обозна­чений такой же, как и для предыдущей команды. Для команд без левой части графики изображаются на экране.
При решении задач робастной устойчивости часто бывает не­обходимым вычислять сингулярные величины систем, являющих­ся производными от исходной G(jω). Три таких системы изобра­жены на рис. 4.1.
Для вычисления их сингулярных величин можно воспользо­ваться соотношениями:
äëÿ ðèñ. 4.1, à:
[a,b,c,d] = parallel(a,b,c,d,[ ],[ ],[ ],eye(size(d))) sigma (a,b,c,d),
194 Глава 4. Функции и команды Robust Control Toolbox
Ðèñ. 4.1. К расчету сингулярных величин сложных систем:
à G параллельно входу; á G в цепи обратной связи;
â G в прямой цепи
äëÿ ðèñ. 4.1,á:
[a,b,c,d] = feedback([ ],[ ],[ ],eye(size(d)), a,b,c,d) sigma (a,b,c,d,'inv'),
äëÿ ðèñ. 4.1,â:
[a,b,c,d] = feedback(a,b,c,d ,[ ],[ ],[ ],eye(size(d))) sigma (a,b,c,d).
Примеры использования команд см. (П. 2.11)—(П. 2.15).
4.2.11. ssv. Вычисляются так называемые структурные сингу-
лярные величины матрицы G(jω) в функции частоты, позволяю­щие более точно определить запас устойчивости системы путем диагонального масштабирования (см. формулу (2.81), программу (П. 2.11), рис. 2.52). Чаще всего используется синтаксис команды:
[mu, logd] = ssv(a, b, c, d, w) [mu, logd] = ssv(ss, w).
Здесь mu — вектор, чьими компонентами является верхняя граница структурных сингулярных величин, оцениваемая при за­данном векторе ω, logd диаграмма Боде оптимальной диаго­нальной масштабирующей матрицы D(jω). Пример применения команды см. (П. 2.11).
4.2.12. bilin. Вычисляется результат замены переменных в
комплексной плоскости вида (1.24). Синтаксис команды:
[ab,bb,cb,db] = bilin(a,b,c,d,ver,Type,aug) [ssb] = bilin(ss,ver,Type,aug).
Здесь ver = 1 при преобразовании s1 при обратном пре­образовании, поля Type è aug среди прочего могут иметь такие значения:
Type = 'Tustin', тогда выполняется преобразование (1.25), aug = T периоду выборки;
,
s
Глава 4. Функции и команды Robust Control Toolbox 195
Type = 'BwdRec', тогда выполняется преобразование (1.26), aug = Ts, периоду выборки;
Type = 'S_ftjw', тогда выполняется преобразование (2.99), aug = [p2 p1];
Type = 'G_Bilin', тогда выполняется преобразование (1.24), aug = [αβγδ].
Пример применения команды см. (П. 2.16.1).
4.2.13. slowfast. Осуществляется разложение системы на мед-
ленную и быструю части: G(s) = [G(s)]
+ [G(s)]f. Синтаксис коман-
s
äû:
[a1, b1, c1, d1, a2, b2, c2, d2] = slowfast(a, b, c, d, k) [ss_s, ss_f] = slowfast(ss, k),
где индексы «s», «1» относятся к медленной части, а «, «2» ê áûñò­ðîé, k указывает индекс, где системы расщепляются. Рассмотрим простой пример. Пусть
W(s)=1/[(0.1s + 1)(s + 1)(0.01s + 1)].
Выполним команды
den = conv([0.01 1], [1 1]) den = conv(den, [0 0.1 1]) sys = tf(1, den) sys1 = ss(sys) k=1 [sss, ssf] = slowfast(sys1, k) ps = eig(sss) pf = eig(ssf). (Ï. 4.1)
Получим медленную систему sss a1=−1, b1=−0.296, c1=−3.79 с полюсом p
61.63 – 103.3], b
p
=−10, 100. Если же принять k = 2, то получим a1= [1 6.153; 0 10],
f
b
= [0.2039; 0.7315], c1= [3.79 0.9031] с полюсами ps=−1, 10 è
1
a
=−100, b2=−1.886, c2 =−0.0595 и полюс pf=−100.
2
=−1 и быструю систему ssf a2= [6.706 4.987;
s
= [0.4851; 1.94], c2= [2.064 0.06243] с полюсами
2
Рассматриваемое разбиение может оказаться полезным при синтезе упрощенного регулятора: если нужная частота среза замк­нутой системы не превосходит 1/3...1/2 от величин, обратных к
196 Глава 4. Функции и команды Robust Control Toolbox
постоянным времени «быстрой» части, то регулятор можно синте­зировать только для «медленной» части системы.
4.2.14. stabproj. Осуществляется разложение системы на ус-
тойчивую и неустойчивую части: G(s) = [G(s)]
+ [G(s)]ns. Синтак-
st
сис команды:
[a1, b1, c1, d1, a2, b2, c2, d2, k] = stabptoj(a, b, c, d) [ss_st, ss_ns, k] = stabproj(ss),
где индексы «st», «1» относятся к устойчивой части, а «ns», «2» к неустойчивой, k — число устойчивых полюсов. Такое разложение может быть использовано, например, следующим образом. Снача­ла разрабатывается стабилизирующий регулятор для неустойчи­вой части, а затем разрабатывается регулятор для всей системы, которая теперь уже полностью устойчива.
4.2.15. interc. Команда создает сложную систему многих пере-
менных. Синтаксис команды:
[acl, bcl, ccl, dcl] = interc(a, b, c, d, m, n, f) [sscl] = interc(ss, m, n, f).
Описание команды см. раздел 1.4, соотношение (1.53).
4.2.16. mksys, branch, tree. Эти команды относятся к числу
факультативных. В принципе, возможно выполнить робастный синтез без использования этих команд, применяя для работы с системами команды из Control System Toolbox, однако эти коман­ды часто предоставляют более удобные средства для работы со сложными системами, поэтому желательно, чтобы читатель имел о них представление.
Команда mksys создает единственную переменную MATLAB, содержащую все матрицы, описывающие систему, вместе с их раз­мерами и стандартными именами, зависящими от типа системы. Создаваемая структура данных используется, чтобы упростить для Пользователя работу с функциями Robust Control Toolbox, чьими входами или выходами являются системы в пространстве состоя­ний, передаточные матрицы и т. п. Синтаксис команды:
sys = mksys(a, b, c, d) sys = mksys(v1, v2, v3, vn, TY)
Команда упаковывает несколько матриц, описывающих систе­му типа TY, в переменную MATLAB sys под именами, определяе­мыми строкой TY:
Глава 4. Функции и команды Robust Control Toolbox 197
TY V1, V2, ..., Vn Описание
'ss' (a,b,c,d) Фазовые координаты (по умолчанию)
'des' (a,b,c,d,e,ty) Фазовые координаты с дескриптором
'tss'
'tf' (num,den,ty) Передаточная функция
'tfm' (num,den,m,n,ty) Матрица передаточных функций размером m*n
'imp' (y,ts,nu,ny, ty) Импульсная характеристика
(a,b1,b2,c1,c2,d11, d12,d21,d22,e,ty)
Система с двумя каналами входа-выхода (1.10—1.13)
Команда branch извлекает из созданной предыдущей коман­дой системы отдельные матрицы, например, [a, b, c, d] = branch(sys) извлекает все матрицы (пример см. в (П. 2.12.2), (П.
2.13.1), а команда [a, d] = branch(sys, 'a, d') — только две.
Команда tree упаковывает всю информацию и данные не­скольких матриц, векторов и строк в единую переменную «дере­во», представляющую собой иерархическую структуру. Синтак­сис команды
Ò = tree(nm, b1, b2,,,bn).
Здесь b1, b2,,,bn представляют собой «ветви» дерева (матрицы, векторы и др. объекты, в том числе другие «деревья»), а nm — это строка, содержащая через запятые имена этих ветвей. Рассмотрим простой пример.
Пусть первая система описывается матрицами a,b,c,d, а вторая передаточной функцией num/den. Желательно их рассматривать как единый объект. Для каждой из систем создадим свое «дерево», ко­торые затем объединим в большое «дерево». Напишем программу:
num = 1; den = conv([0.1 1], [1 1]); a=[1 2 3;4 5 6;78 9]; b = [1; 1; 0]; c=[1 0 1];d=0; tree1 = tree('a, b, c', a, b, c); tree2 = tree('num1, den1', num, den); bigtree = tree('tree1, tree2', tree1, tree2); (Ï. 4.2)
Пусть теперь мы хотим извлечь числитель второй системы. Выполним команду
w = branch(bigtree, 'tree2/num1'). (Ï. 4.2.1)
Получим w =1.
Глава 5. Связь
Control System Toolbox è Robust
Control Toolbox с пакетом Simulink
5.1. Control System Toolbox è Simulink
Язык программирования MATLAB относится к текстовым языкам: команды программы записываются в виде последователь­ности строк буквенных символов и выполняются в том порядке, в котором они написаны (кроме особых случаев условных и безус­ловных переходов и циклов). Это придает языку универсальный характер, но не всегда удобно в инженерной практике, где исход­ная задача обычно формулируется в графическом виде чертежей, электрических схем, структурных схем и т. п. Для записи про­граммы работы устройства требуется выразить в математической форме, доступной «пониманию» выбранного языка программиро­вания, алгоритм работы каждого блока этого устройства и их взаимодействие. Это условие предъявляет повышенные требова­ния к квалификации персонала, занятого разработкой и исследо­ваниями новых устройств. Использование текстовых языков про­граммирования часто затрудняет разбиение задачи на более мел­кие для привлечения большего количества людей к решению глобальной задачи.
Поэтому наряду с текстовыми языками разрабатываются и графические языки, в которых выполняемые операции, часто весьма сложные, изображаются определенными блоками, а связи между блоками определяют взаимодействие между отдельными операциями. Обычно эти языки ориентированы на определенную область техники, и блоки соответствуют элементам, узлам, устрой­ствам, типичным для данной технической области. При этом свя­зи между программными блоками соответствуют связям между упомянутыми техническими компонентами. Часто разработчик технического устройства, применяя программный блок для моде­лирования технического блока своей сложной системы, может и
Глава 5. Связь Control System и Robust Control Toolboxes с Simulink 199
не знать программу работы этого блока, ему достаточно знать, что программа работы блока адекватно отражает работу реального блока.
В систему MATLAB включен графический язык программиро­вания Simulink, предназначенный для моделирования динамиче­ских систем. Предполагается, что исследуемая система разработана в виде функциональной схемы (структурной схемы, блок-схемы), состоящей из блоков, равнозначных по своим функциям про­граммным блокам, включенным в библиотеку Simulink. Эта биб­лиотека достаточно разнообразна и постоянно расширяется. При разработке модели системы разработчик переносит требуемые бло­ки из библиотеки Simulink в свою блок-схему программы и соеди­няет их в соответствии с функциональной схемой системы.
Simulink является весьма удобным средством для разработки различных динамических систем, в частности, систем автоматиче­ского регулирования, но он более подходит для анализа процессов в системе, а не для синтеза регуляторов; мощный аппарат для ре­шения задач синтеза и оптимизации систем регулирования имеет­ся в пакетах расширения Control System Toolbox и Robust Control Toolbox. Поэтому целесообразно во многих случаях объединить эти пакеты расширения MATLAB, что может быть достигнуто раз­ными способами.
Числовые значения параметров блоков в Simulink могут быть заданы двояким образом: или непосредственно в окнах настройки каждого блока, или же в окнах настройки указываются только бу­квенные обозначения параметров, а численные значения при мо­делировании берутся из рабочей области. Естественно, буквенные обозначения нужно выбирать так, чтобы они не повторялись. Чис­ленные значения могут попасть в рабочую область из командного окна, но более обычный путь — при выполнении программы, на­писанной на языке MATLAB, т.е. при выполнении m.-файла. При использовании рассматриваемых нами пакетов расширения эти m.-файлы решают задачи синтеза регуляторов, затем результаты синтеза переносятся в модель Simulink, после чего эта модель мо­жет использоваться самостоятельно или в составе более сложных моделей.
Последовательность действий такова: вначале составляется структурная схема системы с использованием блоков Simulink; эта схема должна быть составлена с учетом особенностей расчетов этих блоков в Control System Toolbox и Robust Control Toolbox (см. примеры далее). Блоки, расчет параметров которых будет выпол­няться с помощью команд указанных пакетов, должны быть со-
200 Глава 5. Связь Control System и Robust Control Toolboxes с Simulink
вместимы с методами описания систем, принятых в этих пакетах. Обычно это непрерывные или дискретные блоки State-Space, Transfer Fcn, Zero-Pole, причем чаще всего используется первый тип блоков. Затем по уравнениям объекта и дополнительным ус­ловиям программой, написанной с использованием команд этих пакетов (далее управляющая программа — УП) , вычисляются па­раметры синтезированного регулятора, которые запоминаются в рабочей области. Если после синтеза регуляторов выполнить в УП команду sim('имя программы Simulink'), то параметры регулято­ров, идентифицируемые по их именам, переносятся в соответст­вующие блоки, и в дальнейшем могут быть использованы уже без УП. Для этого в УП включается команда запоминания рабочей области save ‹name›, ãäå name — имя, под которым запоминается рабочая область в файле с расширением mat. Далее можно посту­пить следующим образом. В окне Simulink с данной программой вызвать опции ìåíþ File/Model Properties/Callbacks/Model initialization function и в окне последней записать: load name.mat, где name — назначенное выше имя рабочей области, которое мо­жет совпадать с именем файла (программы) Simulink, так как они имеют разные расширения.
Результаты моделирования можно наблюдать с помощью ос­циллографа (блок Scope). Возможно также в окне последнего в окне меню Parameters/Data history активизировать Save data to workspace и задать имя Variable name, выбрав формат Array. Тогда после окончания переходного процесса эти данные могут быть ис­пользованы для построений различных графиков с использовани­ем графических команд MATLAB.
Рассмотрим несколько примеров. Вернемся к задаче регули­рования скорости с помощью интегратора в двухмассовой систе­ме с эластичной связью со всеми измеряемыми состояниями, рассмотренной в разделе 2.2.3, программа (П. 2.6). Сначала со­ставим схему модели в Simulink (рис. 5.1) и назовем этот файл «two-mass». Для моделирования объекта используется блок State­Space, его уравнения (1.3), (1.4), (1.5). Селектор Sel1 выбирает для индикации величины скорости двигателя и механизма, а се­лектор Sel2 — скорость двигателя в качестве сигнала внешней обратной связи. Регулятор Reg представляет собой матрицу Ê с 4-мя входами и одним выходом. Для ее синтеза используем спо­соб размещения полюсов. Уравнения объекта для расчета Ê по­хожи на уравнения (2.38) с тем отличием, что изменена нумера­ция переменных: как видно из рис. 5.1, выход интегратора явля-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]