Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Пакеты расширения MATLAB. Control System Toolbox и Robust Control Toolbox
.pdf
Глава 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 при преобразовании s→zè−1 при обратном преобразовании, поля 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» относятся к медленной части, а «f», «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». Для моделирования объекта используется блок StateSpace, его уравнения (1.3), (1.4), (1.5). Селектор Sel1 выбирает
для индикации величины скорости двигателя и механизма, а селектор Sel2 — скорость двигателя в качестве сигнала внешней
обратной связи. Регулятор Reg представляет собой матрицу Ê с
4-мя входами и одним выходом. Для ее синтеза используем способ размещения полюсов. Уравнения объекта для расчета Ê похожи на уравнения (2.38) с тем отличием, что изменена нумерация переменных: как видно из рис. 5.1, выход интегратора явля-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
