ЛАБОРАТОРНАЯ РАБОТА №6
Цель работы: освоение методов моделирования нелинейных систем автоматического управления.
Постановка задачи: Нелинейными называют системы, которые содержат хотя бы одно звено, характеристики которого описываются различными нелинейностями, т.е. функциями, не допускающими линеаризацию (например, ломаные или разрывные функции).
Необходимо:
1. Построить и отредактировать модель системы с подсистемами;
2. Добавить в схему нелинейное звено типа «насыщение» и определить, как изменятся характеристики системы.
Теоретические сведения
Основные виды нелинейных звеньев:
1. звено релейного типа;
2. звено с кусочно-релейной характеристикой;
3. звено с криволинейной характеристикой любого очертания;
4. звено, уравнение которого содержит произведение переменных или их производных и другие их комбинации;
5. нелинейный импульсный элемент;
6. логическое звено;
7. звенья переменной структуры.
В пакете Simulink модели нелинейных звеньев представлены в группе Discontinuities:
Saturation – насыщение, в параметрах задаются верхний и нижний пределы (Upper limit и Lower limit). | |
Dead zone –нечувствительность, «мертвая зона». В параметрах задаются пределы нечувствительности (Start of dead zone и End of dead zone). | |
Rate Limiter –ограничитель скорости изменения сигнала, в параметрах задаются пределы на скорость увеличения (Rising slew rate) и на скорость уменьшения (Falling slew rate). | |
Relay –реле, в параметрах задаются точки переключения (Switch on point и Switch off point), в также величины сигналов в режимах «включено» (Output when on) и «выключено» (Output when off). | |
Backlash –люфт, «мертвый ход». В параметрах задаются величина мертвого хода (Deadband width) и начальное значение выхода (Initial output). | |
Coulomb and Viscous Friction –кулоновское и вязкое трение. |
Добавляя блок с нелинейной функцией в исходную линейную систему стабилизации можно получить громоздкую схему, работать с которой неудобно. Чтобы не перегружать схемы, можно объединять блоки в подсистемы. Проще всего выделить нужные блоки мышкой и нажать клавиши Ctrl+G (или выбрать пункт меню Edit – Create subsystem). На основной схеме подсистема изображается как блок типа Subsystem. Входы подсистемы обозначаются блоками In, а выходы – блоками Out.
Для сравнения линейной и нелинейной систем желательно отобразить графики переходных процессов на одном осциллографе. В этом случае используют блок Mux (мультиплексор) из группы Signal Routing.
При работе в Matlab часто для получения нужного результата надо ввести последовательно несколько команд. Если выяснится, что в какой-то команде была сделана ошибка или нужно изменить исходные данные, все команды придется вводить снова. Чтобы не набирать их вручную, можно записать всю последовательность команд на диск в виде текстового файла (М-файла с расширением .m), а затем выполнять его, вызывая по имени. Такой файл называется скриптом.
Скрипт – это программа, которая представляет собой список команд на языке системы Matlab. Скрипты можно создавать и редактировать в любом простейшем текстовом редакторе (например, в Блокноте), однако удобнее всего использовать встроенный редактор Matlab, в котором есть подсветка синтаксиса (команды, символьные строки, комментарии и другие элементы программы выделяются разными цветами).
В М-файле перечисляются последовательно все необходимые команды. Точка с запятой в конце команды подавляет вывод результата на экран. Можно располагать в одной строке несколько команд, разделяя их запятой (если нужен вывод результата на экран) или точкой с запятой. Если надо перенести длинную команду на следующую строчку, в конце строки ставится троеточие.
Комментарием считается все, что расположено справа от знака % до конца строки. Его можно ставить в любом месте строки, например, справа от команды Matlab.
Для вызова скрипта надо набрать его имя в командном окне Matlab и нажать клавишу Enter. Запустить скрипт можно непосредственно из окна редактора Matlab, нажав на клавишу F5. Можно выполнить не весь скрипт, а только некоторые строки – их нужно выделить и нажать клавишу F9. Можно расположить два окна (редактор и командное окно Matlab) рядом так, чтобы они не перекрывали друг друга. Тогда при выполнении скрипта (или отдельных команд) сразу будет виден результат.
Если в командах скрипта есть ошибки (или они возникли при выполнении), соответствующие сообщения выводятся в командное окно Matlab.
Описание системы
Структурная схема системы стабилизации с нелинейным элементом представлена на рис. 1
Рис. 1. Система стабилизации с нелинейным элементом.
Последовательность выполнения работы
1. Откройте модель, построенную в лабораторной работе №5. Выделите регулятор и преобразуйте его в подсистему (Edit – Create subsystem). Дайте подсистеме имя «регулятор » и выберите для нее фоновый цвет. Определите для входа и выхода этого блока названия ε и u.
2. Аналогично постройте подсистему «привод» с входом u и выходом delta и подсистему «объект» с входами f и delta и выходом phi. Сохраните модель.
3. Выделите все блоки, кроме источников сигналов и осциллографов. Создайте подсистему Линейная система с входами y0 (задание) и f (возмущение) и выходами phi и delta.
4. Скопируйте блок Линейная система и измените его имя на Нелинейная система. Подключите к входам нового блока те же сигналы (задание и возмущение), что и для первого блока. Установите для блока линейной системы желтый фоновый цвет, а для нелинейной – фиолетовый (Format – Backgraund color).
5. Откройте подсистему «привод » в нелинейной системе. Удалите соединительные линии. Измените передаточную функцию на . Перетащите в окно модели блок Sum из группы Math Operations. Измените его так, чтобы организовать отрицательную обратную связь. Перетащите в окно модели два блока Saturation (насыщение) из группы Discontinuities. Расположите один блок перед интегратором (ограничение по скорости), второй – после (ограничение по степени открытия).
6. Введите нужные пределы допустимых значений, так чтобы скорость была не более 3 единиц в секунду, а степень открытия – не более 30%. Соедините блоки нужным способом. Сохраните модель.
7. Закройте лишние окна и перейдите в главное окно модели. Освободите оба осциллографа от связей, перетащив их вправо при нажатой клавише Shift. Перетащите в окно модели два блока Mux (мультиплексор) из группы Signal Routing. Эти блоки служат для объединения сигналов. Подайте на один из осциллографов оба управляющих сигналов (от линейной и нелинейной системы), а на другой – оба управляющих сигнала. Сохраните модель.
8. Установите y0 = 10 и f = 0. Выполните моделирование и посмотрите результаты. Жёлтый график показывает изменение первого входа осциллографов – (линейная система), фиолетовый – второго (нелинейная система).
9. Создайте новый М – файл (File – New – M – file).
10. В окне редактора введите команды для вывода графиков переходных процессов по курсу. Теперь массив phi содержит 3 столбца: время и сигналы с двух входов осциллографа (выходы линейной и нелинейной системы). Весь текст справа от знака % считается комментарием. Третий параметр команды plot означает цвет: ‘b’ – синий, ‘g’ – зеленый, ‘r’ – красный и т.д. (см. справку по этой команде). Команда hold on означает, что не надо стирать старый график, hold off – надо:
figure(1); % открыть рис. 1
subplot (2, 1, 1);
plot(phi (:,1),phi (:,2), 'b');
hold on;
plot(phi (:,1), phi(:,3), 'g');
hold off;
legend('Линейная система',...
'Нелинейная система')
11. Запустите файл (скрипт) на выполнение (F5). Если график не появился на экране, смотрите сообщения об ошибках в командном окне Matlab.
12. Измените величину задания на 90 и снова проведите моделирование.
13. Объясните, почему получилось такое существенное расхождение между линейной и нелинейной моделями? Как теперь нелинейности влияют на результат?
Методический пример
Исследуется нелинейная система управления, структурная схема которой показана на рисунке 1.
Передаточная функция объекта:
, где
– постоянная времени, – коэффициент усиления объекта.
Привод приближенно моделируется как интегрирующее звено
,
охваченное единичной отрицательной обратной связью.
Для измерения регулируемой координаты используется измерительная система, математическая модель которой записывается в виде апериодического звена первого порядка с передаточной функцией:
.
Исследуются переходные процессы в системе при использовании ПД-регулятора
,
и ПИД-регулятора
.
Модель системы управления с выделенными подсистемами
Нелинейная модель привода:
Нижний и верхний пределы насыщения
блок Saturation: от до
блок Saturation1: от до
Структурная схема системы для сравнения линейной и нелинейной моделей:
Скрипт для построения и оформления графиков
close(1);
figure(1);
subplot(2,1,1);
...
set(h(1),'LineWidth',1.5)
set(h(2),'LineWidth',1.5)
Контрольные вопросы
1. Как построить подсистему из нескольких существующих блоков модели?
2. Сколько входов и выходов может иметь подсистема?
3. Как редактировать подсистему?
4. Как изменить названия входов и выходов подсистемы?
5. Объясните структуру нелинейной модели привода.
6. Почему в нелинейной модели нельзя использовать общую передаточную функцию линейной модели привода?
7. Объясните назначение блока Mux.
8. Что такое скрипт в среде Matlab?
9. Что означает знак % внутри скрипта?
10. Что означает третий параметр при вызове функции plot?
11. Что означают команды hold on и hold off?
12. Как запустить скрипт на выполнение?
Таблица коэффициентов
Вариант | , сек | Вариант | , сек | ||
1. | 0.06 | 16.0 | 2. | 0.06 | 17.6 |
3. | 0.07 | 16.2 | 4. | 0.07 | 17.8 |
5. | 0.08 | 16.4 | 6. | 0.08 | 18.0 |
7. | 0.07 | 16.6 | 8. | 0.09 | 18.2 |
9. | 0.06 | 16.8 | 10. | 0.10 | 18.4 |
11. | 0.07 | 17.0 | 12. | 0.09 | 18.6 |
13. | 0.08 | 17.2 | 14. | 0.08 | 18.8 |
15. | 0.07 | 17.4 | 16. | 0.07 | 19.0 |