
TAU_1 / Новая папка / Моделировние систем управления с помощью МАТЛАВ
.pdf
2.МОДЕЛИРОВАНИЕ СИСТЕМ УПРАВЛЕНИЯ ОПИСЫВАЕМЫХ ПЕРЕДАТОЧНЫМИ ФУНКЦИЯМИ
Многие программные средства анализа и синтеза систем управления (как классическими, так и современными методами) основаны на использовании математических моделей. При описании систем передаточными функциями для этих целей может быть использован MATLAB.
Сначала покажем, на сколько полезным может оказаться MATLAB при анализе математической модели механической системы масса-пружина. Используя нотацию MATLAB, создадим программу, позволяющую в интерактивном режиме исследовать влияние собственной частоты колебаний и коэффициента затухания на свободное движение массы. При этом мы воспользуемся аналитическим решением, описывающим свободное движение массы.
Далее рассмотрим, как MATLAB работает с алгебраическими полиномами, вычисляет полюсы и нули передаточных функций, определяет передаточные функции замкнутых систем, производит упрощения структурных схем, вычисляет реакцию на единичное ступенчатое воздействие. В заключение проиллюстрируем применение MATLAB к вычислению реакции линейной системы на единичное ступенчатое воздействие.
В этом разделе мы познакомимся с функциями MATLAB roots, tf, series, parallel, feedback, pole, zero, poly, conv, polyval, mineral, pzmap, step.
Система масса-пружина. На рис. 2.1 изображена механическая система масса-пружина с демпфированием. Перемещение массы y(t) описывается диф-
ференциальным уравнением
My(t)+ by(t)+ ky(t) = r(t).
|
|
|
|
|
|
|
by |
|
|
ky |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Трение |
|
k |
|
|
|
|
|
|
|
|
|
|
о стенки,b |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
М |
|
|
|
y |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r(t) |
r(t) |
|
|
|
|
|
|
|
Сила |
|
|
|
Рис. 2.1. а) Система пружина – масса с демпфированием. б) Условное обозначение
Движение системы при отсутствии внешней силы r(t) описывается выражением
21

1 |
− ξ2 |
|
( |
|
|
|
|
|
) |
|
|
y(t)= |
y |
(0) |
e−ξωnt sin |
|
ω |
n |
1 |
−ξ2 |
+θ |
|
, |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
где θ = arccosξ, а y(0) – начальное отклонение. При ξ <1 реакция системы является недемпфированной, при ξ >1 – передемпфированной, ξ =1 – критически демпфированной. С помощью MATLAB можно пронаблюдать характер изменения положения массы как реакцию на начальное отклонение y(0). Рассмотрим случай недемпфированной системы:
y(0)= 0,15м, ωn = 2 радс,ξ = 212 (k M = 2,b M =1).
Программа MATLAB для построения графика свободного движения системы приведена на рис. 2.2. Прежде всего, перед запуском программы, в качестве входных данных для основного блока должны быть заданы значения y(0),
ωn, t, и ξ. После этого выполняется основная программа unforced.m, которая
представляет результат в графической форме. Если возникает необходимость исследовать влияние на свободное движение собственной частоты колебаний и коэффициента затухания, то просто необходимо ввести новые значения ωn и ξ
и еще раз запустить программу. На рис. 2.3 приведен график свободного движения системы. Заметим, что программа автоматически указывает на графике значение коэффициента затухания и собственной частоты колебаний. Это позволяет избежать недоразумений при многократном проведении моделирования.
>>y0=0.15; ω
>>wn>>=sqrt(2); n
>>xi=1/(2*sqrt(2)); ξ
>>t=[0:0.1:10];
>>unforced
unforced.m
%Вычисление реакции на начальное условие
% y(0) 1−ξ2 c=(y0/sqrt(1-xi^2));
y=c*exp(-xi*wn*t).*sin(wn*sqrt(1-xi^2)*t+acos(xi));
%
bu=c*exp(-xi*wn*t);bl=-bu; e−ξωnt
%
plot(t,y,t,bu,'k--',t,bl,'k--'),grid xlabel('Time (sec)'),ylabel('y(t) (meters)')
legend(['\omega_n=',num2str(wn),' \xi=',num2str(zeta)])
Рис. 2.2. Скрипт анализа движения системы «пружина-масса»
22

