Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КІТ MATLAB Заочники. Методические указания к вы...doc
Скачиваний:
13
Добавлен:
17.09.2019
Размер:
837.63 Кб
Скачать

Управляющие конструкции

Управляющие конструкции делятся на две группы: операторы цикла и условные операторы. К операторам цикла относятся операторы for и while. К условным операторам – конструкции if-elseif-else и switch/case.

Операторы цикла

Оператор цикла for.

Оператор цикла for предназначен для осуществления однотипных операций, когда количество повторений может быть определено заранее.

Синтаксис написания этого оператора имеет вид:

for k = n_start : step : n_final

MATLAB функции

end

где k – переменная цикла, n_start – начальное значение, n_final – конечное значение, step – шаг на который увеличивается k при каждом следующем заходе в цикл. Цикл завершается, как только . Заканчивается оператор командой end. Между условием цикла и командой end производится циклическое вычисление MATLAB функций. Если step=1, то его можно опустить:

for k = n_start : n_final

Если требуется получить цикл с убывающим значением k, то шаг берется отрицательным:

for k = n_start : -step : n_final

В общем случае переменная цикла k может задаваться как вектор с произвольными элементами без всякой последовательности:

for k = [k1, k2, … , kn]

Пример. Вычислить сумму квадратов значений от 1 до 5:

S=0

for k=1:5

S=S+k^2;

end

Оператор цикла while.

Оператор цикла while служит для организации повторений однотипных действий в случае, когда число повторений заранее неизвестно и определяется выполнением некоторого условия, записанного в виде логического выражения. Условия записываются при помощи операторов отношения (Relational operators) и логических операторов (Logical operators) (см. help ops). Синтаксис написания этого оператора имеет вид:

while (условие)

MATLAB функции

end

Пример. Вычислить сумму ряда с точностью до :

S=0; u=1; k=1;

while u>1.e-10

u=2^k/factorial(k);

k=k+1;

S=S+u;

end

Досрочное завершение циклов реализуется с помощью операторов break или continue.

Условные операторы

Оператор ветвления if.

В общем виде конструкция оператора if имеет следующий вид:

If (условие)

MATLAB функции

elseif

MATLAB функции

* * *

elseif

MATLAB функции

else

MATLAB функции

end

Пример. По вводимому значению определить рост человека.

rost=input('Input rost:');

if rost <=160

disp('small');

elseif s<=175

disp('middle');

elseif s<=190

disp('big');

else disp ('very big');

end

Оператор switch/case.

Для осуществления множественного выбора используется конструкция с переключателем типа switch, которая в общем виде записывается следующим образом:

switch variable

case {val1_1, … ,val1_n1}

MATLAB функции

case {val2_1, … ,val2_n2}

MATLAB функции

* * *

case { valm_1, … ,valm_nm}

MATLAB функции

otherwise

MATLAB функции

end

Пример. Параметр может принимать целые значения от -2 до 2. Определить знак параметра.

param=input ('param=');

switch param

case {-2,-1}

disp (‘Param is Neg')

case 0

disp(' Param is Zero')

case {1,2}

disp(' Param is Pos')

otherwise

disp('Error param')

end

Control System Toolbox

Control System Toolbox – это пакет расширения MATLAB для анализа, проектирования и разработки систем автоматического управления. Включает в себя всевозможные функции и графические приложения для работы с динамическими объектами и линейными замкнутыми системами управления. Он содержит функции построения временных и частотных характеристик линейных объектов, средства автоматического и интерактивного проектирования регуляторов и обратных связей системы, функции оценки и проверки качественных показателей таких как: время нарастания, перерегулирование, запасы устойчивости и т.п.

Набор графических инструментов позволяет инженеру разрабатывать систему управления шаг за шагом в интерактивном режиме.

Список функций можно просмотреть с помощью команды

>> help control

Формирование и преобразование моделей динамических систем

В системе MATLAB используются три способа формирования моделей линейных динамических систем: модели в виде передаточной функции и модели в переменных состояния. Передаточные функции могут задаваться в виде векторов-строк, составленных из коэффициентов полиномов числителя и знаменателя, либо в виде наборов нулей и полюсов. Модели в переменных состояния задаются в виде набора матриц соответствующих размерностей. Следует отметить, что в MATLAB, да и во всей иностранной литературе по этой теме, при записи передаточной функции в качестве оператора Лапласа используется символ “s”, вместо “p”.

1.Формирование моделей динамических систем

Модель линейной динамической системы можно сформировать с помощью одной из трех команд:

а) команда tf (transfer function (англ.) – передаточная функция (ПФ)) формирует скалярную (ПФ) как отношение двух полиномов G(s) = num(s)/den(s).

sys1 = tf ([num],[den]) – формирует ПФ системы с именем sys1, где num – числитель ПФ – задается как вектор, составленный из коэффициентов полинома при всех степенях s, начиная со старшей, разделенных пробелами или запятыми; den – знаменатель ПФ – задается аналогично числителю.

