Назад к материалам

построение дискретного наблюдателя в СДУ в Xcos

Реализация линейной динамической системы с дискретным наблюдателем в Xcos

построение дискретного наблюдателя в СДУ в Xcos

Итак, на данный момент читатель последовательно прошёл путь от создания простейшей блок-схемы Xcos, состоящей всего из трёх блоков, до визуального моделирования полноценных управляемых динамических систем, описываемых матричными уравнениями.

В настоящем параграфе будет затронута ещё одна задача математического моделирования – построение дискретного наблюдателя в системе дифференциальных матричных уравнений.

Данная задача особенно актуальна, так как при моделировании управляющего воздействия динамической системы, как бы удобно ни было управлять состоянием , его измерение, чаще всего не доступно. Поэтому на практике для управляемых динамических систем строится специальный наблюдатель , который сам по себе представляет динамическую систему.

Построение непрерывного наблюдателя

Построение системы наблюдения происходит так, чтобы на вход наблюдателя подавались значения , а на выходе формировался бы сигнал . При этом, матрицы системы наблюдения должны быть подобраны таким образом, чтобы разность стремилась бы к нулю не зависимо от выбранных начальных условий или самого вида наблюдателя. Отличительной особенностью наблюдателей такого рода, является устойчивость к возмущениям.

Отметим также, что при выборе коэффициентов усиления наблюдателя необходимо поддерживать баланс между скоростью и точностью сходимости моделируемого движения к программному и чрезмерной чувствительностью к начальным отклонениям.

Рассмотрим пример построения линейного наблюдателя для динамической системы, описываемой в пространстве состояний матричными дифференциальными уравнениями вида:

где - матрицы с постоянными коэффициентами.

Непрерывный наблюдатель в данном случае, строится следующим образом:

при этом, элементы матрицы усиления выбираются так, чтобы матрица была бы устойчивой, то есть, все собственные значения матрицы должны иметь отрицательные действительные части.
Построение матрицы становится очевидным, если в (1) раскрыть скобки:

Далее определнмся, почему требование устойчивости матрицы обеспечивает сходимость к нулю разности .

Введём обозначение , тогда . Из системы (1) имеем:

В уравнении (2), раскрывая скобки, получим:

Теперь вычислим :

Таким образом, приходим к однородной системе матричных дифференциальных уравнений с постоянными коэффициентами вида:

или

об устойчивость решения которой, можно судить по виду корней соответствующего характеристического уравнения .

Итак, с обоснованием корректности построения описанного непрерывного наблюдателя покончено, перейдём теперь к реализации блок-схемы Xcos.

Для моделирования системы (24) с непрерывным наблюдателем (25) потребуются блоки GENSIN_f и CLOCK_c с палитры «Источники сигналов и воздействий», блоки CSCOPE и END с палитры «Регистрирующие устройства», и блок CLSS с палитры «Системы с непрерывным временем».

Моделирование данной системы подразумевает задание матриц , которые используются в блоке CLSS. В нашем случае все элементы матриц некоторые случайные константы, поэтому мы можем их задать в контексте с помощью генератора случайных чисел с некоторыми поправками.

Для начала зададим размерности матрицы в контексте:

clc;
n = 3; m = 1;

Количество строк и столбцов матриц в контексте Xcos

и сгенерируем матрицу размерности nxn:

A = rand(n,n)

Для того, чтобы избежать экспоненциальной неустойчивости рассматриваемой системы, изменим матрицу так, чтобы каждый из её элементов, стоящих на главной диагонали, не превышал бы собственного значения с максимальной действительной частью .
Введём обозначение , тогда матрица будет вычисляться как . В контексте данное равенство реализуется следующим образом:

A = A  max(real(spec(A)))*eye();

где функция spec(A) – вычисляет собственные значения матрица, функция real() – выделяет действительную часть своего аргумента, функция max() вычисляет максимальное из поданных в неё значений, а eye() – генерирует единичную матрицу совместной размерности.

Далее сгенерируем матрицы совместных размерностей :

B = rand(n, 1);  C = rand(m, n);  D = zeros(m, 1);

И вектор-столбец случайных начальных условий:

X0 = rand(n, 1);

Для генерации матрицы усиления воспользуемся встроенной Scilab – функцией ppol(A,B,v), которая по заданным матрицам и вектору полюсов подбирает элементы матрицы так, чтобы собственные значения матрицы были бы полюсами.
Однако для нашего наблюдателя должно выполняться то же условие, но для уравнения , поэтому в контекст необходимо добавить строку:

K = ppol(A',C', -ones(X0))';

где символ «» означает транспонирование матрицы, а функция ones() возвращает матрицу составленную из единиц того же размера, что и вектор .

Теперь необходимо собрать все сгенерированные матрицы в систему, что делается с помощью функции syslin(dom,A,B,C [,D [,x0] ]), которая генерирует систему вида

соответственно, в контекст необходимо прописать:

SYST = syslin('c', A-K*C, [B,K], eye(A), zeros([B,K]));

После задания в контексте всех необходимых параметров системы, нужно перейти к редактированию внутренних параметров блока CLSS, где необходимо задать правильные матрицы:

Рисунок 101. Внутренние параметры блока CLSS при моделировании системы (1)-(2)
Рисунок 101. Внутренние параметры блока CLSS при моделировании системы (1)-(2)

Рисунок 101. Внутренние параметры блока CLSS при моделировании системы (1)-(2)

Блок схема, реализующая моделирование системы имеет несложный вид:

Рисунок 102а. Блок-схема системы с непрерывным наблюдателем
Рисунок 102а. Блок-схема системы с непрерывным наблюдателем

Рисунок 102а. Блок-схема системы с непрерывным наблюдателем

Результат моделирования представлен на рисунке 102(б):

Рисунок 102б. Графики 3-х фазовых переменных и двумерный наблюдатель
Рисунок 102б. Графики 3-х фазовых переменных и двумерный наблюдатель

Рисунок 102б. Графики 3-х фазовых переменных и двумерный наблюдатель

Построение дискретного наблюдателя

В связи с тем, что в параграфе упоминается наблюдатель дискретный, то вполне предсказуемым шагом является модернизация блок-схемы (рис. 102 а)) таким образом, чтобы использовать в ней дискретный наблюдатель.

Построение дискретного наблюдателя подчиняется тем же правилам, что непрерывного, основанных на получении полюсов в качестве собственных значений матрицы .

Поэтому алгоритм, прописанный на данный момент в контексте рабочей области, полностью удовлетворяет нашим требованиям. Остаётся только задать шаг дискретизации и дикретизировать полученную систему . Для этого добавьте в контекст строки:

dt = 0.2;
SYST_d = dscr(SYST, dt);
[Ad, Bd, Cd, Dd] = abcd(SYST_d);

где Scilab-функция dscr() производит дискретизацию непрерывной системы с указанным шагом , а встроенная функция abcd() возвращает 4 матрицы , использующиеся в поданной на вход дискретной системе и записывает их в соответствующие выходные матрицы .
В итоге контекст должен принять вид:

clc;
n=3; m=2;
A = rand(n,n); A = A - max(real(spec(A)))*eye();
B = rand(n,1); C = rand(m,n); D = zeros(m,1);
x0 = rand(n, 1);
K = ppol(A',C',-ones(x0))';
SYST = syslin('c', A-K*C, [B,K], eye(A), zeros([B,K]));
dt = 0.2;
SYST_d = dscr(SYST, dt);
[Ad, Bd, Cd, Dd] = abcd(SYST_d);

Для внедрения дискретного наблюдателя воспользуемся блоком

Иллюстрация
Иллюстрация

с палитры «Системы с дискретным временем». Кроме того нам понадобятся блоки MUX и DEMUX с палитры «Маршрутизация сигналов» и блок сумматора BIGSOM_f с палитры «Математические операции». Блок-схема реализующая математическое моделирование системы дифференциальных уравнений с дискретным наблюдателем, представлена на рис. 103

Рисунок 103. Реализация динамической системы с дискретным наблюдателем в Xcos
Рисунок 103. Реализация динамической системы с дискретным наблюдателем в Xcos

Рисунок 103. Реализация динамической системы с дискретным наблюдателем в Xcos

Внутренние параметры блока дискретной линейной системы DLSS представлены на рис. 104

Рисунок 104. Внутренние параметры блока DLSS при моделировании дискретизированной системы (1)-(2)
Рисунок 104. Внутренние параметры блока DLSS при моделировании дискретизированной системы (1)-(2)

Рисунок 104. Внутренние параметры блока DLSS при моделировании дискретизированной системы (1)-(2)

Результат моделирования линейной динамической системы с дискретным наблюдателем представлен на рис. 105.

Рисунок 105. Фазовые координаты и дискретныйнаблюдатель динамической системы
Рисунок 105. Фазовые координаты и дискретныйнаблюдатель динамической системы

Рисунок 105. Фазовые координаты и дискретныйнаблюдатель динамической системы