Рис. 2.3. Свободное движение системы
В рассмотренной выше задаче мы воспользовались известным аналитическим решением однородного дифференциального уравнения. В общем случае, при моделировании замкнутых систем управления, подверженных влиянию различных внешних воздействий, а также при разных начальных условиях, аналитическое решение бывает получить очень трудно. Здесь можно прибегнуть к помощи MATLAB, который численно решит поставленную задачу и представит результат в графической форме.
MATLAB позволяет исследовать системы, описываемые передаточными функциями. Поскольку передаточная функция имеет вид отношения двух полиномов, мы сначала рассмотрим, как MATLAB оперирует с алгебраическими полиномами. При этом не будем забывать, что в передаточной функции должны быть заданы оба полинома – и в числителе, и в знаменателе.
Полиномы MATLAB представляются в виде вектор-строк, состоящих из коэффициентов в убывающем порядке степеней. Например, полином
p(s) = s3 + 3s2 + 4 задается так, как показано на рис. 2.4. Обратите внимание,
что даже если коэффициент при какой-то степени равен нулю, он все равно включается в представление полинома p(s).
Если р есть вектор-строка, состоящая из коэффициентов p(s) в порядке
убывания степеней, то функция roots(p) определяет вектор-столбец, содержащий корни этого полинома. И наоборот, если r – вектор-столбец, содержащий корни полинома, то функция poly(r) дает вектор-строку из коэффициентов полинома в убывающем порядке степеней. На рис. 2.42 показано, как с помощью
23

функции roots вычисляются корни полинома p(s) = s3 + 3s2 + 4. На рис. 2.42 |
|||
также показано, как можно восстановить полином по его корням с помощью |
|||
функции poly. |
|
|
|
>> p=[1 3 0 4]; |
|
p(s)= s3 +3s2 + 4 |
|
>> r=roots(p) |
|
|
|
r = |
|
|
|
-3.3553 |
|
|
Вычислениекорней p(s)= 0 |
0.1777 + 1.0773i |
|
||
|
|
||
0.1777 - 1.0773i |
|
|
|
>> p=poly(r) |
Восстановление полинома по его корням |
||
p = |
|
||
|
|
|
|
1.0000 |
3.0000 |
0.0000 |
4.0000 |
Рис. 2.4. Ввод полинома p(s)= s3 +3s2 + 4 и вычисление его корней |
Умножение полиномов производится с помощью функции conv. Предположим, что мы хотим получить полином n(s) в развернутой форме, где
n(s)= (3s2 + 2s+1)(s+ 4). Эта процедура выполняется так, как показано на
рис. 2.5. В результате умножения получаем полином n(s) = 3s3 +14s2 + 9s+ 4.
Для вычисления значения полинома при заданном значении переменной используется функция polyval. Как показано на рис. 2.5, полином n(s) имеет
значение n(−5)= −66.
>>p=[3 2 1]; q=[1 4];
>>n=conv(p,q) Умножение p и q
n =
3 14 9 4 |
|
|
n(s)= 3s3 +14s2 +9s+ 4 |
|||
|
|
|||||
>> value=polyval(n,-5) |
|
|
|
|||
value = |
|
|
|
|
||
Вычисление n(s) при s = -5 |
||||||
|
|
|
||||
-66 |
|
|
|
|
|
|
|
|
|
Рис. 2.5 Использование функций conv и polyval для умножения полиномов n(s)= (3s2 + 2s+1)(s+ 4)
В пособиях по применению MATLAB модели линейных стационарных линейных систем рассматриваются в качестве объектов, позволяя манипулировать ими как единым целым. При использовании аппарата передаточных функций модели систем создаются с помощью функции tf; если модель должна быть
24

представлена в переменных состояния, то применяется функция ss. Применение функции tf проиллюстрировано на рис. 2.6(а). Благодаря возможностям объ-
ектно-ориентированного программирования, присущим MATLAB, модели сис-
тем обладают свойствами объектов, которые легко можно изменять; аналогично, функции, применяемые для работы с объектами, принято называть методами. Например, если мы имеем две модели систем,
W |
(s)= |
10 |
и W |
(s)= |
1 |
|
, |
|
|
||||||
1 |
|
s2 + 2s+5 |
2 |
|
s+1 |
|
|
|
|
|
|
|
то можно сложить их с помощью оператора «+»:
W (s)=W |
(s)+W |
(s)= |
s2 +12s+15 |
. |
|
||||
1 |
2 |
|
s3 +3s2 + 7s+5 |
|
|
|
|
Соответствующая программа MATLAB приведена на рис. 2.6(б), где sys1 представляет передаточную функцию W1(s), а sys2 – W2 (s). Вычисление по-
люсов и нулей передаточной функции производится при работе с ней как с объектом путем применения функций pole и zero. Это проиллюстрировано на рис. 2.7.
Передаточная |
|
функция |
W (s)= num |
объекта |
den |
sys=tf(num,den) |
|
|
a) |
>>num1=[10]; den1=[1 2 5];
>>sys1=tf(num1,den1) Transfer function:
10
------------- W1 (s) s^2 + 2 s + 5
>>num2=[1]; den2=[1 1];
>>sys2=tf(num2,den2)
Transfer function: |
|
|
|
|
||
1 |
|
|
|
|
|
|
----- |
|
|
|
W2 (s) |
|
|
|
|
|
|
|
||
s + 1 |
|
|
|
|
||
|
|
|
|
|||
>> sys=sys1+sys2 |
|
|
|
|
||
Transfer function: |
|
|
|
|
||
s^2 + 12 s + 15 |
|
|
|
|
||
W1 (s)+W2 (s) |
|
|||||
--------------------- |
|
|
||||
|
|
|||||
s^3 + 3 s^2 + 7 s + 5 |
|
|
|
|
||
|
|
|
|
|||
|
|
|
|
|
|
|
|
б) |
|
|
|
|
Рис. 2.6. a) Функция tf; б) Применение функции tf для образования передаточных функций объектов и их сложение с помощью оператора «+»
25

Полюсы |
p=pole(sys) |
Передаточная |
функция |
объекта |
z=zero(sys) |
Нули |
a) |
>>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 |
|
|
|
|
б)
Рис. 2.7. а) Функции pole и zero; б) Применение функций pole и zero для вычисления полюсов и нулей линейной системы
В следующем примере покажем, как с помощью функции pzmap (рис. 2.8) можно указать расположение на комплексной плоскости полюсов и нулей передаточной функции. Нули на диаграмме обозначаются кружочками, а полюса
– крестиками. Если функция pzmap вызывается без аргументов, то диаграмма строится автоматически.
P: полюсы в виде вектора-столбца |
|
Z: нули в виде вектора-столбца |
|
W (s)= num |
= sys |
den |
|
[P,Z]=pzmap(sys) |
|
Рис. 2.8. Функция pzmap |
|
26

Пример 2.1. Передаточные функции |
|
|
|
|
|
|
|||
Рассмотрим передаточные функции |
|
|
|
|
|
|
|||
|
2 |
|
|
( |
s+1 |
s+ 2 |
) |
|
|
G(s)= |
6s +1 |
и H |
(s)= |
. |
|||||
)( |
|
||||||||
s3 +3s2 +3s+1 |
|
|
(s+ 2i)(s−2i)(s+3) |
|
|||||
>> numg=[6 0 1]; deng=[1 3 3 1]; sysg=tf(numg,deng); |
|
|
|||||||
>> z=zero(sysg) |
|
|
|
Высчислениеполюсов |
|||||
z = |
|
|
|
||||||
0 + 0.4082i |
|
|
|
|
инулейG(s) |
|
|||
0 - 0.4082i |
|
|
|
|
|
|
|
|
|
>> p=pole(sysg) |
|
|
Представление H (s) |
|
|||||
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 |
|
|
|
H (s) |
|
|
|
||
---------------------- |
|
|
|
|
|
|
|||
s^3 + 3 s^2 + 4 s + 12 |
|
|
|
|
|
|
|
||
>> sys=sysg/sysh |
|
|
|
|
G(s) |
|
|
||
|
|
|
|
H (s) = sys |
|
||||
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) |
|
|
|
|
полюсов и нулей |
||||
Рис. 2.9. Операции с передаточными функциями G(s) и H (s) |
С помощью программы MATLAB можно вычислить полюсы и нули G(s), получить характеристическое уравнение для H (s), разделить G(s) на H (s), а также получить
на комплексной плоскости картину расположения полюсов и нулей функции
G(s)H(s).
Расположение полюсов и нулей передаточной функции G(s)H (s) показано на
рис. 2.10, соответствующие инструкции MATLAB приведены на рис. 2.9. На картине ясно видно расположение пяти нулей и всего двух полюсов. В действительности этого не может быть, т.к. известно, что число полюсов должно быть больше или рано числу нулей. Используя функцию roots, можно убедиться, что на самом деле четыре полюса находятся в одной и той же точке s = −1. Таким образом, функция pzmap не позволяет различить кратные полюсы и нули.
27

