Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Пакеты расширения MATLAB. Control System Toolbox и Robust Control Toolbox
.pdf
Глава 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).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
