2764
.pdfФункция sys = parallel(sys1, sys2) реализует параллельное соединение двух lti-моделей.
|
sys1 |
u |
y |
|
sys2 |
sys
Обе модели должны быть непрерывными или дискретными с
одинаковыми |
периодами |
дискретности. |
Допустимо |
использование |
безинерционных |
моделей, |
описываемых |
матрицами |
статических |
коэффициентов передачи. Эта функция эквивалентна операции сложения lti-
моделей sys sys1 sys 2 .
Функция sys = parallel(sys1, sys2, inp1, inp2, out1, out2) позволяет реализовать более общую форму параллельного соединения двух lti-моделей.
v1 |
sys1 |
z1 |
|
||
|
|
|
u |
|
y |
|
||
|
||
|
sys2 |
v2 z2 sys
Векторы inp1 и inp2 определяют, какие номера входов системы sys1 и какие номера входов системы sys2 соединяются. Аналогично векторы out1 и out2 определяют, какие номера выходов систем sys1 и sys2 суммируются. Результирующая модель sys имеет входом вектор [v1; u; v2] и выходом вектор
[z1; y; z2].
series |
Последовательное соединение lti-моделей |
|
|
Синтаксис:
sys = series(sys1, sys2)
sys = series(sys1, sys2, outputs1, inputs2)
Функция sys = series(sys1, sys2) реализует последовательное соединение двух lti-моделей и эквивалентна операции умножения sys = sys2 * sys1.
u |
sys1 |
|
sys2 |
y |
|
|
|
sys
При использовании функции действуют те же ограничения, что и в предыдущем случае.
Функция sys = series(sys1, sys2, outputs1, inputs2) позволяет реализовать более общую форму последовательного соединения двух lti-моделей.
Векторы outputs1 и inputs2 указывают, какие номера выходов системы sus1 к каким номерам входов системы sys2 должны быть подсоединены. Полученная модель sys имеет входом вектор u и выходом вектор y.
|
|
v1 |
|
|
|
|
|
|
y1 |
sys2 |
y |
|
sys1 |
|
|||
|
|
|
|||
|
|
|
|
|
|
u |
|
|
z1 |
|
sys |
|
|
|
|||
|
|
|
|
||
|
|
|
|
Пример: рассмотрим две модели – ss-модель sys1 c пятью входами и четырьмя выходами и ss-модель sys2 с двумя входами и тремя выходами. Выполним последовательное соединение этих моделей, когда выходы 2 и 4 модели sys1 присоединяются к входам 1 и 2 модели sys2.
»outputs1=[2 4];
»inputs2=[1 2];
»sys=series(sys1,sys2,outputs1,inputs2)
feedback |
Соединение lti-моделей обратной связью |
|
|
Синтаксис:
sys = feedback(sys1, sys2)
sys = feedback(sys1, sys2, feedin, feedout, sign)
Функция sys = feedback(sys1, sys2) возвращает lti-модель с дескриптором sys, соответствующую соединению lti-моделей sys1 и sys2 в контур с отрицательной обратной связью.
u |
sys1 |
y |
|
|
|
|
sys2 |
|
Замкнутая модель имеет вход u и выход y. Обе модели должны быть непрерывными или дискретными с одинаковыми периодами дискретности. Правила приоритета определяют подкласс результирующей модели. Функция feedback(sys1, sys2) эквивалентна функции feedback(sys1, sys2, -1). Чтобы замкнуть систему положительной обратной связью следует использовать функцию feedback(sys1, sys2, +1).
Функция sys = feedback(sys1, sys2, feedin, feedout) позволяет реализовать более общую форму соединения с обратной связью.
Вектор feedin содержит индексы входного вектора модели sys1 и определяет, какие ее входы включаются в контур с обратной связью. Вектор feedout определяет, какие входы системы sys1 используются для организации обратной связи. Результирующая модель имеет те же входы и выходы, что и система sys1 с сохранением их порядка. По умолчанию предполагается, что контур замыкается отрицательной обратной связью.
Ограничения: соединение с обратной связью не должно содержать алгебраических петель. Для ss-моделей в пространстве состояний это условие заключается в том, что матрицы прямой передачи входа D1 и D2 таковы, что матрица I + D1D2 для контура с отрицательной обратной связью и матрица I – D1D2 для контура с положительной обратной связью являются невырожденными.
star |
Соединение lti-моделей звездой |
|
|
Синтаксис:
sys = star(sys1, sys2)
sys = star(sys1, sys2, nu, ny)
Функция sys = star(sys1, sys2, nu, ny) формирует соединение звездой для двух моделей sys1 и sys2.
v1 |
sys1 |
|
z1 |
|
|
||
u |
|
y |
|
|
|
||
y |
|
u |
y |
|
|||
sys2 |
|
||
|
|
|
|
v2 |
|
|
z2 |
|
sys |
|
|
Обратная связь соединяет первые nu выходов системы sys2 с последними nu входами системы sys1 (сигналы u) и последние ny выходов системы sys1 с первыми ny входами системы sys2 (сигналы y). Полученная система sys отображает вектор входа [v1; v2] на вектор выхода [z1; z2].
Функция sys = star(sys1, sys2) возвращает lti-модель с дескриптором sys, которой может соответствовать одно из двух соединений:
v1 |
|
z1 |
sys1 |
|
sys1 |
|
|||
|
|
|
|
|
|
|
y |
|
u |
|
|
|
||
u |
|
y |
|
|
|
|
|
||
|
sys2 |
|
||
|
|
|
|
|
|
sys2 |
v1 |
|
z2 |
|
|
|
||
|
|
|
||
|
|
|
|
|
append |
|
Объединение lti-моделей |
||
|
|
|
|
|
Синтаксис:
sys = append(sys1, sys2, …, sysN)
Функция sys = append(sys1, sys2, …, sysN) объединяет входы и выходы lti-моделей и формирует агрегатированную модель без перекрестных связей.
Для tf-моделей с передаточными функциями H1(s), H2(s), …, HN(s) результирующая модель характеризуется передаточной функцией в виде диагональной блочной матрицы
H s diag H1 s , H2 s , , H N s .
connect Построение lti-модели на основе структурной схемы
Синтаксис:
sysc = connect(sys, Q, inputs, outputs)
На практике сложные динамические системы часто описываются структурными схемами, состоящими из большого количества элементов. В этом случае даже для систем умеренной сложности построить ss-модель в пространстве состояний по ее структурной схеме бывает затруднительно. Использование функции connect существенно облегчает эту задачу.
Входные аргументы Q, inputs и outputs имеют следующее назначение:
матрица связей Q предназначена для описания связей блоков на структурной схеме. Каждая строка этой матрицы соответствует одному входу системы sys; первый элемент строки – это номер входа, последующие элементы указывают номера выходов, которые алгебраически суммируются по этому входу; отрицательные элементы обозначают суммирование со знаком минус. Например, если на вход 7 поступают сигналы с выходов 2, 15 и 6, причем сигнал с выхода 15 имеет отрицательный знак, то соответствующая строка матрицы связей Q имеет вид [7 2 –15 6]. Теперь с помощью функции connect может быть построена модель в пространстве состояний с учетом перекрестных связей и с теми же входами и выходами, которые имела модель sys;
векторы inputs и outputs определяют, какие входы и выходы агрегатированной системы являются внешними. Например, если внешними
являются входы 1, 2, 15 и выходы 2, 7 системы sys, то аргументы inputs и outputs должны иметь вид inputs = [1 2 15]; outputs = [2 7].
Поскольку при вводе большого объема данных достаточно просто допустить ошибку, следует выполнить проверку сформированной модели. Для этого можно предложить несколько рекомендаций:
следует убедиться, что полюсы модели sys соответствуют полюсам отдельных блоков;
убедиться, что полюс и статические коэффициенты передачи результирующей системы являются приемлемыми;
построить переходные функции и частотные характеристики для системы sysc и сравнить их с ожидаемыми.
Если методика работы со структурными схемами является преобладающей, то лучше формировать модель в системе Simulink, как мощным инструментом построения моделей динамических систем.
3.9. Получение lti-объекта из системы Simulink
Для того, чтобы получить lti-объект из системы Simulink, следует сформировать модель, в которой не будет источников и приемников сигналов.
1 |
1 |
|
1 |
0.01s2+0.5s+1 |
|
||
In1 |
|
Out1 |
|
|
1 |
||
|
Transfer Fcn |
2 |
|
|
|
||
|
|
|
|
|
Gain |
0.5s+1 |
Out2 |
|
|
|
|
|
5 |
Transfer Fcn1 |
|
|
|
|
Входы и выходы системы отмечаются блоками in и out.
Далее необходимо получить параметры пространства состояний системы (предполагаем, что система собрана в окне системы Simulink с именем untitled):
» [a, b, c, d] = linmod('untitled');.
Полученная матрица позволяет получить модель системы в пространстве состояний:
» sys=ss(a, b, c, d) a =
|
x1 |
x2 |
x3 |
x1 |
-50 |
-600 |
0 |
x2 |
1 |
0 |
0 |
x3 |
0 |
100 |
-2 |
b = |
|
|
|
|
u1 |
|
|
x1 |
1 |
|
|
x2 |
0 |
|
|
x3 |
0 |
|
|
c = |
|
|
|
|
x1 |
x2 |
x3 |
y1 |
0 |
100 |
0 |
y2 |
0 |
0 |
2 |
d = |
|
|
|
|
u1 |
|
|
y1 |
0 |
|
|
y2 |
0 |
|
|
Continuous-time model.
Полученная модель может быть использована также, как и любая другая, сформированная командами подсистемы Control System Toolbox.
Можно получить ее в виде tf-модели: » systf=tf(sys)
Transfer function from input to output...
100 #1: ----------------
s^2 + 50 s + 600
200 #2: ---------------------------
s^3 + 52 s^2 + 700 s + 1200.
Внимание! Так как модель первоначально преобразуется в форму пространства состояний, не допускается включение в модель в явном виде элементов, передаточные функции которых носят дифференциальный характер (степень числителя больше степени знаменателя).
3.10. Операторы и функции для анализа систем
pole, eig |
Расчет полюсов lti-модели |
|
|
Синтаксис: p = pole(sys)
poles = eig(sys)
Функция р = pole(sys) вычисляет полюсы р одномерной или многомерной lti-модели sys.
Для ss-моделей в явной форме Коши полюсами являются собственные значения задачи Аr = r, для ss-моделей в неявной форме Коши - обобщенные собственные значения задачи Аг = Вг.
Для одномерных tf и zpk моделей полюсами являются корни знаменателя передаточной функции.
Для многомерных tf и zpk моделей полюсы определяются как множество полюсов для каждого канала входа-выхода. В процессе вычислений могут возникнуть трудности при определении точного порядка многомерной передаточной функции и выявлении избыточных полюсов. При применении функции pole tf'и zpk модели преобразуются в ss-модели и, хотя при этом по некоторым каналам входа-выхода формируются минимальные реализации, в целом функция pole не гарантирует минимальной реализации, за исключением случаев, когда многомерная система имеет единственный вход или единственный выход.
Функция poles = eig(sys) вычисляет полюсы lti-модели sys и реализована как переопределяемый метод для lti-объектов.
Ограничения: при использовании функций pole и eig процедура вычисления кратных полюсов (собственных значений) оказывается численно неустойчивой. Это выражается в том, что собственному значению кратности m, как правило, соответствует кластер близких собственных значений, расположенных на окружности с центром и радиусом порядка eps1/m.
Для анализа и расчета систем с кратными собственными значениями рекомендуется использовать матрицы в канонической форме Жордана.
damp |
Расчет собственных частот и коэф-та демпфирования |
|
|
Синтаксис:
[Wn, Z] = damp(sys) [Wn, Z, P] = damp(sys)
Функция damp предназначена для расчета собственных частот и коэффициентов демпфирования, соответствующих полюсам lti-модели sys. Если функция вызывается без выходных аргументов, то на экран выводится таблица, содержащая собственные значения в порядке возрастания их модуля и соответствующие им собственные частоты и коэффициенты демпфирования.
Функция [Wn, Z] = damp(sys) возвращает векторы-столбцы Wn и Z, содержащие собственные частоты и коэффициенты демпфирования lti-модели sys. Для дискретных систем с полюсами z и периодом дискретности Ts рассчитываются эквивалентные полюсы непрерывной модели, исходя из соотношения z = exp(sTs). Оба вектора Wn и Z пустые, если период дискретности не указан.
Функция [Wn, Z, Р] = damp(sys) дополнительно возвращает вектор Р, содержащий полюсы lti-модели sys, которые соответствуют применению функции Р = pole(sys).
Пример:
Вычислить и вывести на экран собственные значения, собственные частоты и коэффициенты демпфирования непрерывной системы со следующей передаточной функцией:
» H=tf([2 5 1],[1 2 17 10 5])
Transfer function:
2 s^2 + 5 s + 1
---------------------------------------
s^4 + 2 s^3 + 17 s^2 + 10 s + 5
» damp(H)
Eigenvalue |
Damping |
Freq. (rad/s) |
|
-3.02e-001 + 4.74e-001i |
5.37e-001 |
5.62e-001 |
|
-3.02e-001 |
- 4.74e-001i |
5.37e-001 |
5.62e-001 |
-6.98e-001 |
+ 3.92e+000i |
1.75e-001 |
3.98e+000 |
-6.98e-001 |
- 3.92e+000i |
1.75e-001 |
3.98e+000 |
dcgain |
Расчет коэффициента передачи |
|
|
Синтаксис:
k = dcgain(sys)
Функция k = dcgain(sys) вычисляет коэффициент передачи k для ltiмодели sys.
Непрерывные системы
Для tf-моделей коэффициент передачи вычисляется как значение передаточной функции при s = 0.
Для ss-моделей с матрицами А, В, С, D этот коэффициент определяется из соотношения k = D – СА-1В.
Дискретные системы
Для tf-моделей коэффициент передачи вычисляется как значение дискретной передаточной функции при z = 1.
Для ss-моделей с матрицами А, В, С, D этот коэффициент определяется из соотношения k = С(I - А)-1В + D.
Коэффициент передачи для lti-модели с интегратором равен бесконечности.
pzmap Вычисление полюсов и нулей системы
Синтаксис: pzmap(sys)
[p, z] = pzmap(sys)
Команда pzmap(sys) указывает расположение полюсов и нулей непрерывной или дискретной lti-модели sys на комплексной плоскости. Для одномерной lti-модели выводятся полюсы и нули ее передаточной функции; для многомерной lti-модели - полюсы и передаточные нули. Полюсы изображаются маркером х, а нули - о.
Функция [р, z] = pzmap(sys) возвращает полюсы и передаточные нули в виде векторов-столбцов р и z. План расположения нулей и полюсов на экран не выводится.
Для наглядности можно построить линии постоянного уровня для коэффициента демпфирования и собственной частоты на плоскости s или z, используя команды sgrid или zgrid.
sgrid, zgrid |
Построение сеток постоянного уровня |
|
|
Синтаксис: |
|
sgrid |
zgrid |
sgrid(z, wn) |
zgrid(z, wn) |
Команды sgrid и zgrid строят сетки постоянных коэффициентов демпфирования от 0 до 1 с шагом 0.1 и собственных частот от 0 до 10 рад/с с шагом 1 рад/с на плоскостях s и z, соответственно.
Функции sgrid(z, wn) и zgrid(z, wn) строят сетки постоянных коэффициентов демпфирования и собственных для значений, указанных в векторах z и wn.
Функция zgrid([ ], [ ]) строит окружность единичного радиуса.
Замечание:
Если текущая s или z плоскость содержит расположение нулей и полюсов или график корневого годографа, то команда sgrid строит сетку координат поверх графика.
Пример: построить на s и z плоскости сетки постоянных коэффициентов демпфирования и собственных частот:
»subplot(1, 2, 1),sgrid
»subplot(1, 2, 2),zgrid
20 |
|
|
|
|
1 |
|
|
|
|
10 |
|
|
|
|
0.5 |
|
|
|
|
0 |
|
|
|
|
0 |
|
|
|
|
-10 |
|
|
|
|
-0.5 |
|
|
|
|
-20 |
|
|
|
|
-1 |
|
|
|
|
-20 |
-15 |
-10 |
-5 |
0 |
-1 |
-0.5 |
0 |
0.5 |
1 |
bode |
Построение логарифмических частотных характеристик |
|
|
Синтаксис: bode(sys) bode(sys, w)
bode(sys1, sys2, …, sysN) bode(sys1, sys2, …, sysN, w)
bode(sys1, ‘<тип линии1>’, …, sysN, ‘<тип линииN>’)
[mag, phase, w] = bode(sys)
Группа команд и функций bode предназначена для расчета амплитудных и фазовых логарифмических частотных характеристик (диаграмм Боде) для ltiмоделей. Команды bode строят на экране графики логарифмических частотных характеристик. Функция bode выполняет только расчет характеристик, но графиков не выводит. Логарифмические частотные характеристики применяются при анализе таких свойств систем, как запас устойчивости по фазе и амплитуде, коэффициент передачи, ширина полосы пропускания, реакция системы на возмущения.
Команда bode(sys) строит на экране графики логарифмических частотных характеристик для lti-модели sys. Эта модель может быть непрерывной или дискретной, одномерной или многомерной. В случае многомерной модели функция bode строит множество логарифмических частотных характеристик для каждого канала системы от входа к выходу. Диапазон частот определяется автоматически по значениям нулей и полюсов передаточной функции системы.
Команда bode(sys, w) строит логарифмические частотные характеристики в заданном диапазоне частот. Этот диапазон должен быть задан массивом ячеек w = {wmin, wmax}. Для построения логарифмических частотных характеристик на заданных частотах создается вектор значений частот w. Для создания логарифмической сетки следует применить команду logspace. Единица измерения частоты - рад/с.
Команды bode(sysl, sys2,..., sysN), bode(sysl, sys2,..., sysN, w) позволяют построить частотные характеристики для нескольких lti-моделей на одном