Главная страница

Учебное пособие для студентов высших учебных заведений


Скачать 5.41 Mb.
НазваниеУчебное пособие для студентов высших учебных заведений
Дата10.03.2022
Размер5.41 Mb.
Формат файлаpdf
Имя файлаmatlab.pdf
ТипУчебное пособие
#390741
страница30 из 44
1   ...   26   27   28   29   30   31   32   33   ...   44
kalmd - Дискретный фильтр Калмана для непрерывной системы
lqgreg - Формирователь LQG-регулятора по LQ-коэффициентам и фильтру
Калмана.
Решение матричных уравнений
lyap - Решение непрерывных уравнений Ляпунова
dlyap - Решение дискретных уравнений Ляпунова
care - Решение непрерывных алгебраических уравнений Риккати
dare - Решение дискретных алгебраических уравнений Риккати
Демонстрационные программы
ctrldemo - Введение в Control System Toolbox.
jetdemo - Классическое проектирование САУ углом рыскания.
diskdemo - Цифровое проектирование контроллера привода жесткого диска
milldemo - ОМ и ММ LQG управление прокатного стана
kalmdemo - Проектирование и моделирование фильтра Калмана
Далее процедуры пакета изучаются более подробно.
6.1. Ввод и преобразование моделей
LTI- модели можно создавать в трех видах - SS, TF и ZPK-объектов. Для этого используются соответственно процедуры-конструкторы ss, tf и zpk.
Создание LTI-модели рассмотрим на примере модели трехстепенного аста- тического гироскопа. Уравнения движения такого гироскопа имеют вид:
&&
&
( )
&&
&
( )
α λβ
β λα
+
=

=



⎩⎪
n t
l t
(1)

6.1. Ввод и преобразования модели
273
где n(t) и l(t) - моменты сил, действующие на гироскоп по осям подвеса;
α
и
β
- углы поворота гироскопа в пространстве;
λ
- частота собственных (нутационных) колебаний гироскопа.
Чтобы создать ss-модель, необходимо прежде всего привести дифференци- альные уравнения движения динамической системы к стандартному виду типа:
dx
dt
A x B u
y C x D u
= ⋅ + ⋅
= ⋅ + ⋅



⎩⎪
(2)
где u - вектор входных переменных ; - вектор выходных переменных, а
y
x
- век- тор переменных состояния системы. Из этого следует, что перед формированием
ss-модели необходимо:
- определить, какие величины будут задаваться как явные функции времени, т. е. какие величины составят вектор u входных переменных;
- определить, какие величины будут образовывать вектор выходных пе- ременных (т.е. будут находиться путем решения системы заданных дифференци- альных уравнений);
y
- установить какие величины будут составлять вектор x переменных со- стояния системы (их число должно совпадать с порядком системы заданных диф- ференциальных уравнений);
- с помощью введенных переменных состояния привести заданную систему дифференциальных уравнений к так называемой
нормальной форме Коши
, т.е. к системе дифференциальных уравнений первого порядка, разрешенных относи- тельно производных.
Будем полагать моменты сил - "входами" гироскопа, а углы поворота гиро- скопа - "выходами". Тогда система "гироскоп" (будем обозначать ее "GYRO") имеет 2 входа (
n(t)
и
l(t)
) и 2 выхода (
α
и
β
). В качестве переменных состояния примем выходные переменные и их первые производные по времени:
x
x
x
x
1 2
3 4
=
=
=
α
β
α
;
;
&;
&
=
β
t
. (3)
Тогда уравнения гироскопа в форме Коши приобретут вид:
&
;
&
;
&
( );
&
( );
x
x
x
x
x
x
n
x
x
l t
1 3
2 4
3 4
4 3
=
=
= − ⋅
+
= ⋅
+







λ
λ
(4)
Теперь нужно образовать матрицы A, B, C и D в соответствии с формой (2) представления системы в пространстве состояния. В рассматриваемом случае в качестве выходного вектора
у
примем:
[ ]
y
T
=
α β
,
; (5) в качестве входного - вектор моментов сил:
[
]
u
n t l t
T
= ( ), ( )
. (6)

6.1. Ввод и преобразования модели
274
Полагая
[
]
x
x x x x
T
=
1 2
3 4
,
, ,
, (7) значения указанных матриц должны быть такими:
A
=













0 0 1 0 0 0 0 1 0 0 0 0 0 0
λ
λ
;
;
;
. (8)
B
=