Пример. Сформировать модель системы, заданную ПФ :

sys1 = tf ([1 5], [1 0 –3])

б) команда zpk (zero/pole/gain (англ.) – нули/полюсы/коэффициент передачи) формирует скалярную ПФ в виде

где z1,z2,…,zm – нули системы; p1,p2,…,pn – полюсы системы; k – обобщен­ный коэффициент передачи.

sys2 = zpk ([zeros],[poles],k) – формирует ПФ системы с именем sys2 в форме “нули/полюсы/коэффициент”, где zeros – вектор нулей ПФ, poles – вектор полюсов ПФ, k – обобщенный коэффициент передачи.

Пример. Сформировать модель системы, заданную ПФ :

sys2 = zpk ( 0.5, [-0.1 0.3], 2)

в) команда ss (state space (англ.) – пространство состояний) формирует модель системы в пространстве состояний в виде системы дифференци­альных уравнений

где x(t) – вектор состояния системы, u(t) – вектор входных воздействий, y(t) – вектор выходов, А,В,С,D – матрицы соответствующих размерностей.

sys3 = ss ([A],[B],[C],[D]) – формирует модель системы с именем sys3 в пространстве состояний, где матрицы А,В,С,D вводятся построчно, элементы разделяют пробелами или запятыми, строки – точкой с запятой.

Пример. Сформировать модель системы, заданную в пространстве состояний, где

, , :

sys3 = ss ([0 1; –5 –2], [0;3], [0 1], 0)

2. Преобразование моделей динамических систем

Любая созданная модель может быть преобразована в желаемую форму:

sys4 = ss (sys1) – преобразует модель sys1, созданную ранее, в модель в пространстве состояний c именем sys4;

sys5 = zpk(sys3) – преобразует модель sys3 в форму “нули/полюсы” с именем sys5;

sys6 = tf(sys2) – преобразует модель sys2 в передаточную функцию с именем sys6.

3. Вычисление нулей и полюсов динамических моделей

Важными характеристиками системы, определяющими ее динами­ческие свойства, являются полюсы и нули. Для их вычисления используются следующие команды:

pole (sys) – вычисляет полюсы системы и выводит их в виде списка;

tzero (sys) – вычисляет нули системы и выводит их в виде списка;

pzmap (sys) – вычисляет нули и полюсы системы и отображает их на комплексной плоскости.

Формирование моделей взаимосвязанных систем

Следующая группа команд предназначена для объединения отдельных элементов в единую систему.

Последовательное соединение

Чтобы получить модель системы system3, представляющую собой последовательное соединение двух элементов system1 и system2, необходимо выполнить операцию умножения двух моделей. Для этого можно воспользоваться одной из следующих команд:

sys3 = sys1 sys2 либо

sys3 = series (sys1, sys2) либо

sys3 = mtimes (sys1, sys2) либо

sys3 = tf (sys1sys2) – (при этом команда tf может быть заменена командой zpk или ss в зависимости от формы, которую должен иметь результат).

Параллельное соединение

Чтобы получить модель системы sys4, представляющую собой параллельное соединение двух элементов sys1 и sys2, необходимо выполнить операцию сложения двух моделей. Для этого можно воспользоваться одной из следующих команд:

sys4 = sys1+ sys2 либо

sys4 = parallel (sys1, sys2) либо

sys4 = tf (sys1 + sys2).

Обратная связь

Чтобы получить модель системы sys5, представляющую собой соединение моделей sys1 и sys2 в контур с отрицательной обратной связью, необходимо воспользоваться командой:

sys5 = feedback (sys1, sys2).

Чтобы замкнуть систему положительной обратной связью, необходимо добавить еще один аргумент: sys5 = feedback (sys1, sys2, +1).

Реализация запаздывания.

Аппроксимация Паде.

Т.к. подавляющее число вычислений в системе MATLAB являются численными, то реализацию временной задержки описываемой множителем в передаточной функции осуществить затруднительно. В качестве одного из распространенных вариантов реализации используют так называемую аппроксимацию Паде преобразующую множитель в передаточную функцию. Посредством этой аппроксимации можно получить передаточную функцию заданного порядка (обычно не больше 2). Реализуется командой:

[num, den]=pade(tau, n)

где tau – время запаздывания, n – порядок передаточной функции, num и den – вектора коэффициентов числителя и знаменателя полученной передаточной функции соответственно.

Например, время запаздывания равно 1 – , а аппроксимировать хотим ПФ 2-ого порядка, тогда:

[num, den]=pade(1, 2)

При выполнении этой команды в окне команд будет выдан результат:

num =

1 -6 12

den =

1 6 12

Таким обтазом ПФ будет иметь вид: .

Другой способ задать запаздывание может быть реализован функцией класса. Если задана модель sys в виде передаточной функции или в пространстве состояний, а запаздывание определено переменной tau, то используют функцию класса ioDelay в следующем виде:

sys.ioDelay=tau

