Лабораторная работа №4 (963110), страница 2
Текст из файла (страница 2)
где y – вектор переменных состояния системы, t – аргумент (обычно время), f – нелинейная вектор-функция от переменных состояния у и аргумента t.
Обращение к процедурам численного интегрирования имеет вид:
[t, y] = ode23(‘<имя функции>’, tspan, y0, options)
[t, y] = ode45(‘<имя функции>’, tspan, y0, options),
где <имя функции> - имя M-файла, являющегося функцией Matlab от t и y, в котором вычисляется вектор функция f(y,t), т.е. правые части системы дифференциальных уравнений; tspan – вектор задающий интервал интегрирования [t0 tfinal], t0 – начальное значение интервала, tfinal – конечное; yo – вектор начальных условий; options – строка параметров, определяющих значения допустимой относительной и абсолютной погрешности интегрирования. Этот параметр можно не указывать, если пользователя устаивают значения погрешностей, заданных по умолчанию, т.е. относительная погрешность интегрирования 1.0e-3, а абсолютная (по каждой из переменных состояния) – 1.0e-6. В противном случае, перед обращением к процедуре ode23 следует указать значения погрешностей при помощи процедуры odeset.
Результатом интегрирования является матрица проинтегрированных значений фазовых переменных y, в которой каждый столбец соответствует одной из переменных состояния, а строка содержит значения перменных состояния, соответствующих определенному шагу интегрирования, т.е. значению вектора t.
Рассмотрим пример:
Пусть задана система обыкновенных дифференциальных уравнений:
с
о следующими начальными условиями:
Для интегрирования данной системы уравнений необходимо создать М-файл, который является функцией переменных t и y. Для создания файла воспользуемся редактором MATLAB Editor/Debugger, который вызывается из основного меню File – New – M-File. Текст файла:
function dy=rigid(t,y)
dy=zeros(3,1);
dy(1)=y(2)*y(3);
dy(2)=-y(1)*y(3);
dy(3)=-0.51*y(1)*y(2);
Название файла и функции должны совпадать. Файл надо сохранить с названием rigid.
В этом примере абсолютная и относительная погрешность задается при помощи команды odeset, время интегрирования зададим в интервале от 0 до 12 [0 12], вектор начальных условий [0 1 1]. Для осуществления процедуры интегрирования в рабочем пространстве Matlab необходимо набрать:
» options=odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
» [t,y]=ode45('rigid',[0 12],[0 1 1],options);
Чтобы просмотреть результаты в рабочем пространстве Matlab необходимо ввести в командной строке y. Графически результаты выводятся при помощи команды plot:
» plot(t,y(:,1),'-',t,y(:,2),'-.',t,y(:,3),'.').
Нахождение корней полиномов
Система Matlab имеет функцию roots(P), которая вычисляет вектор, элементы которого являются корнями заданного полинома Р.
Р
ассмотрим пример. Пусть задан полином:
В системе Matlab полином задается вектором его коэффициентов:
» p=[1,8,31,80,94,20]
При вводе функции roots(p) вычисляются корни полинома p:
» roots(p)
Исследование линейных стационарных систем
Исследование и ввод моделей линейных стационарных систем производится при помощи пакета системы Matlab – Control Toolbox.
Ввод моделей в виде пространства состояний
Рассмотрим ввод модели системы в виде пространства состояния по заданным матрицам A,B,C,D уравнений состояния системы:
Матрицы вводятся в рабочем пространстве Matlab в квадратных скобках по срокам через точку с запятой, например матрица
вводится следующим образом:
» A=[0 1;-10 1]
Модель в виде пространства состояний вводится при помощи функции sys=ss(A,B,C,D), где sys – произвольное название системы. Перед вводом этой команды необходимо ввести в рабочее пространство Matlab последовательно матрицы A,B,C,D.
Ввод моделей в виде вход-выход (передаточных функций)
Ввод модели системы в виде передаточной функции рассматривается на примере апериодического звена.
П
усть требуется ввести модель с передаточной функцией
Для этого нужно воспользоваться функцией tf и в рабочем окне системы ввести данную передаточную функцию при помощи набора следующей команды:
waz = tf ([k],[T 1]
где waz- произвольное имя функции, в первой квадратной скобке вводятся коэффициенты полинома числителя (k), а во второй коэффициенты полинома знаменателя (T,1).
Рассмотрим пример со следующими коэффициентами:
k = 10
T1 = 0.1
» waz=tf([10],[0.1 1])
Ввод дискретных моделей
Указанные процедуры позволяют создавать как непрерывные модели, так и дискретные. В случае ввода дискретных систем к числу входных параметров процедуры следует добавить в конце значение шага дискретизации Ts, а вводимые значения коэффициентов уже должны задавать параметры дискретных передаточных функций (для функции tf) или матрицы разностных уравнений пространства состояния (для функции ss).
Пример ввода дискретной передаточной функции:
» dsys=tf([1 4],[1 2 3],0.01)
Sampling time: 0.01.
Модель, заданную как непрерывная, можно преобразовать в дискретную, воспользовавшись процедурой c2d:
sysd = c2d(sys, Ts, method),
где sysd – получаемая дискретная модель, sys – заданная непрерывная модель, Ts – задаваемое значение шага дискретизации системы, method – параметр, определяющий метод дискретизации [1].
Получение характеристик систем
Расчет полюсов системы производится при помощи команды
pole(sys).
Для нахождения временных откликов системы используются функции:
Импульсная переходная функция ИПФ
impulse(sys) – нахождение реакции системы sys на единичное импульсное входное воздействие;
Переходной процесс системы
Step(sys) – нахождение реакции системы sys на единичное ступенчатое воздействие .
Амплитудно-фазовую характеристику системы в полярных координатах можно получить воспользовавшись командой
nyquist(sys).
Логарифмическую амплитудно-фазовую характеристику системы в полярных координатах можно получить воспользовавшись командой
bode(sys).
Для того чтобы построить переходной процесс системы, т.е. ее реакцию на единичное ступенчатое воздействие, а также ее частотные характеристики в одном окне используется так называемый интерактивный наблюдатель ltiview (для этого нужно набрать в рабочем окне команду ltiview и на экране появится окно интерактивного обозревателя). При первом обращении к обозревателю окно пусто, т.к. нужно импортировать в него модель системы.
Для этого из верхнем меню File необходимо выбрать команду import – на экране появится меню выбора импортируемой модели системы (например sys).
Обозреватель позволяет получить на одном экране несколько графиков, в том числе и частотные характеристики системы. Для выбора необходимых характеристик требуется выбрать из меню Tools команду Viewer Configuration.
На экране появятся различные конфигурации количества отображаемых графиков. Если выбрать нажатием радио-кнопки конфигурацию, содержащую 4 графика, тогда на экране появятся следующие графики:
-
переходной процесс;
-
импульсная переходная функция (реакция системы на дельта-функцию);
-
логарифмическая амплитудно-фазовая частотная характеристика;
-
амплитудно-фазовая частотная характеристика в полярных координатах.
Моделирование систем при помощи пакета Simulink
Чтобы в системе Matlab работать со структурными схемами надо воспользоваться пакетом Simulink.
Моделирование линейных систем
Рассмотрим структурную схему, представленную на рис.1.1, где
Рис. 1.1. Структурная схема линейной системы
Промоделируем эту систему в Simulink. Для этого надо ввести команду в рабочую строку
» simulink.
На экране появится меню выбора блоков (Simulink Library Browser). Чтобы создать новый файл для ввода системы нажмите на иконку в верхнем левом углу (белый лист).
Далее нужно набрать схему системы, при этом на вход подать единичное ступенчатое воздействие. Для этого нужно из главного меню последовательно выбрать – Simulink – Sources – Constant и перенести этот блок на окно файла системы. Далее нужно поставить сумматор – Simulink – Math – Sum. Чтобы поменять параметры блока надо дважды нажать на левую клавишу мыши в области его изображения. В появившемся окне поставьте +-, т.е. введите отрицательную обратную связь.
Блок, реализующий W1 ,т.е. коэффициент усиления, находится в Simulink – Math – Gain. Коэффициент усиления введите 10. Если коэффициент усиления необходимо менять в процессе исследования системы его удобно поставить отдельно в виде ползунка – Simulink – Math – Slider Gain, при этом необходимо поставить пределы изменения коэффициента усиления.
Блок, реализующий интегрирующее звено (W2) находится в Simulink – Continuous – Integrator.
Блок, реализующий произвольные передаточные функции (W3) – Simulink – Continuous – Transfer Fnc. Передаточные функции вводятся при помощи набора коэффициентов числителя и знаменателя (в верхней строке числителя, в нижней знаменателя). В данном случае необходимо ввести:
Numerator:
[1]
Denominator:
[0.25 0.4 1]
Теперь мы можем вывести на экран график переходного процесса, т.е. реакцию системы на единичное воздействие. Для этого на выход системы надо установить блок для вывода графика выходного сигнала – Simulink – Sinks – Scope. Для моделирования системы надо выбрать Simulation – Start.
Для просмотра характеристик системы, набранной в simulink можно также воспользоваться Ltiviewer.
В данном случае надо обозначить вход и выход системы, а входное воздействие (const=1) следует убрать.
Из верхнего меню окна набранной системы выберите Tools – Linear Analysis.
На экране появятся два окна: окно для выбора моделей входа и выхода и окно самого Ltiview.
Перенесите на окно набранной системы input point (на вход) и output point (на выход).
Затем в окне Ltiview выберите Simulink – Get Linearized Model.
Далее при помощи настройки конфигурации просматриваемых графиков можно вывести на экран и логарифмические частотные характеристики.
Моделирование нелинейных систем
Рассмотрим также пример нелинейной системы, которая исследуется при помощи фазового портрета (рис 1.2).
Релейная характеристика находится в Simulink – Nonlinear – Relay. Исходно данная характеристика является гистерезисной, поэтому для преобразования ее в идеальную релейную характеристику необходимо установить следующие параметры:
Switch on point:0
Switch off point:0
Output when on (c):1
Output when off (-c): -1