0 0 0 0 1 0 0 1
C
=






1 0 0 0 0 1 0 0
D
=






0 0 0 0
Введем эти матрицы в командном окне MatLAB, принимая
λ
=10:
>> lambda=10;
>> A=zeros(4,4); A(1,3)=1;A(2,4)=1;A(3,4)= -lambda;A(4,3)=lambda; A
A =
0 0 1 0 0 0 0 1 0 0 0 -10 0 0 10 0
>> B=zeros(4,2); B(3,1)=1; B(4,2)=1
B =
0 0 0 0 1 0 0 1
>> C=zeros(2.2); C=[diag([1 1]) C]
C =
1 0 0 0 0 1 0 0
Теперь можно приступить к созданию
LTI
-объекта по имени GYRO
,
ис- пользуя модель в пространстве состояния:
>> GYROss=ss(A,B,C,0)
a = x1 x2 x3 x4 x1 0 0 1 0 x2 0 0 0 1 x3 0 0 0 -10 x4 0 0 10 0 b = u1 u2 x1 0 0 x2 0 0 x3 1 0 x4 0 1 c = x1 x2 x3 x4 y1 1 0 0 0 y2 0 1 0 0 d = u1 u2 y1 0 0 y2 0 0
Continuous-time system.
Как видно, модель сформирована правильно. Можно начать некоторые ее преобразования.

6.1. Ввод и преобразования модели
275
Прежде всего, интересно найти передаточные функции созданной системы.
Очевидно, их должно быть 4 (ибо у нас 2 выхода и 2 входа). Для этого применим процедуру преобразования
tf
:
>> GYROtf=tf(GYROss)
Transfer function from input 1 to output... s^2
#1: ------------- s^4 + 100 s^2 10 s
#2: ------------- s^4 + 100 s^2
Transfer function from input 2 to output...
-10 s
#1: ------------- s^4 + 100 s^2 s^2
#2: ------------- s^4 + 100 s^2
Теперь преобразуем введенную
ss
-модель в
zpk
-модель при помощи проце- дуры
zpk
:
>> GYROzp=zpk(GYROss)
Zero/pole/gain from input 1 to output... s^2
#1: --------------- s^2 (s^2 + 100)
10 s
#2: --------------- s^2 (s^2 + 100)
Zero/pole/gain from input 2 to output...
-10 s
#1: --------------- s^2 (s^2 + 100) s^2
#2: --------------- s^2 (s^2 + 100)
Ввиду того, что первая (
ss
) модель GYROss была создана непосредственно процедурой-конструктором по заданным числовым данным, а последующие
(GYROtf и
Gyrozp) - путем преобразования уже созданной модели, будем назы- вать модель, созданную конструктором основной, а остальные - вспомогательны- ми. Отметим, что
ss
-модель в MatLAB можно создать и по системе дифференци- альных уравнений первого порядка, не разрешенных относительно производных, т.е. когда система описывается совокупностью уравнений вида:
E
dx
dt
A x B u
y C x D u

= ⋅ + ⋅
= ⋅ + ⋅



⎩⎪
,
(9)
где E - произвольная квадратная матрица размером (n*n), а n - порядок заданной системы дифференциальных уравнений. Для этого следует уже использовать не конструктор
ss,
а специальную процедуру
dss
, отличие которой от предыдущей лишь в том, что она требует задания не четырех, а пяти матриц, последней из ко- торых должна быть матрица Е.

6.1. Ввод и преобразования модели
276
В качестве примера рассмотрим уравнения того же гироскопа в виде
J
H
N
J
H
L
1 2
⋅ +
⋅ =
⋅ −
⋅ =



⎩⎪
&&
&
( )
&&
&
( ).
α
β
β
α
t
t
(10)
Вводя те же переменные (см. (3), (5)...(7)), получим систему уравнений в виде (9), где матрицы A и E будут иметь вид:
A
H
H
=













0 0 1 0 0 0 0 1 0 0 0 0 0 0
;
. (11)
E
J
J
=