Для того, чтобы увидеть результат применения этой функции можно просто набрать имя функции в командной строке (только для ПФ) или воспользоваться функцией get:

get(sys)

которая в окне команд отображает свойства модели.

Временные и частотные характеристики систем управления

Временные характеристики.

При исследовании систем автоматического управления анализ временных характеристик дает возможность определить, соответствует ли разработанная система предъявляемым к ней требованиям. При этом часто необходимо рассматривать как переходные характеристики, т.е. реакцию системы на одноразовое воздействие, так и квазиустановившиеся реакции на периодические сигналы сложной формы. Наиболее часто исследуется реакция на ступенчатое входное воздействие, т.е. переходная характеристика. Напомним, что переходной характеристикой называется такая характеристика, которая показывает изменение выходной величины во времени при подаче на вход единичного скачка . Единичный скачек отвечает 100%-ому мгновенному изменению управляющего сигнала или возмущающего воздействия.

Переходная характеристика. В MATLAB график переходной характеристики реализуется командой

step(sys)

Данная функция автоматически определяет время, на котором будет показан график. Для того, чтобы самостоятельно определить продолжительность по времени на котором хотим наблюдать график переходного процесса, функция будет иметь следующий вид:

step(sys, time)

В случае, если есть потребность получить график переходной характеристики с заданным периодом или определить его в обусловленных временных точках, функция будет записана в виде:

step(sys, t)

где t – вектор временных значений (необязательно с одинаковым временным периодом).

Для того чтобы самостоятельно построить график, используется функция, которая возвращает значения векторов по оси абсцисс и ординат:

[y,t]=step(sys, t)

Импульсная характеристика. Часто используется также реакция системы на входной единичный импульс, так называемая импульсная реакция, или импульсная переходная функция. Напомним, что под единичным импульсом понимается идеализированный сигнал, равный бесконечности в момент его приложения и равный нулю во все остальные моменты, такой, что интеграл этого сигнала по времени (т.е. площадь под этим сигналом) равна единице. Т.о. единичный импульс получается дифференцированием единичного скачка. Или иначе импульсной характеристикой называют такую функцию, которая описывает выходную величину, если на вход подана функция Дирака или единичная импульсная функция.

В MATLAB реализуется командой

impulse(sys)

Реализация функции аналогична step.

Диаграмма Боде. Под диаграммой Боде понимаются амплитудно-частотная (АЧХ) и фазо-частотная (ФЧХ) характеристики системы регулирования, изображенные на одной и той же (или на параллельных) частотной оси абсцисс. Амплитуда выражается в децибелах (1дБ = 20 lg│А(ω)│), а фаза в град. Частота обычно выражается в рад/с и имеет логарифмический масштаб. Диаграмма Боде может быть построена как для разомкнутой, так и для замкнутой систем.

В MATLAB реализуется командой

bode(sys)

Если требуется построить только АЧХ, используем команду

bodemag(sys)

В случае, когда требуется самостоятельно построить графики АЧХ и ФЧХ (например в декартовых координатах), используем функцию bode в виде:

[amp,phase,omega]=bode(sys,frequency)

которая возвращает три массива значений: амплитуды, фазы и частоты, соответственно.

Диаграмма Найквиста. Диаграмма Найквиста представляет собой график амплитудно-фазовой характеристики разомкнутой системы АФЧХ, построенной в комплексной плоскости, с частотой как параметром. Диаграмма Найквиста дает возможность оценить устойчивость замкнутой системы, в том числе при неустойчивой разомкнутой системе, для не минимально-фазовой системы и при множественных пересечениях графиком Боде нулевого уровня. Замкнутая система будет устойчива, если при изменении частот ω от -∞ до ∞ число обходов АФХ точки [-1,0j] равно числу полюсов разомкнутой системы, лежащих в правой полуплоскости (т.е. неустойчивых). Если разомкнутая система таких полюсов не имеет, то условие устойчивости формулируется так: АФХ не должна охватывать точку [-1,0j]. Для построения диаграммы Найквиста служит команда

Nyquist(sys,{Wmin,Wmax})

где Wmin и Wmax – минимальное и максимальное значения по частоте (можно не указывать). Сетка наносится с помощью функций grid.

Корневой годограф. Корневой годограф представляет собой траекторию перемещения корней замкнутой системы в комплексной плоскости при изменении какого-либо параметра системы. Эта информация может быть использована для анализа влияния изменения этого параметра на расположение полюсов замкнутой системы и получения приближенной информации о быстродействии и колебательности системы. Для устойчивой системы все полюса должна находиться в левой полуплоскости. Если, например, ближайший к мнимой оси корень вещественный, а комплексные полюса находятся относительно далеко, то переходный процесс при ступенчатом изменении задания близок к экспоненте с постоянной времени, равной абсолютному значению обратной величины этого корня.

В MATLAB реализуется командой rlocus(sys).

Сетка наносится с помощью функций sgrid и zgrid.