Материал: 2158

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Лабораторная работа №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

C = [1 0 0 0; 0 0 1 0]; D = [0; 0];
rank(obsv(A,C)) ans =4

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

Источник: https://studfile.net/preview/16408215/