Лабораторная работа №8
Представление математической модели в пространстве состояний
СВ MATLAB существуют средства автоматического извлечения
линеаризованных уравнений в пространстве состояний из моделей Simulink. Поскольку наша цель – управление, то нам надо вывести на
выход все переменные состояния моделируемой системы. В качестве исследуемой математ ческой модели используем модель из предыдущейилабораторной работы [1].
Для того чтобы определить, какие состояния модели Simulink существуют, можно воспользоваться встроенным средством анализа,
вызвав его через меню Tools / Control design / Linear analysis в Simulink (рис. 55) [1, 2].
бА Д Рис. 55. Значения переменных состояния колебательнойИсистемы
В левой части появившегося окна Control and Estimation Tools Manager в дереве необходимо выбрать Workspace / Project - / Operation Points / Default Operating Point. Справа будут перечислены со-
стояния в таблице State: Value.
Для получения аналитической модели представим собранную в Simulink систему в виде подсистемы. Для этого подключим вместо
51
источника сигнала Signal Builder блок входа In1 из библиотеки Simulink / Sources. Подключим на выход интеграторов и вместо ос-
циллографа Scope блоки выходов Out1 из Simulink / Sinks. Номера выходов Portnumber (задаются в свойствах блока Out) зададим в полном соответствии с таблицей из Control and Estimation Tools Manager: вы-
Стемуи:
ход Integrator – выход 1, выход Integrator1 – выход 2, выход Joint Sensor – выход 3. Такая нумерация удобна, так как нам надо получить диагональную матр цу C модели в пространстве состояний [1, 2].
В результате проделанных действий получаем следующую сис-
Рис. 56. Структурная схема коле ательной системы в виде подсистемы
Для получения аналитической модели: матриц A,B,C,D модели
пространства состояний [1, 6] |
|
|
|
||||
|
бА |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
x A x B u; |
|
|
|
|
|
|
|
y C x D u |
|
|
|
необходимо использовать функцию linmod. Вызов функции: |
|||||||
|
|
|
|
|
Д |
|
|
[A,B,C,D] = linmod('ModelSub') |
|
|
|
||||
|
|
||||||
где ModelSub–имя модели (имя файла .mdl в текущем рабочем ката- |
|||||||
логе). |
|
|
|
|
|
И |
|
После вызова получаем матрицы: |
|
||||||
A = |
|
|
|
|
|
|
|
0 |
1.0000 |
|
0 |
0 |
|
|
|
0 |
0 |
0 |
|
0 |
|
|
|
0 |
0 |
0 |
1.0000 |
|
|
|
|
0 |
0 -1.0000 |
0 |
|
|
|
||
|
|
|
|
|
|
|
|
52
B=
0
1
0
-1 |
|
|
|
С |
|||
C = |
|
|
|
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
и0 |
|||
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
D = |
|
б |
|
0 |
|
||
|
|
|
|
0 |
|
|
|
0 |
|
|
|
рить. Измерять все иАне тре уется – некоторые состояния можно восстановить по значениям других. По матрицам A,C можно узнать, возможно ли это сделать в принципеД. Для этого служит функция obsv, вычисляющая матрицу наблюдаемости, если ее ранг равен числу со-
Синтез на людателя для оценки состояний по выходам
В реальности все состояния объекта управления сложно изме-
стояний n, то все состояния возможно восстановить. Соответствующий вызов obsv дает
значит, все состояния наблюдаемы – что очевидно, потому что C– диагональная.
Попробуем измерять только два состояния x 1 и x 3, изменив матрицу:
И

















Тест на наблюдаемость дает следующий результат:
rank(obsv(A,C))
ans =4
т.е. по измеряемым двум состояниям можно восстановить все 4.
53
Для этого необходимо синтезировать так называемый наблюдатель – это модель объекта управления, которая работает параллельно с ним и подключена к тому же входу u. Состояние наблюдателя – xˆ, его выход – yˆ.Уравнение динамики наблюдателя при D=0 записыва-
ются в виде [1] |
|
|
|
|
|
С |
|
|
|
|
|
|
|
|
|
|
|
|
xˆ A xˆ B u L (y yˆ) yˆ Cxˆ. |
(31) |
|||
Если обознач ть eˆ y yˆ |
, |
то динамика наблюдателя может |
|||
при |
|
|
|
||
|
|
|
|
|
|
быть зап сана через eˆ (A LC) e. |
|
||||
Так как |
y yˆ надо, что |
ыeˆ 0, то задача вычисления L – |
|||
это обеспечен е устойчивости на людателя, которая может быть ре-
когда наблюдательсобственноера отает ыстрее регулятора [1, 6]. Например, если вектор со ственных чисел для регулятора
шена методом размещения полюсов независимо от синтеза регулятора (выч слен я матр цы K).
Для с нтеза на людателя, сначала выберем минимальное абсо-
лютное |
значение λˆ, такое чтобы оно было больше абсо- |
лютной величины |
ˆ |
ственных чисел регулятора λ>>λ – это условие, |
P = [-1 -2 -3 -4]; А
то для наблюдателя мы можем выбрать
P_ = [-10 -12 -13 -14];
Наблюдатель описывается уравнениями
коде команд MATLAB.
|
|
|
|
|
T |
|
|
|
|
xˆ Aˆ |
xˆ Bˆ(u, y) ; |
(32) |
|
|
|
|
ˆ |
T |
|
|
|
|
|
|
|
||
|
|
yˆ |
Дˆ |
|||
|
|
Cxˆ |
D(u, y) |
xˆ, |
||
ˆ |
ˆ ˆ |
ˆ |
|
|
|
|
где матрицы A,B,C,D– соответственно переменные A , B , C , D в |
||||||
|
|
|
|
|
|
И |
На рис. 57 представлено сравнение моделей.
Управление моделью SimMechanics реализовано по полному вектору состояния, управление моделью в пространстве состояний (блок типа State-Space с именем Model_ss) – через наблюдатель (блок типа State-Space с именем Estimator).
Перед моделированием необходимо очистить Workspace и выполнить следующие команды [1, 6]:
54
n = 4; % число состояний
m = 2; % число наблюдаемых выходов k = 1; % число входов
%1. Все состояния наблюдаемы
С[A,B,C,D] = linmod('ModelSub'); % синтез регулятора
P = [-1 -2 -3 -4]; Kи= place (A, B, P);
% переменные для с нтеза на основе оптимизации k1 = K(1);
k2 = K(2);
k3 = K(3);
k4 = K(4); k = 1;
C_f = C; D_f = D; % сохраняем предыдущее представление
% 2. Наблюдаемы только x(1) и x(3) C = [1 0 0 0; 0 0 1 0];
D = [0; 0]; |
|
Д |
|||
|
|
|
|||
% синтез наблюдателябА |
|||||
P_ = [-10 -12 -13 -14]; % выбор собственных чисел (полюсов) |
|||||
L = place(A',C', P_)'; % синтез размещением полюсов |
|||||
% создание модели пространства состояний для наблюдателя |
|||||
L = |
|
И |
|||
B_ = [B L]; |
|
|
|
||
D_ = zeros(n,m+k); |
|
|
|
||
C_ = eye(n); |
|
|
|
||
A_ = A - L*C; |
|
|
|
||
|
В результате выполнения этих команд получаем матрицу L: |
|
|
||
24.9805 |
-1.4329 |
|
|
|
|
155.0787 -18.1644 |
|
|
|
||
-1.4092 |
24.0195 |
|
|
|
|
-17.8407 141.9214 |
|
|
|
||
55