1 0 0 0 0 1 0 0 0 0 0
0 0 0 1
2
Остальные матрицы - B, C и D будут прежними (8). Введем новые матрицы при таких значениях параметров - H=10, J
1
=2, J
2
=3:
>> H= 10; J1=2; J2=3;
>>
A=zeros(4);
A(1,3)=1; A(2,4)=1; A(3,4)=-H;
A(4,3)=H
A =
0 0 1 0 0 0 0 1 0 0 0 -10 0 0 10 0
>> E=eye(4); E(3,3)=J1; E(4,4)=J2
E =
1 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3
Теперь зададим
ss
-модель, пользуясь процедурой
dss
:
>> Gyross=dss(A,B,C,0,E) a = x1 x2 x3 x4 x1 0 0 1 0 x2 0 0 0 1 x3 0 0 0 -10 x4 0 0 10 0 b = u1 u2 x1 0 0 x2 0 0 x3 1 0 x4 0 1 c = x1 x2 x3 x4 y1 1 0 0 0 y2 0 1 0 0 d = u1 u2 y1 0 0 y2 0 0 e = x1 x2 x3 x4 x1 1 0 0 0 x2 0 1 0 0 x3 0 0 2 0 x4 0 0 0 3
Continuous-time system.

6.1. Ввод и преобразования модели
277
Как и ранее, создадим на этой основе вспомогательные
tf-
и
zpk-
модели:
>> Gyrotf=tf(Gyross)
Transfer function from input 1 to output...
0.5 s^2
#1: --------------- s^4 + 16.67 s^2 1.667 s
#2: --------------- s^4 + 16.67 s^2
Transfer function from input 2 to output...
-1.667 s
#1: --------------- s^4 + 16.67 s^2 0.3333 s^2
#2: --------------- s^4 + 16.67 s^2
>> Gyrozp=zpk(Gyross)
Zero/pole/gain from input 1 to output...
0.5 s^2
#1: ----------------- s^2 (s^2 + 16.67)
1.6667 s
#2: ----------------- s^2 (s^2 + 16.67)
Zero/pole/gain from input 2 to output...
-1.6667 s
#1: ----------------- s^2 (s^2 + 16.67)
0.33333 s^2
#2: ----------------- s^2 (s^2 + 16.67)
В предыдущих примерах за основу была принята
ss
-модель. Но в качестве основной можно выбрать и любую из двух других моделей. Возьмем, например, в качестве основной модель в передаточных функциях.
Система, описываемая уравнениями (10), если принять те же, что и ранее входные и выходные величины, имеет 4 передаточных функции, которые образу- ют матрицу передаточных функций размером (2*2). Каждый из столбцов этой матрицы содержит передаточные функции, соответствующие некоторой одной входной величине по всем выходным величинам. Определенная строка матрицы, наоборот, содержит передаточные функции какой-то одной выходной величины по всем входам системы. В целом матрица передаточных функций в рассматри- ваемом случае может быть представлена в виде:
W s
W s
W
s
W
s
W
s
( )
( )
( )
( )
( )
=






11 12 21 22
В соответствии с уравнениями (10) значения элементов этой матрицы рав- ны:
W
s
J
J J
s
H
11 2
1 2
2
( )
;
=


+
2
W
s
H
s J J
s
H
12 1
2 2
2
( )
(
)
;
= −



+

6.1. Ввод и преобразования модели
278
W
s
H
s J J
s
H
21 1
2 2
2
( )
(
)
;
=



+
W
s
J
J J
s
H
22 1
1 2
2
( )
=


+
2
. (12)
Чтобы ввести эти передаточные функции и создать на их основе
tf
-модель, следует вначале создать два массива ячеек
- массив ячеек размером (2*2) из векторов коэффициентов всех числителей передаточных функций;
- массив ячеек такого же размера из векторов коэффициентов знаменателей передаточных функций.
Для рассматриваемого случая это можно сделать так. Сначала создадим вектор коэффициентов общей части знаменателей:
[
]
V
J J
H
zn1 1
2 2
0
=
⋅ , ,
, затем - вектор дополнительного множителя в некоторых знаменателях:
[
]
V
= 1 0
,
Теперь создадим вектор коэффициентов второго знаменателя путем свертки этих двух векторов (это соответствует перемножению полиномов):
V
zn2
=
conv
(V
zn1
, V).
Сформируем массив
den
ячеек знаменателей по схеме: for k1=1:4 for k2=1:2 den(k1,k2)={V
zn1
}; end end den(1,2)={V
zn2
}; den(2,1)={V
zn2
}.
Переходя к определению массива ячеек
nom
числителя, можно записать его таким образом:
nom
= {J
2
, -H; H, J
1
}.
Теперь можно сформировать
tf
-модель, используя установленные матрицы ячеек числителей и знаменателей. Ниже приводится пример этого:
>> Vzn1=[J1*J2, 0, H^2]
Vzn1 =
6 0 100
>> V=[1, 0]
V = 1 0
>> Vzn2=conv(Vzn1,V)
Vzn2 = 6 0 100 0
>> for k1=1:2
for
k2=1:2
den(k1,k2)={Vzn1};
end
end
>> den(1,2)={Vzn2}; den(2,1)={Vzn2} den =
[1x3 double] [1x4 double]
[1x4 double] [1x3 double]
>> nom ={J2, -H; H, J1}
nom =
[ 3] [-10]

