Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторная работа / Лаба№2 Моделирование систем управления с помощью MATLAB.doc
Скачиваний:
92
Добавлен:
22.02.2014
Размер:
199.68 Кб
Скачать

Государственное образовательное учреждение высшего профессионального образования московской области Международный университет природы, общества и человека «Дубна»

Кафедра «Персональная электроника»

Лабораторная работа №2

по дисциплине «Основы автоматических систем управления»

Моделирование систем управления с помощью MATLAB.

Выполнил: студент группы 4141

Крутовский М.Ю.

Принял: проф. Трофимов А.Т.

Дубна, 2007 г.

Цель работы:

  1. Проанализировать математическую модель механической системы масса – пружина. Научиться оперировать при помощи икс 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. Расположение полюсов и нулей функции /.