суббота, 9 апреля 2011 г.

Задание на лабу №5 и пример решения.

Предлагается решить задачу управления нелинейной системой из предыдущей лабораторной работы. Регулятор синтезируется за два этапа: производится линеаризация системы по обратной связи -- нелинейная система преобразуется в линейную с помощью линеаризующего преобразования координат, и далее решается задача управления линейной системой любым известным методом (ПИД-регулятор, размещение полюсов, LQG-регулятор и т.д.).

Рассмотрим решение на примере перевернутого маятника.



1. Линеаризация системы по обратной связи.

Еще раз модель маятника в аффинной форме $\dot x = f(x) + g(x)u$, $y = h(x)$:

$$\dot x = \begin{pmatrix} x_2 \\ \frac{g}{l} \sin x_1 \end{pmatrix} + \begin{pmatrix} 0 \\ -\frac{1}{l} \cos x_1 \end{pmatrix}u$$
$$y = x_1$$

Дифференцируя дважды выход $y$, получаем

$$\ddot y = \dot x_2 = \frac{g}{l} \sin x_1 -\frac{1}{l} \cos x_1 u $$

Подстановка

$$u = u(v,x) = \frac{\frac{g}{l} \sin x_1 - v}{\frac{1}{l} \cos x_1}$$

трансформирует исходную нелинейную систему в линейную:

$$\ddot y = v$$

Линеаризация не определена в точках $\Theta = \pm \pi/2$, поскольку знаменатель $u(v,x)$ обращается в 0. Исходная система в этих точках неуправляема, поэтому сингулярности линеаризации имеют исключительно физическую природу: чем ближе положение маятника к горизонтали, тем тяжелее им управлять.

С практической точки зрения известно, что система может отрабатывать траектории, переходящие через положения $\pm \pi/2$, например $\Theta(t) = \omega t$ (круговое вращение относительно точки закрепления). Кроме того, бесконечность при делении на 0 может пониматься как машинная бесконечность -- очень большое число. В данном случае, значение $u(v,x)$ ограничено в объекте управления значением $u_{max}$ в 10 g, поэтому мы можем определить линеаризующее преобразование $u(v,x)$ во всей фазовой плоскости.

Для того, чтобы получить линеаризующее преобразования автоматически, можно воспользоваться этим MATLAB-скриптом (также требуется еще этот .m-файл). Использование очень просто: надо положить оба .m-файла вместе, в начале Symbolic.m задать в соответствии с комментариями число входов и состояний модели, функции $f(x)$, $g(x)$, $h(x)$. После запуска скрипт печатает в консоль MATLAB линеаризующую подстановку и дополнительную информацию.


2. Моделирование полной линеаризации по обратной связи в Simulink

За основу возьмем модель перевернутого маятника в Simulink из предыдущей работы:



Добавим в модель еще один блок типа Embedded MATLAB Function для вычисления линеаризующего преобразования координат. В свойствах блока введем текст функции $u(v,x)$:



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



Промоделировав реакцию системы на ступенчатое воздействие, получаем типичную реакцию линейной системы (двойного интегратора $\ddot y = v$) -- линейное и квадратичное нарастание $x_2$ и $x_1$:




3. Решение задачи управления.

Решим задачу регулирования углового положения маятника. Поскольку система от $v$ до $y$ -- линейна, то задача управления может быть решена линейным ПИД-регулятором.

Соберем следующую схему, аналогичную схеме из предыдущей работы, за исключением того, что имеется источник единичного сигнала и управление осуществляется по сигналу обратной связи $e = y - r = x_1 - r$ (стандартное включение ПИД-регулятора):



Далее аналогично определим переменные, являющиеся параметрами ПИД-регулятора, введя в командной строке

Kp = 10; Ki = 0; Kd = 0;

и вписав в свойствах ПИД-регулятора в полях Proportional (P), Integral (I), Derivative (D) соответственно имена переменных Kp, Ki, Kd. Также добавим эти переменные как Tuned parameters в блоке Signal Constraint, ограничив их снизу значением 0. После запуска процесса оптимизации, получаем множество реакций в окне Signal Constraint, среди которых по окончанию поиска будет оптимальная:



Моделирование системы с полученными параметрами регулятора дает искомую реакцию на выходе:



Важно заметить, что полученный регулятор решает задачу управления не только в окрестности отдельной точки фазового пространства (как в предыдущей лабораторной работе), а во всей рабочей области. Например, если взять $r = 0$ (установка маятника в верхнее вертикальное положение), то регулятор также выведет систему в заданное положение:




Файл модели Simulink с решением (требуется задание параметров ПИД-регулятора, как это описано выше).

3 комментария:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. Уважаемые, сможете ли вы мне объяснить это, пожалуйста : "С практической точки зрения известно, что система может отрабатывать траектории, переходящие через положения +-pi/2, например theta = sin(wt)". По моему, это не правильно, так как если функция синус не когда не равна +-pi/2 для вещественных аргументов.
    Жду ваш ответ!!!
    Спасибо огромное.

    ОтветитьУдалить
  3. В военное время значение синуса может достигать и четырех))
    Спасибо за замечание! Исправил. Там не нужен синус. Описко.

    ОтветитьУдалить