Нули
Полюсы
Рис. 2.10. Расположение полюсов и нулей функции G(s)H (s)
Модели в виде структурных схем. Предположим, что мы получили ма-
тематические модели объекта управления, регулятора и, возможно, многих других элементов системы, таких как датчики и исполнительные устройства, причем эти модели представлены в виде передаточных функций. Дальнейшая цель состоит в том, чтобы объединить все эти элементы в единую структуру, создав тем самым систему управления. С помощью MATLAB можно выполнить все необходимые преобразования структурной схемы.
Простейшую разомкнутую систему можно получить, соединив последовательно объект управления и регулятор, как показано на рис. 2.11. Как с помощью MATLAB определить передаточную функцию, связывающую Y(s) и
X (s), будет продемонстрировано в следующем примере.
Y (s) |
|
U (s) |
|
X (s) |
|||||
Регулятор |
Объект |
||||||||
|
|
|
|
|
|
|
|||
|
|
|
Wр (s) |
|
|
Wо (s) |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Рис. 2.11. Разомкнутая система управления
Пример 2.2 Последовательное соединение
Пусть объект управления задан передаточной функцией Wo (s)=1500s2 , а регулятор имеет передаточную функцию Wр (s)= (s+1)
(s+ 2). На рис. 2.12 изображено последовательное соединение двух систем с передаточными функциями W1 (s) и W2 (s), а
28

также проиллюстрирован смысл функции series, а на рис. 2.13 показано, как с ее помощью определяется произведение Wр (s)Wо (s). Результирующая передаточная функция имеет вид
Wр (s)Wо (s)= |
s+1 |
= sys, |
||
500s3 |
+1000s2 |
|||
|
|
где sys есть обозначение передаточной функции в программе MATLAB.
а) Y (s) |
|
U (s) |
|
X (s) |
|
|
|||
|
Система 1 |
Система 2 |
W1 (s) W2 (s)
б) |
X (s) = sys |
W (s)= sys1 |
|
(s)= sys2 |
W (s)= |
W |
|||
|
Y (s) |
1 |
2 |
|
|
|
|
|
|
|
[sys]= series(sys1,sys2) |
|
|
|
Рис. 2.12. а) Структурная схема ) Функция series |
а)
б)
Y (s) |
|
|
|
|
|
U (s) |
|
|
|
|
|
X (s) |
|||
W |
(s)= |
s+1 |
W |
(s)= |
1 |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
р |
|
s+ 2 |
|
|
|
о |
|
500s2 |
|
|||
|
|
|
|
|
|
|
|
|
|
|
>>numwо=[1];denwо=[500 0 0]; syswо=tf(numg,deng);
>>numwр=[1 1];denwр=[1 2]; syswр=tf(numh,denh);
>>sys =series(syswо,syswр);
>>sys
Transfer function: |
|
|
s + 1 |
|
|
------------------ |
|
Wр (s)Wо (s) |
|
||
500 s^3 + 1000 s^2 |
|
|
|
Рис. 2.13. Применение функции series
В структурных схемах очень часто встречается параллельное соединение элементов. В таких случаях для определения передаточной функции соединения используется функция parallel. Смысл этой функции поясняет рис. 2.14.
Мы можем ввести в рассмотрение сигнал обратной связи, замкнув контур единичной обратной связью, как показано на рис. 2.15. В этом случае E(s)
29

есть изображение по Лапласу сигнала ошибки, |
а Y(s) – эталонного входа. |
|||
Передаточная функция замкнутой системы определяется выражением |
||||
|
W (s)= |
Wр (s)Wо (s) |
|
|
|
(1 Wр (s)Wо (s)). |
|
||
а) |
Система 1 |
|
|
|
Y (s) |
W1 (s) |
+ |
X (s) |
|
|
|
|||
|
Система 2 |
+ |
|
|
|
|
|
||
|
W2 (s) |
|
|
|
б) |
X (s) = sys |
|
|
|
W (s)= |
W (s)= sys1 |
W |
(s)= sys2 |
|
|
Y (s) |
1 |
2 |
|
|
|
|
|
|
|
[sys] = parallel(sys1,sys2) |
|
||
Рис. 2.14. а) Структурная схема; б) Функция parallel |
Y (s) |
+ |
E(s) |
U (s) |
X (s) |
|
|
|
Регулятор |
Объект |
|
± |
|
Wр (s) |
Wо (s) |
|
|
|
|
|
|
Рис. 2.15. Система управления с единичной обратной связью |
С помощью функции feedback мы имеем возможность упростить структурную схему, вычислив передаточную функцию замкнутой системы. Эта функция применима как к одноконтурным, так и к многоконтурным системам управления.
Часто встречается случай, когда замкнутая система имеет единичную обратную связь, как показано на рис. 2.15. Применение функции feedback в данном случае проиллюстрировано на рис. 2.16.
На рис. 2.17 изображена система с неединичной обратной связью и проиллюстрировано применение к ней функции feedback. Если в аргументах этой функции не указан знак обратной связи sign, то по умолчанию она предполагается отрицательной.
30