Control System Toolbox (1086791), страница 4
Текст из файла (страница 4)
>> p=pole(H)
p =
0.9054 + 0.29241
0.9054 - 0.2924i
0.6063
Функция pzmap возвращает карту нулей и полюсов:
pzmap(sys) [p,z] = pzmap(sys)
В последней форме записи график не выводится, а возвращаются векторы, элементы которых являются нулями и полюсами модели. Пример:
>> pz=pzmap(H)
pz =
0.9054 + 0.29241
0.9054 - 0.2924i
0.6063
Функция rlocus выполняет расчет и построение корневого годографа по известной LTI-модели разомкнутой одномерной системы sys:
rloqus(sys) rlocus(sys,k) rlocus(sysl,sys2,...)
[r,k] = rlocus(sys) r = rlocus(sys,k)
Здесь sys — имя модели и k — начальное значение коэффициента усиления (вектор-строка таких значений для многомерного объекта) звена обратной связи. Возвращаемые значения:
-
график корневого годографа;
-
r — массив полюсов при изменении k от 0 до ;
-
k — соответствующий массив значений коэффициентов усиления.
Рассмотрим следующий пример. Построим корневой годограф системы с передаточной функцией
>> W=tf([2 5 1],[1 2 3]); rlocus(W)
Результат выполнения функции rlocus показан на графике….
Функция г = roots(c) вычисляет корни полиномов, коэффициенты которых хранятся в векторе с. Например:
>> р = [1 -6 -72 -27]; r = roots(р)
r =
12.1229
-5.7345
-0.3884
Функция zero возвращает вектор, элементами которого являются нули LTI-модели:
Пример:
>> z=zero(H)
z =
0.9984 + 0.4388i
0.9984 - 0.4388i
0.8442
Функция, вызванная в форме [z,gain] = zero (sys), кроме нулей, возвращает еще и обобщенный коэффициент передачи модели. Например:
>> [z,gain] = zero(H)
z =
0.9984 + 0.43881
0.9984 - 0.43881
0.8442
gain = l
Функция
sgrid sgrid(z,wn)
обеспечивает построение линий «сетки», например:
>> Н = tf([2 5 1], [1 2 3])
Transfer function^
2 s^2 + 5 s + 1
-----------------
s^2 + 2 s + 3
>> rlocus (H) ; sgrid
Результат будет показан на графике.
Еще одна функция обеспечивает построение «сетки» на z-плоскости:
zgrid zgrid(z,wn)
Следующий пример иллюстрирует это:
>> Н = tf ([2 -3.4 1.5], [1 -1.6 0.8], -1)
Transfer function:
2 z^2 - 3.4 z + 1.5
----------------------------
z^2 - 1.6 z + 0.8
Sampling time: unspeciffied
>> rlocus (H); zgrid; axis ('square')
Результат выполнения функций rlocus и zgrid виден на графике.
7.3.7. Моделирование временного отклика систем
В группу функций для расчета и построения временного отклика систем входят следующие 6 функций.
Функция step рассчитывает и строит реакцию модели на единичную ступенчатую функцию, то есть возвращает переходную функцию системы:
step(sys) step(sys,t)
step(sysl,sys2,...,sysN) step (sysl,sys2,...,sysN,t)
step(sys1,'PlotStyle1',...,sysN,'PlotStyleN')
[y,t,x] = step(sys)
Для моделей, заданных в пространстве состояний, начальные условия принимаются нулевыми. Аргументы функции следующие:
-
sys, sysl, sys2, ..., sysN — имена моделей, для которых строятся переходные функции (все модели должны иметь одинаковое число входов и выходов);
-
t — аргумент, задающий момент окончания моделирования — либо в форме t = Tfinal (в секундах), либо в форме t = 0:dt:Tfinal. Для дискретных моделей значение dt должно равняться интервалу дискретизации, для непрерывных моделей — быть достаточно малым, чтобы учесть наиболее быстрые изменения переходного процесса;
-
'PlotStyle1', 'Plotstyle2', …,'PlotStyleN' — строковые переменные, задающие стили графиков (типы линий) при выводе нескольких графиков одновременно.
Возвращаемые величины:
-
график (графики) переходных процессов;
-
у, х, t — соответственно, векторы, содержащие значения переходного процесса, переменных состояния и моментов времени; при возвращении данных величин график переходного процесса не отображается.
В качестве примера применения этой функции построим графики переходных процессов для следующей модели 2-го порядка:
>> а = [-0.5572 -0.7814; 0 .7814 0] ;
>> b = [1 -1; 0 2]; с=[1.9691 6.4493];
>> sys = ss(a,b,c,0); step(sys)
Переходные процессы u(1) и u(2) можно наблюдать на графиках…..
Рис. 7.22. Импульсная характеристика системы 2-го порядка
Функция impulse возвращает импульсную характеристику модели или нескольких моделей: impulse (sys) impulse (sys, t)
impulse (sys1, sys2, . . ., sysN) impulse (sys1, sys2, . . ., sysN,t)
impulse(sysl,'PlotStyle1',...,sysN,'PlotStyleN')
[y,t,x] = impulse(sys)
Смысл аргументов и возвращаемых величин — как у предыдущей функции, за тем исключением, что здесь все относится к ИХ.
Для ранее заданной модели имеем:
>> sys = ss(a,b,c,0); impulse(sys)
Функция initial возвращает графики переходных процессов для ss-модели при ненулевых начальных условиях:
initial(sys,x0) initial(sys,x0,t)
initial(sys1,sys2,...,sysN,x0)
initial(sys1,sys2,...,sysN,x0,t)
initial (sys1, 'PlotStyle1',.. .', sysN, 'PlotStyleN', x0)
[y,t,x] = initial (sys,x0)
Здесь x0 — вектор-строка начальных условий для переменных состояния. Смысл остальных аргументов и возвращаемых величин — как у функции step.
Функция isim возвращает реакцию LTI-модели на произвольное входное воздействие:
lsim(sys,u,t) lsim(sys,u, t, x0)
Isim (sys1, sys2,...,sysN,u,t)
Isim(sys1,sys2,...,sysN,u,t,x0)
lsim(sys1,'PlotStyle1',...,sysN,'PlotStyleN',u,t)
[y,t,x] = lsim(sys,u,t,x0)
Здесь t — вектор-строка моментов времени, u — вектор-строка значений входного сигнала, остальные аргументы и возвращаемые величины — как у предыдущих функций данной группы.
Вместе с описанными функциями часто используются функции генерации тестовых временных зависимостей. Так, функция gensig генерирует скалярный сигнал заданного типа и с заданным периодом:
[u,t] = gensig( type, tau) [u,t] = gensig (type, tau, Tf, Ts)
Здесь:
-
type — строковая переменная, задающая тип генерируемого сигнала и имеющая следующие возможные значения:
-
'sin' —синусоида;
-
'square' —периодический прямоугольный сигнал;
-
'pulse' —периодические импульсы.
Все генерируемые сигналы имеют единичную амплитуду;
-
tau — период генерируемого сигнала (в секундах);
-
Tf:— продолжительность сигнала, с;
-
Ts — период дискретности (в секундах:) для генератора импульсов.
Возвращаемые величины:
-
t — вектор значений времени;
-
u — соответствующий вектор значений генерируемого сигнала.
Рассмотрим следующий пример. Используем рассматриваемую функцию для генерации периодического прямоугольного сигнала с периодом 5с, продолжительностью 30с и периодом дискретизации 0,1с:
>> [u,t]=gensig('square',5, 30, 0,1) ;
Отобразим теперь график сигнала:
>> plot(t,u); axis([0 30 -1 2])
Затем для объекта, описываемого матрицей передаточных функций
найдем реакцию на сформированный сигнал:
>> W = [tf([2 5 l],[1 2 3]); tf( [l -1],[1 1 5] )];
>> lsim(W,u,t)
Результат будет виден на графиках….
Функция stepfun возвращает сигнал типа «единичный скачок»:
stepfun(t,t0)
Здесь t — вектор-строка моментов времени и t0 — некоторый момент времени. Возвращаемая величина — сигнал, соответствующий функции единичного скачка, происходящего в момент t0.
7.3.8. Создание и представление временных задержек
Для создания и представления временных задержек имеется четыре простые функции.
Функция
sys = delay2z(sys)
представляет дискретную временную задержку для моделей sys типа TF, SS или ZPK с полюсами z=0 или представляет задержки для FRD моделей с фазовым сдвигом.
Следующий пример иллюстрирует применение функции delay2d:
>> z=tf('z',-1);
>> sys=(-.4*z -.l)/(z^2 + 1.05*z + .08)
Transfer function:
-0.4 z - 0.1
------------------------------
zA2 + 1.05 z + 0.08
Sampling time: unspecified
>> sys.InputDelay = 1;
>> sys = delay2z(sys)
Transfer function:
-0.4 z - 0.1
---------------------------------
z^3 + 1.05 z^2 + 0.08 z
Sampling time: unspecified
Функция
hasdeiay(sys)
возвращает информацию о том, имеется ли в системе с моделью sys временная задержка.
Функция
td = totaldelay(sys)
возвращает матрицу суммарных задержек от входов к выходам модели.
>> sys = tf(l, [l 0]); sys.inputd = 2; sys.outputd = 1.5;
>> td = totaldelay(sys)
td = 3.5000
Функция pade
[num,den] = pade(Т,N) pade(T,N)
sysx = pade(sys,N) sysx = pade(sys,NI, NO,Nio)
возвращает Паде-аппроксимацию для временной задержки.
7.3.9. Моделирование частотного отклика систем
Следующая группа функций служит для расчета и построения функций частотного отклика систем.
Функция
S = allmargin(sys)
вычисляет коэффициент передачи, фазу и задержку для SISO модели.
Функция bode возвращает диаграммы Боде — графики логарифмической амплитудно-частотной характеристики (ЛАЧХ) и фазочастотной характеристики (ФЧХ):
bode(sys) bode(sys,w)
bode(sys1,sys2,...,sysN) bode(sys1,sys2,...,sysN,w)
bode(sys1,'PlotStyle1',...,sysN,'PlotStyleN')
[mag,phase,w] = bode(sys)
Здесь аргумент w задает диапазон частот (w = [wmin, wmax]), остальные аргументы — такие же, как у ранее рассмотренных функций. Возвращаемые величины:
-
диаграммы Боде для моделей с заданными именами;
-
mag, phase, w — соответственно, массивы значений амплитуд и вектор частот.
Приведем пример построения диаграммы Боде для узкополосной системы:
>> g = tf([l 0.1 7.5], [1 0.12 9 0 0])
Transfer function:
s^2 + 0.1 s + 7.5
-------------------------------------
s^4 + 0.12 s^3 + 9 s^2
>> bode(.g)
Функция bodemag строит диаграмму Воде только для магнитуды:
bodemag(sys) bodemag(sys,{wmin,wmax})
bodemag(sys,w) bodemag(sys1,sys2,...,sysN,w)
bodemag(sys1,'PlotStyle1',...,sysN,'PlotStyleN')
Функция evalfr вычисляет значение комплексного коэффициента передачи для одного заданного комплексного значения частоты:
frsp = evalfr (sys, f)
Здесь sys — имя модели и f — заданное значение частоты. Возвращаемая величина frsp равна W(f).
Пр имер:
>> Н = tf([l -1],[1 1 1],-1); z = 1+j; evalfr(H,z)
ans = 0.2308 + 0.15381
Функция freqresp вычисляет значения комплексного коэффициента передачи для заданного набора частот:
H = freqresp(sys,w)
Здесь sys — имя модели и w — вектор-строка значений частот. Возвращаемая величина Н — массив значений W(j).
Функция
isys = interp(sys,freqs)
используется в качестве вспомогательной функции для интерполяции частотных зависимостей.
Функция linspace возвращает вектор-строку линейно возрастающих частот:
Linspace(x1,x2) linspace(x1,x2,N)
Здесь x1 и х2 — верхняя и нижняя границы диапазона частот и N — количество задаваемых значений (по умолчанию 100). Возвращается вектор-строка, элементами которого являются частоты, эквидистантно расположенные на отрезке [x1, х2]. Пример, иллюстрирующий работу с этой функцией, дан ниже: