Решение алгебраических уравнений и систем solve 2 страница
Для нахождения полюсов передаточной функции f можно использовать функцию:
>> p = pole ( f )
Вызов функции:
>> [w0,zeta,p] = damp ( f )
позволяет найти не только полюса p, но также соответствующие им собственные частоты w0и коэффициенты демпфирования zeta в виде массивов.
Нули передаточной функции f вычисляются как
>> z = zero ( f );
Устойчивость системы не зависит от расположения нулей, но они существенно влияют на переходные процессы. Команда:
>> pzmap ( f );
строит карту расположения нулей (они обозначаются кружками) и полюсов (крестики) системы на комплексной плоскости.
Передаточные функции типовых звеньев приведены в таблице 2 [6]:
На практике часто требуется найти эквивалентную передаточную функцию, которую можно получить путем сворачивания звеньев с использованием следующих правил.
При последовательном соединении звеньев выходная величина каждого предыдущего звена является выходной величиной для последующего звена (Рисунок 16, а).
Передаточная функция последовательно соединённых звеньев равна произведению передаточных функций отдельных звеньев (Рисунок 16а) [6]:
(29)
Таблица 2- Передаточные функции типовых звеньев
№ п.п. | Название звена | ПФ звена |
Интегрирующие (И) | ||
Дифференцирующие (Д) | ||
Усилительное (У) (безынерционное) | ||
Апериодическое 1-го порядка (А) (инерционное) | ||
Апериодическое 2-го порядка (А2) (все корни вещественные) | , | |
Колебательное (К) | , ζ < 1. | |
Консервативное (КОН) | ||
Интегрирующие с запаздыванием (реальное интегрирующие) (ИЗ) | ||
Дифференцирующее с запаздыванием (реальное дифференцирующее) (ДЗ) |
Параллельное соединение звеньев – соединение, при котором входная величина является общей для всех звеньев (Рисунок 1, б). Передаточная функция параллельно соединённых звеньев равна сумме передаточных функций отдельных звеньев [6]:
(30)
Встречно – параллельное соединение звеньев, в состав которого входит положительная или отрицательная обратная связь (Рисунок 16, в). Передаточную функцию для такого соединения звеньев определяют по формуле [6]:
(31)
а-последовательное; б-параллельное; в- встречно - параллельное
Рисунок 16- Соединение звеньев
Для получения эквивалентной передаточной функции в среде Matlab нужно ввести требуемые функции с помощью команды tfи произвести необходимые преобразования по формулам 29 – 31.
Основная часть команд вводится в командном окне среды Matlab. Команды, которые надо применять в других окнах, обозначены иконками соответствующих программ. Пример выполнения задания рассмотрим на примере передаточной функции:
(32)
5 Выполнение анализа динамической системы в среде Matlab
Этапы выполнения анализа динамической системы приведены в таблице 3
Таблица 3 -Этапы выполнения анализа динамической системы
Этап выполнения задания | КомандыMatlab |
1. Очистите рабочее пространство Matlab (память). | clear all |
2. Очистите окно Matlab. | clc |
3. Посмотрите краткую справку по команде tf. | help tf |
4. Определите адрес файла, который выполняет эту команду. | which('tf') |
5. Введите передаточную функцию как объект tf. | n = [n2 n1 n0] d = [1 d2 d1 d0] f = tf ( n, d ) |
6. Проверьте, как извлечь из этого объекта числитель и знаменатель передаточной функции. | [n1,d1] = tfdata ( f, 'v' ) |
7. Найдите нули и полюса передаточной функции. | z = zero ( f ) p = pole ( f ) |
8. Найдите коэффициент усиления звена в установившемся режиме. | k = dcgain ( f ) |
9. Определите полосу пропускания системы (наименьшую частоту, на которой АЧХ становится меньше, чем дБ). | b = bandwidth ( f ) |
10. Постройте модель системы в пространстве состояния. | f_ss = ss ( f ) |
11. Сделайте так, чтобы коэффициент прямой передачи звена был равен 1. | f_ss.d = 1 |
12. Найдите новый коэффициент усиления звена в установившемся режиме. | k1 = dcgain ( f_ss ) |
13. Как связаны коэффициенты и ? Почему? | |
14. Постройте модель исходной системы в форме «нули-полюса». | f_zp = zpk ( f ) |
15. Проверьте, какие переменные есть в рабочем пространстве. | who или whos (в чем разница?) |
16. Постройте на графике расположение нулей и полюсов системы. | pzmap ( f ) |
17. Определите коэффициенты демпфирования и собственные частоты для всех элементарных звеньев (первого и второго порядка). | [wc,ksi,p] = damp ( f ) |
18. Запустите модуль LTIViewer. | ltiview |
19. Загрузите модель f. | File – Import |
20. Постройте импульсную характеристику (весовую функцию) этой системы. | ПКМ – Plot Types - Impulse |
21. Загрузите модель f_ss. | File – Import |
22. Проверьте, построена ли импульсная характеристика второй системы? | ПКМ – Systems |
23. Отключите систему f. Почему одинаковы построенные импульсные характеристики разных систем? | ПКМ – Systems |
24. Подключите обе системы. | ПКМ – Systems |
25. Постройте переходные характеристики систем. | ПКМ – Plot Types – Step |
26. Сделайте, чтобы на графике для каждой функции были отмечены:
| ПКМ – Characteristics:
|
27. Щелкая мышью по меткам-кружкам, выведите на экран рамки с численными значениями этих параметров и расположите их так, чтобы все числа были видны. | |
28. Экспортируйте построенный график в отдельное окно. | File – Print to Figure |
29. Скопируйте график в буфер обмена в формате векторного метафайла. | print -dmeta |
30. Вставьте график из буфера обмена в отчет (Microsoft Word). | ПКМ - Вставить |
31. Закройте окно LTIViewer. | |
32. Создайте массив частот для построения частотной характеристики (100 точек в интервале от до с равномерным распределением на логарифмической шкале). | w = logspace(-1, 2, 100); |
33. Рассчитайте частотную характеристику исходной системы … | r = freqresp ( f, w ); r = r(:); |
34. … и постройте ее на осях с логарифмическим масштабом по оси абсцисс. | semilogx ( w, abs(r) ) |
35. Скопируйте график в буфер обмена в формате векторного метафайла. | print -dmeta |
36. Вставьте график из буфера обмена в отчет (Microsoft Word). Объясните, где на графике можно найти коэффициент усиления в статическом режиме и как определить полосу пропускания системы. | ПКМ – Вставить |
37. Закройте все лишние окна, кроме командного окна Matlab. | |
38. Постройте сигнал, имитирующий прямоугольные импульсы единичной амплитуды с периодом 4 секунды (всего 5 импульсов). | [u,t] = gensig('square',4); |
39. Выполните моделирование и постройте на графике сигнал выхода системы f при данном входе. | lsim (f, u, t) |
40. Скопируйте график в буфер обмена в формате векторного метафайла. | print -dmeta |
41. Вставьте график из буфера обмена в отчет (Microsoft Word). | ПКМ – Вставить |
6 Создание моделей в среде Simulink
Пакет Simulink предназначен для моделирования систем. Вся модель строится из блоков, имеющих входы и выходы. Существует библиотека стандартных блоков, кроме того, можно создавать свои собственные блоки любой сложности.
Существует две группы специальных устройств – источники сигналов (Sources) и устройства вывода (Sinks).
Блоки имеют названия. Для того, чтобы изменить название, надо щелкнуть по нему ЛКМ и отредактировать текст.
Каждый блок имеет свои настраиваемые свойства. Для их изменения надо дважды щелкнуть на блоке и изменить нужные значения в диалоговом окне.
Для того, чтобы повернуть блок на 90 градусов, надо выделить его и нажать клавиши Ctrl+R. Комбинация Ctrl+I позволяет выполнить зеркальное отражение входов и выходов.
Верхнее меню Formatпредназначено для изменения оформления выделенного блока. Также для этой цели можно использовать контекстное меню ПКМ – Format. Для выделенного блока можно изменить цвет текста и линий (Foreground color), цвет фона (Background color), вывести тень (Show drop shadow), переместить название на другую сторону (Flip name).
Для выделения одного блока или соединительной линии надо щелкнуть ЛКМ по нужному элементу. Для того, чтобы выделить несколько блоков, надо «обвести» их при нажатой ЛКМ. Клавиша Delete удаляют выделенную часть. Чтобы скопировать блок (или выделенную часть), надо перетащить его при нажатой правой кнопке мыши (ПКМ).
Блоки соединяются линиями связи, по которым распространяются сигналы. Для того, чтобы соединить блоки, надо щелкнуть ЛКМ по источнику сигнала и затем, при нажатой клавише Ctrl, по блоку-приемнику. Можно также протянуть мышкой линию связи между нужными выходом и входом.
Чтобы подать один сигнал на два блока (сделать «развилку»), надо сначала создать одну линию обычным способом. Чтобы провести вторую линию, следует нажать правую кнопку мыши на линии в точке развилки и протащить линию ко второму блоку. Модель можно скопировать в буфер обмена в виде растрового рисунка. Для этого в окне модели надо выбрать в верхнем меню пункт Edit – Copy model to clipboard. Предварительно лучше уменьшить размеры окна до минимальных, чтобы не было белых полей.
Для того, чтобы запустить моделирование, надо щелкнуть ЛКМ по кнопке на панели инструментов. Эта же кнопка позволяет остановить моделирование при необходимости. Параметры моделирования (метод интегрирования, обработка ошибок) устанавливаются с помощью окна Simulation – Parameters. Самые важные параметры – это время моделирования (Stop time) и метод численного интегрирования уравнений (Solver options). Основные источники сигналов (Sources) приведены в таблице 4.
Таблица 4 - Основные источники сигналов
Constant – сигнал постоянной величины. | |
Step – ступенчатый сигнал, меняется время скачка (Step Time), начальное (Initial Value) и конечное значение (Final Value). | |
Ramp– линейно возрастающий сигнал с заданным наклоном (Slope). Можно задать также время начала изменения сигнала (Start Time) и начальное значение (Initial Value). | |
Pulse Generator – генератор прямоугольных импульсов, задаются амплитуда (Amplitude), период (Period), ширина (Pulse Width, в процентах от периода), фаза (Phase Delay). | |
Repeating Sequence –последовательность импульсов, их форма задается в виде пар чисел (время; величина сигнала) | |
Sine Wave– синусоидальный сигнал, задается амплитуда (Amplitude), частота (Frequency), фаза (Phase) и среднее значение (Bias). | |
Signal Builder – построитель сигналов, позволяющий задавать форму сигнала, перетаскивая мышью опорные точки. | |
Random Number – случайные числа с нормальным (гауссовым) распределением. Можно задать среднее значение (Mean Value), дисперсию (Variance), период изменения сигнала (Sample Time). | |
Uniform Random Number– случайные числа с равномерным распределением в заданном интервале от Minimumдо Maximum. | |
Band Limited White Noise– случайный сигнал, ограниченный по полосе белый шум (имеющий равномерный спектр до некоторой частоты). Блок используется как источник белого шума для моделей непрерывных систем. Задается интенсивность (Noise Power) и интервал дискретизации (Sample Time), в течение которого удерживается постоянное значение сигнала. Чем меньше интервал, тем точнее моделирование, однако больше вычислительные затраты. |
Основные устройства вывода (Sinks) приведены в таблице 5
Таблица 5 – Основные устройства вывода
Display– цифровой дисплей, показывает изменение входного сигнала в цифровом виде. | |
Scope –осциллограф, показывает изменение сигнала в виде графика, позволяет передавать данные в рабочую область Matlab для последующей обработки и оформления. |
Линейные системы (Continuous) приведены в таблице 6
Таблица 6 – Линейные системы
Transfer Fcn– передаточная функция, в параметрах задаются числитель (Numerator) и знаменатель (Denominator) в виде полиномов. | |
State Space– модель в пространстве состояний, в параметрах задается четверка матриц, определяющих модель, и начальные условия для вектора состояния (Initial conditions). | |
Zero-Pole– модель в форме «нули-полюса», в параметрах задаются массивы нулей (Zeros), полюсов (Poles), а также коэффициент усиления (Gain). | |
Integrator– интегратор с возможностью установки начальных условий (Initial condition), а также пределов насыщения (Lower saturation limit и Upper saturation limit). Когда сигнал выхода выходит за границы, определяемые этими пределами, интегрирование прекращается. | |
Derivative -Блок вычисления производной, используется как дифференцирующее звено. Значение входного сигнала блока до начала расчета считается равным нулю. Начальное значение выходного сигнала также полагается равным нулю. |
Часто используемые блоки приведены в таблице 7
Таблица 7 – Часто используемые блоки
Gain– усилитель, задается коэффициент усиления (Gain). | |
Sum– сумматор, используется для сложения и вычитания входов. Параметр List of signs задает количество входов, их знаки («+» для сложения и «–» для вычитания). Промежутки между входами (обозначаются знаком |). | |
Trigonometric Function– тригонометрическая функция. | |
Manual Switch– ручной переключатель, позволяет двойным щелчком переключать выход на один из двух входных сигналов. | |
Mux– мультиплексор, объединяет несколько сигналов в один «жгут» (векторный сигнал), в параметрах задается число входов (Number of Inputs). | |
Demux– демультиплексор, позволяет «разбить» векторный сигнал на несколько скалярных, в параметрах задается число выходов (Number of Outputs). |
Блок осциллографа Scope
В окне блока Scope(Рисунок 17)изображается график изменения входного сигнала. Если вход соединен с выходом мультиплексора, сразу строится несколько графиков (по размерности входного «жгута»).
Рисунок 17 – Окно осциллографа Scope
По умолчанию на оси ординат используется диапазон от -5 до 5. Если этот вариант не подходит, выбрать масштаб автоматически (так, чтобы весь график был виден) можно с помощью кнопки . Соседняя кнопка сохраняет эти настройки для следующих запусков.
Кнопка открывает окно настроек, причем наиболее важные данные содержатся на вкладке Data history. Если не сбросить флажок Limit data points, в памяти будет сохраняться только заданное число точек графика, то есть, при большом времени моделирования начало графика будет потеряно.
Отметив на этой же странице флажок Save data to workspace можно сразу передать результаты моделирования в рабочую область Matlab для того, чтобы их можно было дальше обрабатывать, выводить на графики и сохранять в файле. Поле Variable name задает имя переменной в рабочей области, в которой сохраняются данные. В простейшем случае выбирается формат Array (в списке Format). Это означает, что данные будут сохраняться в массиве из нескольких столбцов (первый столбец – время, второй – первый сигнал, третий – второй сигнал и т.д., по порядку входов мультиплексора).
Оформление графиков
Для создания нового окна для рисунка в Matlab используется команда
>> figure(1);
Вместо единицы можно ставить любой номер рисунка. Если рисунок с таким номером уже есть, он становится активным и выводится на первый план. Если такого рисунка нет, он создается и становится активным. Matlab
В Matlab есть возможность строить несколько графиков на одном рисунке. Иначе говоря, рисунок можно разбить на «клетки», в каждой из которых строится отдельный график. Для этого надо сделать активным нужный рисунок и применить команду:
>> subplot(2, 1, 1);
Первое число в команде subplot показывает количество «строк» в такой матрице, второе – количество столбцов, третье – какой по счету график сделать активным (считая по строкам, справа налево и сверху вниз). Все дальнейшие команды (plot, title, xlabel, ylabel, legend и др.) относятся к этому «подграфику».
В командах можно передавать в качестве аргументов не целые массивы, а их части. Например, по команде
>> plot(x(1:20), y(11:30));
строится график, на котором по оси абсцисс откладываются значения элементов массива x с номерами от 1 до 20, а по оси ординат – соответствующие им значения из массива y с номерами от 11 до 30.
Двоеточие означает «все строки» или «все столбцы». Например, по команде
>> plot(x(:,1), x(:,2));
строится зависимость между первым и вторым столбцами массива x (здесь двоеточие вместо первого индекса обозначает «все строки»).
С помощью команды plot (а также и других подобных – semilogx, semilogy, loglog) можно строить несколько линий на одном графике. Для этого среди аргументов перечисляются пары массивов:
>> plot(x, y, v, z);
Первая линия будет показывать зависимость y от x, а вторая – зависимость z от v. массивы в каждой паре должны быть одинаковой длины. При желании можно указать цвета для каждой линии, Например,
>> plot(x, y, 'b', v, z, 'g');
Первая линия (зависимость y от x) будет синей, вторая (зависимость z от v) – зеленой. Можно использовать следующие цвета: b -синий (blue);g -зеленый (green); r -красный (red); c -голубой (cyan);m -фиолетовый (magenta); y -желтый (yellow); k -черный (black).
По умолчанию первая линия – синяя, вторая – зеленая и т.д. в порядке перечисления цветов в списке. Дополнительно можно указать тип линии
- сплошная
:точечная
-.штрих-пунктирная
--штриховая
Например,
>> plot(x, y, 'b:', v, z,'g--');
Первая линия – точечная синего цвета, вторая – штриховая зеленого цвета. По умолчанию все линии сплошные.
Для оформления графика также используются команды
title заголовок графика
xlabel название оси абсцисс
ylabel название оси ординат
У всех этих команд обязателен один аргумент – текст в апострофах.
Команда legend служит для вывода легенды графика. Легенда нужна, если на графике есть несколько линий и надо показать, что обозначает каждая из них. Параметрами команды legend являются символьные строки, их должно быть столько, сколько построено линий. Simulink
7 Моделирование линейной системы в пакете Simulink
7.1 Описание линейной системы
Рассмотрим линейную систему управления, структурная схема, которой представлена на рисунке 18.
Рисунок 18 - Структурная схема системы управления
Передаточные функции имеют следующий вид:
; (33)
; (34)
; (35)
. (36)
7.2 Выполнение анализа линейной динамической системы в среде Simulink
Пример выполнения исследования линейной системы в среде Simulink представлен в таблице 8
Таблица 8 - Пример выполнения исследования линейной система в среде Simulink
Этап выполнения задания | Команды Matlab |
1 1 Для запуска пакета Simulink щелкните по кнопке в командном окне Matlab или введите команду simulink в командной строке. | simulink |
2 2 Создайте новую модель с помощью верхнего меню открывшегося окна Simulink Library Browser. | File – New – Model |
3 Перетащите блок Transfer Fcn (передаточная функция) из окна Simulink Library Browser (группа Continuous) в окно модели и введите числитель и знаменатель передаточной функции модели. | Двойной щелчок на блоке a. Numerator [K] b. Denominator [ 1 0] |
4 Дайте блоку название W3. | ЛКМ на имени блока |
5 Аналогично добавьте еще три блока типа Transfer Fcn, назовите их W2, W1 и W4, введите нужные параметры. Заметьте, что передаточная функция привода должна быть с учетом внутренней обратной связи. | |
6 Сохраните модель в своей папке под именем lab3.mdl. или под другим именем | File – Save |
7 Выделите блок W4и разверните его в другую сторону. | Нажать Ctrl+I или дважды нажать Ctrl+R. |
8 Сделайте, чтобы названия блоков W1, W2иW3были над блоками. | ПКМ на блоке, Format - Flip name |
9 Выберите цвет блоков на свой вкус. | ПКМ на блоке, Format – Background color |
10 Перетащите в окно модели блок Sum из группы Math Operations и установите его слева от W1. | ЛКМ |
11 Сделайте так, чтобы второй вход учитывался в сумме со знаком минус (отрицательная обратная связь). | Двойной щелчок на блоке, ввести |+- в поле List of signs |
12 Перетащите в окно модели блок Step из группы Sources и установите его слева от сумматора. Дайте ему имя ВХОД. | |
13 Установите время подачи сигнала 0 и величину сигнала 10. | Двойной щелчок на блоке, 0 в поле Step time 10 в поле Final value |
14 Соедините все блоки нужным способом. | ЛКМ на источнике, удерживать Ctrl и ЛКМ на приемнике, или протащить ЛКМ от выхода одного блока к входу другого |
15 Перетащите в окно модели два блока Scope (осциллограф) из группы Sinks и установите их в правой части. Назовите их Сигн1 и Сигн2. | |
16 Сделайте, чтобы на первый блок Scope поступал сигнал c блока W2, а на второй – сигнал c блока W3. Сохраните модель. | Нажать ПКМ на линии в точке отбора сигнала, затем, не отпуская ПКМ, тащить линию к входу блока. |
17 Уменьшите окно до минимального размера, при котором видны все элементы, и скопируйте модель в буфер обмена. Затем вставьте ее из буфера обмена в отчет. | Edit – Copy model to clipboard |
18 Установите время моделирования 100 секунд. | Simulation – Simulation parameters 100 в поле Stop time |
19 Выполните моделирование. | ЛКМ по кнопке |
20 Посмотрите результаты моделирования, открыв окна для блоков Сигн1и Сигн2. | Двойной щелчок по блоку |
21 Настройте масштаб по осям в окнах обоих блоков, | ЛКМ по кнопке – установить оптимальный масштаб |
22 Сохраните настройки, | ЛКМ по кнопке |
23 Сделайте так, чтобы результаты моделирования передавались с обоих блоков Scope в рабочую область Matlab в виде матриц, в которых первый столбец – время, а второй – сигнал (Сигн1 или Сигн2). | ЛКМ по кнопке вкладка Data history Variable name: Y1 (Сигн1) или Y2 (Сигн2) Format: Array |
24 Выполните моделирование еще раз. | ЛКМ по кнопке |
25 Перейдите в командное окно Matlab и создайте новое окно для графика. В одном окне будут построены две кривых на разных осях. | figure(1); |
26 Разбейте окно на 2 части по вертикали и сделайте активным первый график. Первое число в команде subplotозначает количество ячеек с графиками по вертикали, второе – по горизонтали, третье – номер ячейки, которую надо сделать активной. | subplot(2, 1, 1); |
27 Постройте график изменения Y1. В команде plot сначала указывают массив абсцисс, затем – массив ординат. Двоеточие означает, что используются все строки. | plot(Y1(:,1),Y1(:,2)); |
28 Введите заголовок графика. | title('y1'); |
29 Введите названия осей координат. Внутри апострофов для ввода греческих букв разрешается использовать команды LaTeX, | xlabel('Время, сек'); ylabel('\Y1, V'); |
30 Аналогично постройте во второй ячейке график изменения угла поворота руля, используя данные из массива Y1, полученного в результате моделирования. | subplot(2, 1, 2); plot(Y2(:,1),Y2(:,2)); title('Выходной сигнал'); xlabel('Время, сек'); ylabel('Y2, V'); |
31 Скопируйте построенный график в отчет. | print -dmeta |