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

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

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
Глава 3. Функции и команды Control System Toolbox 161
a: 1; b: 2; c: 3; d: 0; e: [] ; StateName: {''}; Ts: 0; ioDelay: 0; InputDelay: 0.1; OutputDelay: 0; InputName: {'torque'}; OutputName: {''}; InputGroup: [1x1 struct] OutputGroup: [1x1 struct]; Notes: {}; UserData: -2
Интересно, что коэффициент усиления находится для систе­мы с первоначальным коэффициентом d = 4, хотя в этом примере в Руководстве Пользователя приведено значение: UserData: 6, т. е. в предположении, что d = 0. Это значение получается при по­вторном выполнении команды get.
3.2.15. totaldelay. Возвращает результирующее запаздывание
системы. Синтаксис:
td = totaldelay(sys)
Величина запаздывания выражается в секундах для непрерыв­ной системы и целым числом периодов выборки для дискретной.
3.3. Характеристики систем
3.3.1. hasdelay. Если система имеет запаздывание на входе
или на выходе, команда
hasdelay(sys)
возвращает 1, или 0 при отсутствии запаздывания.
3.3.2. isct, isdt. Если система непрерывна, то команда
boo = isct(sys)
возвращает 1, а команда
boo = isdt(sys)
возвращает 0. Для дискретных систем имеет место обратная ситуа­ция.
3.3.3. isempty. Если система пуста (не имеет ни входов, ни
выходов), команда
boo = isempty(sys)
возвращает 1,и0впротивном случае.
162 Глава 3. Функции и команды Control System Toolbox
3.3.4. isproper. Команда
boo = isproper(sys)
возвращает 1, если система правильна, т. е. при ω→∞ее АЧХ ос­тается ограниченной. Модель в пространстве состояний всегда правильна. Передаточная функция правильна, если степень чис­лителя не превышает степени знаменателя. MIMO передаточная матрица правильна, если все входящие в нее передаточные функ­ции правильны.
3.3.5. issiso. Команда
boo = issiso(sys)
возвращает 1 для SISO системы и 0 для MIMO.
3.4. Преобразование систем
3.4.1. c2d. Преобразует непрерывную систему в дискретную.
Синтаксис:
sysd = c2d(sys, Ts) sysd = c2d(sys, Ts, method).
Êàê è âûøå, Ts— время выборки, «method» строка, указы­вающая метод преобразования. Первая команда использует фик­сатор нулевого порядка на входе. Вторая команда дает возмож­ность использовать альтернативные методы:
'zoh' — фиксатор нулевого порядка;
'foh' — треугольная аппроксимация;
'tustin' — билинейная аппроксимация (1.25);
'matched' — метод соответствия полюсов-нулей, основан на
sTs
соотношении z = e
.
Примеры применения см. (П. 1.1.7), (П. 2.1.4).
3.4.2. d2c. Преобразует дискретную систему в непрерывную.
Синтаксис:
sysc = d2c(sysd) sysc = d2c(sysd, method).
Первая команда предполагает наличие фиксатора нулевого порядка, а вторая — одного из следующих методов: 'zoh', 'tustin', 'matched' (см. c2d). Пример применения (П. 1.1.8).
Глава 3. Функции и команды Control System Toolbox 163
3.4.3. d2d. Команда изменяет время выборки в дискретной
системе. Синтаксис:
sysd1 = d2d(sysd, Ts).
Здесь Ts— новое время выборки. Предполагается наличие фиксатора нулевого порядка. Команда эквивалентна последова­тельному выполнению двух команд:
sys1d = c2d(d2c(sysd), Ts).
3.4.4. delay2z. Команда заменяет запаздывание в дискретных
TF, SS èëè ZPK системах полюсами при z = 0 или заменяет запаз- дывание в FRD системах на фазовый сдвиг. Синтаксис:
sys = delay2z(sys).
Запаздывание в k периодов повторения вычислений заменяет­ся на (1/z)
k
в передаточной функции соответствующей модели. Для FRD систем эта команда изменяет частотную характеристику таким образом, что новая характеристика учитывает фазовый сдвиг, вносимый запаздыванием на разных частотах.
3.4.5. pade. Команда вычисляет Паде аппроксимацию систе-
мы с запаздыванием. Синтаксис:
[num, den] = pade(Ts, N) pade(Ts, N) sysx = pade(sys, N) sysx = pade(sys, NI, NO, Nio).
Пояснения см. в разделе 1.2. Первый вариант команды вычис­ляет числитель и знаменатель Паде аппроксимации порядка N с временем выборки T
. Команда pade(Ts,N) строит переходный
s
процесс при ступенчатом изменении задания на входе системы с передаточной функцией в виде Паде аппроксимации порядка N,а также фазовую характеристику, и сравнивает их с реакцией на толчок и фазовой характеристикой звена чистого запаздывания. Команда sysx = pade(sys, N) выполняет в непрерывной системе с запаздыванием Паде аппроксимацию этого запаздывания порядка N. Последний вариант команды дает возможность задать разные порядки аппроксимации для входного, выходного и так называе­мого «io запаздывания» (см. программу (П. 1.2.5), формулу (1.33)).
3.4.6. chgunits. Изменяет единицы частоты в FRD системе.
Синтаксис:
sys = chgunits(sys, units).
Строка 'units' ='rad/s' èëè 'Hz'.
164 Глава 3. Функции и команды Control System Toolbox
3.4.7. residue. Команда выполняет разложение отношения
двух полиномов на простые дроби и является функцией, включен­ной в основной набор команд системы MATLAB [Л. 3].
3.5. Понижение порядка модели
3.5.1. balreal. Команда формирует сбалансированную по вхо-
дам и выходам модель в пространстве состояний с равными и диа­гональными граммианами управляемости и наблюдаемости (опре­деление граммиана см. в следующем разделе, команда gram). Ко­манда работает как с непрерывными, так и дискретными системами. Если исходная система не типа SS, она автоматически превращается в такую форму перед ее использованием. Синтаксис:
sysb = balreal(sys) [sysb, g] = balreal(sys).
Вторая команда возвращает граммиан (в диагональной фор­ме). Если какие-то элементы диагонали намного меньше осталь­ных, это значит, что соответствующие состояния могут быть уда­лены без заметного влияния на характеристики вход-выход систе­мы. Для этой цели используется команда modred (см. далее).
Рассмотрим пример из [Л.1]. Имеем систему
ss
++
()( .)
F
=
()(.)( .)
10 20 01
ss s
++ +
599 201
.
Создадим систему sys и выполним команды:
sys = zpk([-10 -20.01],[-5 -9.9 -20.1],1) sys1=ss(sys) [sysb, g] = balreal(sys) (Ï. 3.1)
В командном окне можно видеть разницу между реализация­ми в фазовом пространстве sys1 è sysb. При этом граммиан имеет вид g = diag(0.1106;0.0001;0.0000). Это значит, что состояния 2 и 3 могут быть удалены. Выполним команды:
sysr = modred(sysb, [2 3], 'del') sys2=zpk(sysr) (Ï. 3.1.1)
В результате получим
Fs=
10001
.
+
497..
Глава 3. Функции и команды Control System Toolbox 165
3.5.2. modred. Команда предназначена для уменьшения по-
рядка модели. Синтаксис:
rsys = modred(sys, elim) rsys = modred(sys, elim, 'method').
Исключаются состояния, указанные в векторе elim. Полный вектор фазовых координат õ разделяется на x =[x ляется, усеченное состояние устанавливается равным x
], ãäå x2óäà-
1;x2
= x1+ t*x2,
r
ãäå t выбирается так, чтобы сохранить коэффициент усиления. Пример применения см. команду balreal. Указанная во второй ко­манде строка 'method' может быть 'MatchDC', когда коэффициент усиления сохраняется (по умолчанию), либо 'Truncate', когда x просто удаляется и принимается xr= x1. Второй метод обычно дает лучшую аппроксимацию в частотной области, но коэффициент усиления может измениться.
3.5.3. minreal. Команда выполняет минимальную реализацию
системы путем исключения ненаблюдаемых или неуправляемых состояний системы или путем взаимного сокращения нулей и по­люсов в передаточной матрице. Синтаксис:
sysr = minreal(sys) sysr = minreal(sys, tol).
Система sysr имеет минимальный порядок и сохраняет преж­ние АЧХ. Во второй команде параметр tol определяет погреш­ность, используемую для сокращения полюсов-нулей. По умолча­нию tol = sqrt(eps)(eps — машинная точность), увеличение tol вве- дет к дополнительному сокращению.
Рассмотрим пример. Пусть для системы второго порядка
a = [1 0;1 1]; b = [1;0]; c = [1 0]; d = 0. Система sys = ss(a, b, c, d) имеет одно ненаблюдаемое состояние, так как команды
Do = obsv(sys); Undo = length(a)-rank(Dî)
2
äàþò Undo = 1. Применим ê ýòîé системе команду sysr = minreal(sys). В результате одно состояние будет удалено и сформирована система с a =−1, b = 1, c = 1.
3.5.4. sminreal. Синтаксис команды:
msys = sminreal(sys).
Команда исключает состояния модели sys, которые не влияют на зависимость вход-выход. Все состояния msys являются также состояниями sys. Команда исключает только состояния, которые
166 Глава 3. Функции и команды Control System Toolbox
структурно не необходимы, например, если какие-то блоки не подсоединены При этом в отличие от команды minreal данная ко­манда сохраняет структуру состояний системы.
3.6. Модели в пространстве состояний
3.6.1. canon. Вычисляет каноническую реализацию в фазовом
пространстве. Синтаксис:
csys = canon(sys, 'type') [csys,T] = canon(sys, 'type').
Строка 'type' может быть равной 'modal' или 'companion'. Мат­рица T—матрица преобразования. Подробности и примеры см. раздел 1.1, формулы (1.16)...(1.21), (П. 1.1.5).
3.6.2. ctrb. Формирует матрицу управляемости. Синтаксис:
Co = ctrb(A, B) Co = ctrb(sys).
Пояснения и примеры см. раздел 1.1, соотношение (1.7), про­грамма (П. 1.1.4).
3.6.3. obsv. Формирует матрицу наблюдаемости. Синтаксис:
Ob = obsv(A, Ñ) Ob = obsv(sys).
Пояснения и примеры см. раздел 1.1, соотношение (1.8), про­грамма (П. 1.1.4).
3.6.4. gram. Вычисляет граммианы управляемости и наблю-
даемости. Синтаксис:
Wc = gram(sys,'c') Wo = gram(sys,'o').
Граммианы используются для изучения наблюдаемости и управляемости и для понижения порядка модели, они имеют луч­шие вычислительные свойства, чем матрицы управляемости и на­блюдаемости. Они определяются так:
AA
Wc e e d
ττ
=
BB
T
T
τ,0Wo e e d
T
T
AA
=
ττ
CC
0
τ,
где Wc, Wo — соответственно граммианы управляемости и наблю­даемости. Wc положительно определен тогда и только тогда, когда
Глава 3. Функции и команды Control System Toolbox 167
система управляема. Аналогично Wo положительно определен то­гда и только тогда, когда система наблюдаема.
3.6.5. ss2ss. Преобразование координат в системе типа SS.
Синтаксис:
sysT = ss2ss(sys, T).
Команда выполняет преобразование ïî формулам (1.16)—(1.18).
3.6.6. ssbal. Команда выполняет балансирование системы, за-
данной в фазовом пространстве. Синтаксис:
[sysb,T] = ssbal(sys),
ãäå T — возвращаемая матрица преобразования. Пример см. раз­дел 1.1.
3.7. Динамика системы
3.7.1. bandwidth. Команда вычисляет полосу пропускания
SISO системы, которая определяется как первая частота, при ко­торой коэффициент усиления уменьшается ниже 70.79% =−3äÁ по сравнению с коэффициентом усиления на нулевой частоте. Синтаксис:
fb = bandwidth(sys) fb = bandwidth(sys, dbdrop).
Здесь dbdrop позволяет переопределить порог в дБ, при кото­ром вычисляется частота среза.
3.7.2. damp. Команда вычисляет коэффициент демпфирова-
ния и собственные частоты полюсов системы. Синтаксис:
[Wn,Z] = damp(sys) [Wn,Z,P] = damp(sys).
Wnи Z представляют собой векторы-столбцы, содержащие
частоты и коэффициенты демпфирования. Для дискретной систе­мы команда рассчитывает эквивалентные «непрерывные» полюса, решая z = e
sT
. Вектор Ð содержит полюса системы.
Рассмотрим пример. В программе П. 1.8 коэффициент усиле­ния K
пропорционального канала регулятора скорости был уста-
p
новлен равным 156. Приведем обоснование этого выбора. Этот
168 Глава 3. Функции и команды Control System Toolbox
коэффициент был выбран, исходя из условия получения макси­мального значения коэффициента демпфирования в замкнутом контуре, образованном sys1 + K
C = 243; J1=21.5; J2=7; Jc = J1+J2; sys1 = tf([J2 0 C],[J1*J2 0 C*Jc 0]) for i = 1:300
Kð=i; sys2 = feedback(sys1, Kð) [p1,e1] = damp(sys2) e2 = min(e1); Mm(i) = e2; end; [a, b] = max(Mm) Kð=b (Ï. 3.2)
(рис. 1.15). Составим программу:
p
В этой программе организован цикл вычислений коэффици­ента демпфирования å ходную систему sys1, замкнутую через Ê
системы sys2, представляющей собой ис-
1
. Òàê êàê îäèí èç ïîëþ-
ð
сов вещественный с коэффициентом демпфирования 1, то нужно выбрать минимальное значение å плексно-сопряженных корней. Это значение å
, соответствующее паре ком-
2
запоминается в
2
массиве Mm. Далее находится максимальный элемент массива à и соответствующий аргумент b. В результате вычислений найдено
a = 0.0756,b= K
= 156.
p
3.7.3. dcgain. Команда вычисляет коэффициент усиления сис-
темы при нулевой частоте. Синтаксис:
k = dcgain(sys).
Для непрерывной передаточной функции k — это ее значение при s = 0, для дискретной — при z = 1. При описании системы в фазовых координатах для непрерывной системы
K = D CA
-1
B,
для дискретной
-1
K = D + C(I A)
B.
Для системы, содержащей интеграторы, не охваченные обрат­ной связью, k = inf.
3.7.4. pole. Вычисляет полюсы системы. Синтаксис:
p = pole(sys).
Пример применения (П. 2.5).
Глава 3. Функции и команды Control System Toolbox 169
3.7.5. eig. Вычисляются собственные значения и собственные
векторы матриц. Синтаксис:
d = eig(A) d = eig(A, B) [V,D] = eig(A) [V,D] = eig(A, B).
Первая команда возвращает вектор собственных значений матрицы А, т. е. скалярные величины, удовлетворяющие соотно­шению Àv = dv, ãäå v — собственные векторы. Команда [V, D] = eig(A) формирует матрицы собственных величин D и собственных векторов V матрицы A, òàê ÷òî A*V = V*D. Матрица D — диаго­нальная с собственными величинами матрицы À на главной диа­гонали. Аналогично команды d = eig(A, B) è [V, D] = eig(A, B) вы­числяют так называемые обобщенные собственные величины и собственные векторы, удовлетворяющие равенству Àv = dBv для двух квадратных матриц A è B одинакового размера.
Примеры использования команды (П. 1.1.3), (П. 1.1.9).
3.7.6. norm. Вычисляется норма системы. Синтаксис:
norm(sys) norm(sys, 2) norm(sys, inf) norm(sys, inf, tol) [ninf, fpeak] = norm(sys, inf).
Первые две команды вычисляют Í2норму (2.72), а третья ко­манда — Í задать желаемую относительную точность при расчете Í
норму (2.74). Команда norm(sys, inf, tol) позволяет
нормы
(по умолчанию tol = 0.01). Команда [ninf, fpeak] = norm(sys, inf) возвращает также частоту, при которой достигается максимум ам­плитуды.
Применим эти команды к системам, сформированным в (П. 3.2). Выполним команды
d1=norm(sys2, 2) d2=norm(sys2, inf) d3=norm(sys1, 2) d4=norm(sys1, inf). (Ï. 3.2.1)
Получим: d1= 0.0088; d2= 0.0033; d3= d4= inf. Последние ре­зультаты объясняются тем, что sys1 имеет полюс при s = 0 (при расчете Í
) и полюса на мнимой оси (при расчете Í∞).
2
170 Глава 3. Функции и команды Control System Toolbox
3.7.7. zero. Вычисляются нули системы. Синтаксис:
z = zero(sys).
Применяя команду z = zero(sys2) к введенной в (П. 3.2) сис­теме sys2, получим: z
= 5.892i, z2=−5.892i.
1
3.7.8. pzmap. Команда рассчитывает и вычерчивает располо-
жение нулей и полюсов. Синтаксис:
pzmap(sys) pzmap(sys1, sys2,..., sysN) [p, z] = pzmap(sys).
Они рассчитываются как для непрерывных, так и для дискрет­ных систем. Полюсы изображаются как «x» и нули как «o». Ко­манда pzmap(sys1, sys2,..., sysN) вычерчивает расположение ну­лей и полюсов нескольких систем на одном рисунке. Последняя команда вычисляет полюсы и нули системы как векторы-столбцы p и z, но не вычерчивает их расположение.
3.7.9. rlocus. Команда вычерчивает корневой годограф. Син-
таксис:
rlocus(sys) rlocus(sys, k) rlocus(sys1, sys2,...) [r, k] = rlocus(sys) r = rlocus(sys, k).
Описание и примеры применения см. раздел 2.1.6. Если в первой команде значения коэффициента обратной связи выбира­ются автоматически, то во второй используется вектор заданных значений k, а третья изображает корневой годограф для несколь­ких систем на одном рисунке. Команда [r, k] = rlocus(sys) воз­вращает вектор-строку выбранных значений k и матрицу r
ñîîò-
ветствующих комплексных корней, а команда r = rlocus(sys,k) — матрицу r для заданных значений k. Матрица r имеет столько строк, сколько полюсов имеет система, и столько же столбцов, как и вектор k.
3.7.10. sgrid. Команда наносит сетку в плоскости s постоян-
ных коэффициентов демпфирования и собственных частот (см. рис. 2.10, 2.34). Синтаксис:
sgrid sgrid(z, wn).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]