6.1. Ввод и преобразования модели
279
[10] [ 2]
>> gyrotf=tf(nom,den)
Transfer function from input 1 to output...
3
#1: -----------
6 s^2 + 100 10
#2: -------------
6 s^3 + 100 s
Transfer function from input 2 to output...
-10
#1: -------------
6 s^3 + 100 s
2
#2: -----------
6 s^2 + 100
Предостережение.
При манипуляциях или преобразованиях LTI-модели следует учитывать,
что:
1) три формы представления LTI-объектов не являются эквивалентными
при численных расчетах; в частности, точность вычислений с передаточными
функциями высокого порядка часто недостаточна; вы должны работать по
преимуществу со сбалансированными моделями пространства состояния и ис-
пользовать передаточные функции только для отображения на экране или для
интерпретации (расшифровки) результатов;
2) преобразования в формат передаточных функций может сопровож-
даться потерями точности; в результате, полюсы передаточной функции мо-
гут заметно отличаться от полюсов заданной
zpк
-модели или модели простран-
ства состояния (для проверки наберите
help roots
);
3) преобразования в пространство состояния не являются однозначно оп-
ределенными в случае одномерной системы и не гарантируют создания мини-
мальной конфигурации системы в случае многомерной системы; так, заданная в
пространстве состояния модель sys, при преобразовании
ss
(
tf
(sys))
может сформировать модель с другими матрицами пространства состояния
или даже с другим числом переменных состояния в многомерном случае; таким
образом, следует по возможности избегать преобразований моделей из одной
формы в другую и наоборот.
Итак, к процедурам создания
lti
-моделей относятся :
„ ss
- создает модель пространства состояния по заданным матрицам A,
B, C, D уравнений состояния системы;
„ dss
- создает аналогичную модель по описанию пространства состояния более общего вида, когда уравнения переменных состояния не разре- шены относительно производных;
„ tf
- создает модель по заданным передаточным функциям системы;
„ zpk
- создает модель по заданным нулям, полюсам и коэффициентам передачи системы;

6.1. Ввод и преобразования модели
280
„ filt
- создает модель по дискретным передаточным функциям, записан- ным в форме полиномов от
1

z
;
„ set
- присваивает значения некоторым другим полям LTI-объекта (та- ким, как названия входов и выходов, название системы и т.п.).
Указанные процедуры позволяют создавать как непрерывные модели , так и дискретные. В последнем случае к числу входных параметров процедуры следует добавить в конце значение параметра Ts - шага дискретизации, а вводимые значе- ния коэффициентов уже должны задавать параметры дискретных передаточных функций (для функций
tf
и
zpk
), либо матрицы конечно-разностных уравнений пространства состояния - при использовании процедур
ss
и
dss
. При использова- нии процедуры
filt
должны задаваться векторы коэффициентов числителя и зна- менателя дискретной передаточной функции, представленной в виде отношения полиномов от
. Приведем несколько примеров:
1

z
kzv1 = tf([1 4], [1 2 100])
Transfer function: s + 4
--------------- s^2 + 2 s + 100
kzv2 = tf([1 4], [1 2 100],0.01)
Transfer function: z + 4
--------------- z^2 + 2 z + 100
Sampling time: 0.01
kzv3 = tf([1 4], [1 2 100],'Variable','z^-1')
Transfer function:
1 + 4 z^-1
---------------------
1 + 2 z^-1 + 100 z^-2
Sampling time: unspecified
kzv4 =filt([1 4], [1 2 100])
Transfer function:
1 + 4 z^-1
---------------------
1 + 2 z^-1 + 100 z^-2
Sampling time: unspecified
Как следует из примеров, процедура
1   ...   26   27   28   29   30   31   32   33   ...   44


написать администратору сайта