Инструкция по выполнению работы

Курсовая работа

Оптимизация нелинейных систем

Цели работы

· освоение методов оптимизации нелинейных систем в среде Matlab

Задачи работы

· научиться копировать подсистемы из одной модели в другую

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

· научиться использовать пакет NCD (Nonlinear Control Design)

Оформление отчета

Отчет по контрольной работе выполняется в виде связного (читаемого) текста в файле формата Microsoft Word (шрифт основного текста Times New Roman, 12 пунктов, через 1,5 интервала, выравнивание по ширине). Он должен включать

· название предмета, номер и название контрольной работы

· фамилию и инициалы авторов, номер группы

· фамилию и инициалы преподавателя

· номер варианта

· краткое описание исследуемой системы

· результаты выполнения всех пунктов инструкции, которые выделены серым фоном (см. ниже): результаты вычислений, графики, ответы на вопросы.

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

Описание системы

В работе рассматривается система управления судном по курсу. Ее структурная схема показана на рисунке.

Структурная схема системы стабилизации судна на курсе

Линейная математическая модель, описывающая рыскание судна, имеет вид

      

где  – угол рыскания (угол отклонения от заданного курса),  – угловая скорость вращения вокруг вертикальной оси,  – угол поворота вертикального руля относительно положения равновесия, – постоянная времени, – постоянный коэффициент, имеющий размерность рад/сек. Передаточная функция от угла поворота руля к углу рыскания запишется в виде

.

Линейная модель привода (рулевой машины) представляет собой интегрирующее звено с передаточной функцией

       ,

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

,   .

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

,

В качестве управляющего устройства используется ПИД-регулятор с передаточной функцией

, где сек и сек. 

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

Базовый регулятор, построенный по линейной модели, выделен серым фоном. Сигнал  на его выходе представляет собой желаемый угол перекладки руля. Для блока нелинейной коррекции типа «насыщение» выбираются пределы, равные ограничениям на угол перекладки руля.

Если насыщения нет, разность сигналов  равна нулю, и обратная связь не работает; используется закон управления, синтезированный для линейной системы. Если сигнал  превышает допустимые пределы, разность  подается (со знаком «минус») на вход интегратора через усилитель. Таким образом, при насыщении сигнал на входе интегратора ослабляется тем сильнее, чем больше разность между желаемым и допустимым углами перекладки. Такой метод коррекции получил в литературе название anti - windup (противодействие «наматыванию»).

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

Инструкция по выполнению работы

Этап выполнения задания Команды Matlab
1. Сделайте свою папку рабочей папкой Matlab. ЛКМ по кнопке  справа от поля Current Directory
2. Создайте новый М-файл, в первой строчке наберите имя скрипта sysdata для загрузки исходных данных. Сохраните файл с именем lab6go.m и выполните его. File – New – M-file File – Save клавиша F5
3. Откройте окно рабочей папки. View – Current directory
4. Откройте модель, построенную в контрольной работе № 1. двойной щелчок на lab5.mdl
5. Сохраните модель в своей папке под именем lab6.mdl. File – Save as...
6. Откройте блок Нелинейная модель-Регулятор. Удалите линию, соединяющую вход блока с входом И-канала. выделить ЛКМ, нажать Delete
7. Скопируйте сумматор, расположите его перед интегратором и измените знак у второго входа на «минус». перетащить ПКМ |+- в поле List of signs
8. Скопируйте сумматор еще раз, разверните его на 180 градусов и измените расположение входов. перетащить ПКМ нажать Ctrl+I +-| в поле List of signs
9. Откройте блок Нелинейная модель-Привод и перетащите в окно Регулятор второй нелинейный блок (ограничение на угол перекладки руля). Разверните его на 180 градусов. перетащить ЛКМ нажать Ctrl+I  
10. Добавьте блок Gainиз группы Math Operations и установите коэффициент усиления, равный Kaw. Kaw в поле Gain
11. Соберите схему, показанную на рисунке. Скопируйте ее в отчет.
12. Добавьте в скрипт lab6go команду, устанавливающую начальное значение для Kaw. Сохраните скрипт и выполните его. Kaw = 1;

13. Далее мы сравним переходные процессы в этой системе с результатами моделирования линейной и исходной нелинейной систем. Закройте окна всех подсистем, кроме главного окна модели. Дайте блоку название Система с компенсацией и поменяйте цвет фона на светло-голубой (этим цветом будут изображаться на осциллографах соответствующие графики).

14. Скопируйте в новую модель подсистему Линейная модель из модели lab4.mdl и подсистему Нелинейная модель из модели lab5.mdl. открыть нужную модель, перетаскивание ЛКМ
15. Добавьте в модель мультиплексор (блок Mux из группы Signal Routing) и установите для него количество входов 3. двойной щелчок ЛКМ 3 в поле Number of inputs
16. Создайте копию мультиплексора и соберите схему по рисунку так, чтобы на каждом из осциллографов изображались по 3 сигнала с разных моделей. Входы f всех систем надо соединить с выходом блока Возмущение, а входы r – с выходом блока Заданный курс.
17. Перейдите в окно скрипта lab6go в редакторе. Добавьте строчки для запуска процедуры моделирования и для вывода графика, учитывая, что на каждой половине рисунка надо выводить по 3 графика, массивы phi и delta содержат по 4 столбца. Удобно скопировать и немного изменить команды для оформления графика из файла lab4graph.m. sim ('lab6') figure(1) ...

18. Запустите скрипт. После отладки сохраните скрипт на диске и скопируйте его в отчет. Скопируйте в отчет построенный график. Опишите полученный эффект.

19. Добавьте в основное окно модели усилитель (блок Gain из группы Math Operations) и установите коэффициент усиления, равный 1/phiZad. Этот (нормирующий) блок будет служить для того, чтобы на выходе установившееся значение было равно 1 (нормировка). View – Library Browser перетаскивание ЛКМ двойной щелчок по блоку 1/phiZad в поле Gain
20. Добавьте в модель блок NCD Outport из пакета NCD Blockset и соедините его через нормирующий усилитель (см. выше) с выходом phi системы с компенсацией насыщения. Сохраните схему в отчете.

21. Откройте блок NCD Outport. Цель оптимизации – выбрать некоторые коэффициенты системы так, чтобы переходный процесс оставался внутри черной зоны графика. Горизонтальные и вертикальные границы ограничений (красные полосы) можно сдвигать мышкой.
Полоса выделяется нажатием ЛКМ, при этом она становится белой. Кнопка Split позволяет разбить выделенную полосу на две независимых части. Нажав ПКМ на красной полосе, можно редактировать ограничение в числовом виде.

22. Сдвиньте верхнее ограничение так, чтобы ограничить перерегулирование примерно значением 10%. Правую границу первого блока сдвиньте примерно на время 60-65 сек.

23. Выберите пункт верхнего меню Optimization – Parameters и введите Kaw в поле Tunable variables (настраиваемые параметры). В поле Lower bound (нижняя граница) введите 0 (нуль).

24. Запустите процедуру оптимизации. Она может занимать несколько минут. Признаком окончания будет появление текста Optimization Converged Successfully в командном окне Matlab. ЛКМ по кнопке Start

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

26. Определите найденное оптимальное значение Kaw. Для этого надо ввести Kaw в командном окне Matlab. Запишите его в отчет и перенесите в скрипт lab6go. Kaw
27. Запустите скрипт lab6go на выполнение и скопируйте полученный график в отчет. клавиша F5
28. Определите перерегулирование и время переходного процесса, используя функцию overshoot. [si,Tpp] = overshoot(phi(:,1),...                 phi(:,4));
29. Измените в командном окне Matlab заданный угол курса на  и повторите моделирование. Скопируйте полученный график в отчет. Определите перерегулирование и время переходного процесса. в командном окне phiZad = 30; выделить нужные строки скрипта, нажать F9

30. Сделайте выводы о применении схемы с компенсацией насыщения.


Таблица коэффициентов

Вариант , сек ,рад/сек , сек , сек
16.0 0.06 1 1
16.2 0.07 2 2
16.4 0.08 1 3
16.6 0.07 2 4
16.8 0.06 1 5
17.0 0.07 2 6
17.2 0.08 1 1
17.4 0.07 2 2
17.6 0.06 1 3
17.8 0.07 2 4
18.0 0.08 1 5
18.2 0.09 2 6
18.4 0.10 1 1
18.6 0.09 2 2
18.8 0.08 1 3
19.0 0.07 2 4
19.2 0.08 1 5
19.4 0.09 2 6
19.6 0.10 1 1
18.2 0.0694 2 6

 

Контрольные вопросы к защите

1. См. все вопросы к работам № 1– 5.

2. Пусть линеаризованная система устойчива. Может ли система стать неустойчивой при учете насыщения привода? На каких режимах это особенно опасно?

3. Является ли примененный способ коррекции линейным или нелинейным? Почему?

4. Как работает регулятор, если сигналы не выходят за допустимые пределы? Почему (докажите по схеме)?

5. Что такое anti-windup?

6. Объясните действие блока Gain.

7. Как скопировать блок из одной модели в другую?

8. Как изменить число входов мультиплексора?

9. Зачем нужен нормирующий усилитель?

10. Как нужно подключать блок NCD Outport?

11. Как устанавливать ограничения на переходную функцию?

12. Как установить пределы для поиска решения в блоке NCD Outport?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: