
- •Проанализировать математическую модель механической системы масса – пружина. Научиться оперировать при помощи икс matlab с передаточными функциями и структурными схемами.
- •Теоретическое введение.
- •Xlabel('Время (с)'), ylabel('y(t) (метры)')
- •Управление устройством электрической тяги.
- •Xlabel('Время (с)')
- •Выводы:
Государственное образовательное учреждение высшего профессионального образования московской области Международный университет природы, общества и человека «Дубна»
Кафедра «Персональная электроника»
Лабораторная работа №2
по дисциплине «Основы автоматических систем управления»
Моделирование систем управления с помощью MATLAB.
Выполнил: студент группы 4141
Крутовский М.Ю.
Принял: проф. Трофимов А.Т.
Дубна, 2007 г.
Цель работы:
-
Проанализировать математическую модель механической системы масса – пружина. Научиться оперировать при помощи икс matlab с передаточными функциями и структурными схемами.
Используемые средства: ИКС MATLAB.
Теоретическое введение.
Многие программные средства анализа и синтеза систем управления (как классическими, так и современными методами) основаны на использовании математических моделей. При описании систем передаточными функциями для этих целей может быть использован MATLAB.
В этом разделе мы сначала покажем, насколько полезным может оказаться MATLAB при анализе математической модели механической системы масса-пружина. Используя нотацию MATLAB, мы создадим программу, позволяющую в интерактивном режиме исследовать влияние собственной частоты колебаний и коэффициента затухания на свободное движение массы. При этом мы воспользуемся аналитическим решением, описывающим свободное движение массы.
Далее мы рассмотрим, как MATLAB оперирует с передаточными функциями и структурными схемами. В частности, будет показано, как MATLAB работает с алгебраическими полиномами, вычисляет полюсы и нули передаточных функций, определяет передаточные функции замкнутых систем, производит упрощения структурных схем, вычисляет реакцию систем на единичное ступенчатое воздействие. В заключение мы проиллюстрируем применение MATLAB к синтезу системы управления устройством электрической тяги.
Ход работы
Система масса – пружина
Перемещение массы у(t) описывается дифференциальным уравнением
Движение системы при отсутствии внешней силы r(t) описывается выражением
где
,
а y(0)
– начальное отклонение. При
<
1 реакция системы
является недодемпфированной,
при
>1
— передемпфированной, а
при
= 1
— критически демпфированной.
С
помощью MATLAB
мы можем пронаблюдать характер изменения
положения массы как реакцию на
начальное отклонение у(0).
Рассмотрим
случай недодемпфированной
системы:
y(0)=0.15
м,
,
(k/M=2,
b/M=1).
Программа
MATLAB
для построения графика свободного
движения системы приведена
на рис. 1. Прежде всего, перед запуском
программы, в качестве входных данных
для основного блока должны быть заданы
значения у(0),
,
t
и
.
После этого выполняется
основная программа unforced.m,
которая представляет результат в
графической форме, Если возникает
необходимость, исследовать влияние на
свободное движение собственной частоты
колебаний и коэффициента затухания, то
просто необходимо ввести новые значения
и
и еще раз выполнить
программу. На рис. 2 приведен график
свободного движения
системы. Заметим, что программа
автоматически указывает на графике
значение
коэффициента затухания и собственной
частоты колебаний. Это позволяет избежать
недоразумений
при многократном проведении моделирования.
>> y0=0.15;
>> wn=sqrt(2);
>> zeta=1/(2*sqrt(2));
>> t=[0:0.1:10];
>> unforced
Рис. 1. Программа для построения графика свободного движения системы.
%
c=(y0/sqrt(1-zeta^2));
y=c*exp(-zeta*wn*t).*sin(wn*sqrt(1-zeta^2)*t+acos(zeta));
%
bu=c*exp(-zeta*wn*t); bl=-bu;
%
plot(t,y,t,bu,'-',t,bl,'-'),grid
Xlabel('Время (с)'), ylabel('y(t) (метры)')
legend(['\omega_n=',num2str(wn),'\zeta=',num2str(zeta)]);
Рис. 1.1 Скрипт программы для построения графика свободного движения системы.
Рис. 2. График свободного движения системы.
В рассмотренной выше задаче мы воспользовались известным аналитическим решением однородного дифференциального уравнения. В общем случае, при моделировании замкнутых систем управления, подверженных влиянию различных внешних воздействий, а также при разных начальных условиях, аналитическое решение бывает получить очень трудно. Здесь можно прибегнуть к помощи MATLAB, который численно решит поставленную задачу и представит результат в графической форме.
MATLAB позволяет исследовать системы, описываемые передаточными функциями. Поскольку передаточная функция имеет вид отношения двух полиномов, мы сначала рассмотрим, как MATLAB оперирует с алгебраическими полиномами. При этом не будем забывать, что в передаточной функции должны быть заданы оба полинома — и в числителе, и в знаменателе.
Полиномы
в MATLAB
представляются в виде векторов-строк,
состоящих из коэффициентов
в убывающем порядке степеней. Например,
полином
задается
так, как показано на рис. 3.
Обратите внимание, что даже если
коэффициент при какой-то
степени равен нулю, он все равно включается
в представление полинома р(х).
>> p=[1 3 0 4];
>> r=roots(p)
r =
-3.3553
0.1777 + 1.0773i
0.1777 - 1.0773i
>> p=poly(r)
p =
1.0000 3.0000 0.0000 4.0000
Рис. 3. Представление полинома в MATLAB.
Если р
есть вектор-строка, состоящая из
коэффициентов р(s)
в
порядке убывания степеней, то функция
roots(р)
определяет вектор-столбец, содержащий
корни этого полинома.
И наоборот, если r
— вектор-столбец, содержащий корни
полинома, то функция poly(r)
дает вектор-строку из коэффициентов
полинома в убывающем порядке степеней.
На рис. 3 показано,
как с помощью функции roots
вычисляются корни
полинома.
Полином можно восстановить по его
корням
с помощью функции poly.
Умножение полиномов
производится с помощью функции conv.
Предположим, что мы хотим получить
полином n(s)
в развернутой форме, где.
Эта процедура выполняется так, как
показано на рис. 4. В результате умножения
получаем полином
.
Для вычисления значения полинома при
заданном значении переменной
используется функция polyval.
Как показано на рис. 4, полином п(s)
имеет значение n(-5)
= -66.
>> p=[3 2 1]; q=[1 4];
>> n=conv(p,q)
n =
3 14 9 4
>> value=polyval(n,-5)
value =
-66
Рис. 4. Использование функций conv и polyval для умножения полиномов.
В пособиях по применению MATLAB модели линейных стационарных систем рассматриваются в качестве объектов, позволяя манипулировать ими как единым целым. При использовании аппарата передаточных функций модели систем создаются с помощью функции tf; если модель должна быть представлена в переменных состояния, то применяется функция ss. Применение функции tf проиллюстрировано на рис. 5. Благодаря возможностям объектно-ориентированного программирования, присущим MATLAB, модели систем обладают свойствами объектов, которые легко можно изменять; аналогично, функции, применяемые для работы с объектами, принято называть методами. Например, если вы имеете две модели систем,
и
,
то вы можете сложить их с помощью оператора «+»:
Соответствующая программа
MATLAB
приведена на рис. 5, где sys1
представляет передаточную функцию
,
а sys2
—
.
Вычисление полюсов и нулей передаточной
функции производится при работе с ней
как с объектом путем применения функций
pole
и zero.
Это проиллюстрировано на рис. 6.
>> num1=[10]; den1=[1 2 5];
>> sys1=tf(num1,den1)
Transfer function:
10
-------------
s^2 + 2 s + 5
>> num2=[1]; den2=[1 1];
>> sys2=tf(num2,den2)
Transfer function:
1
-----
s + 1
>> sys=sys1+sys2
Transfer function:
s^2 + 12 s + 15
---------------------
s^3 + 3 s^2 + 7 s + 5
Рис. 5. Применение функции tf для образования передаточных функций объектов.
sys=tf([1 10], [1 2 1])
Transfer function:
s + 10
-------------
s^2 + 2 s + 1
>> p=pole(sys)
p =
-1
-1
>> z=zero(sys)
z =
-10
Рис. 6. Применение функции pole и zero для вычисления полюсов и нуля линейной системы.
В следующем примере мы покажем, как с помощью функции pzmap можно указать расположение на комплексной плоскости полюсов и нулей передаточной функции. Нули на диаграмме обозначаются кружочками, а полюсы — крестиками. Если функция pzmap вызывается без аргументов, то диаграмма строится автоматически.
>> numg=[6 0 1]; deng=[1 3 3 1]; sysg=tf(numg,deng);
>> z=zero(sysg)
z =
0 + 0.4082i
0 - 0.4082i
>> p=pole(sysg)
p =
-1.0000
-1.0000 + 0.0000i
-1.0000 - 0.0000i
>> n1=[1 1]; n2=[1 2]; d1=[1 2*i]; d2=[1 -2*i]; d3=[1 3];
>> numh=conv(n1,n2); denh=conv(d1,conv(d2,d3));
>> sysh=tf(numh,denh)
Transfer function:
s^2 + 3 s + 2
----------------------
s^3 + 3 s^2 + 4 s + 12
>> sys=sysg/sysh
Transfer function:
6 s^5 + 18 s^4 + 25 s^3 + 75 s^2 + 4 s + 12
-------------------------------------------
s^5 + 6 s^4 + 14 s^3 + 16 s^2 + 9 s + 2
>> pzmap(sys)
Рис.
7. Операции с передаточными функциями
и
.
Рис.
8. Расположение полюсов и нулей функции
/
.