Лабораторные работы Матлаб Файл

реклама
Лабораторная работа № 1
Тема: знакомство со средой MATLHAB. Освоение программного обеспечения для исследования
систем автоматического управления.
Цель работы: Получить начальные сведения о системе MATHLAB и пакете Control System
Toolbox и навыки работы с ними.
Содержание работы:
1. Изучение командного окна ППП MATHLAB.
2. Изучение возможностей ядра ППП MATHLAB для выполнения вычислений.
3. Изучение графических возможностей ППП MATHLAB.
4. Изучение возможностей создания и использования m-файлов.
5. Изучение возможностей приложения Control System Toolbox для исследования систем
автоматического управления.
1. Основные теоретические сведения
1.1. Работа с ядром пакета прикладных программ MATHLAB
Общие сведения о ППП MATHLAB. MATHLAB – это высокоэффективный язык инженерных
и научных вычислений. Он поддерживает математические вычисления, визуализацию научной
графики и программирование с использованием легко осваиваемого операционного окружения,
когда задачи и их решения могут быть представлены в нотации, близкой к математической.
Наиболее известные области применения системы MATHLAB:
– математика и вычисления;
– разработка алгоритмов;
– вычислительный эксперимент, имитационное моделирование, макетирование;
– анализ данных, исследование и визуализация результатов;
– научная и инженерная графика;
– разработка приложений, включая графический интерфейс пользователя.
MATHLAB – это интерактивная система, основным объектом которой является массив, для
которого не требуется указывать размерность явно. Это позволяет решать многие вычислительные
задачи, связанные с векторно-матричными формулировками, существенно сокращая время,
которое понадобилось бы для программирования на скалярных языках типа C или FORTRAN.
Система MATHLAB – это одновременно и операционная среда и язык программирования.
Одна из наиболее сильных сторон системы состоит в том, что на языке MATHLAB могут быть
написаны программы для многократного использования. Пользователь может сам написать
специализированные функции и программы, которые оформляются в виде m-файлов. По мере
увеличения количества созданных программ возникают проблемы их классификации и тогда
можно попытаться собрать родственные функции в специальные папки. Это приводит к
концепции пакетов прикладных программ (ППП), которые представляют собой коллекции mфайлов для решения определенной задачи или проблемы.
Далее описывается работа с MATHLAB 7.0.1 Realise 14 (далее MATHLAB) и лишь в части,
касающейся обеспечения выполнения лабораторных работ по дисциплине «Основы теории
управления».
Для запуска MATHLAB необходимо найти на рабочем столе ярлык этой программы и
запустить его на выполнение, при этом откроется рабочее окно программы, состоящее из окна
команд (Command Window), рабочего пространства (Workspace) и окна истории текущей сессии
(Command History). Каждое из этих окон может быть выведено на полный экран щелчком левой
кнопки мыши на значке
, а убрано – щелчком левой кнопки мыши на значке
соответствующего окна (восстановление – View – Desktop Layout – Default).
В окне Command History сохраняются все набранные в процессе текущей сессии команды, что
позволяет использовать их повторно в окне Command Window в исходном или
модифицированном виде.
2
В окне рабочего пространства Workspace сохраняются имена всех использованных в текущей
сессии переменных.
Подсказка «>>» в окне команд Command Window показывает готовность системы к
выполнению команд. После набора простейших математических выражений в естественной форме
записи на и нажатия клавиши Enter экране сразу же появляется результат. Самó выражение может
быть записано в двух видах:
Выражение
или
Имя переменной=Выражение.
В первом случае на самом деле результат выражения присваивается специальной служебной
переменной имеющей имя ans (answer – ответ). Эту переменную так же можно использовать в
расчетах. Во втором случае результат не только вычисляется, но и присваивается указанной
переменой. MATHLAB не требует от пользователя специальных команд для объявления
переменных, они создаются автоматически при первом указании пользователем их имени. Если
результаты промежуточных выражений выводить на экран не нужно, то необходимо поставить в
конце выражения символ «;».
При наборе и редактировании команд действуют такие же команды как в любом другом
оконном редакторе Windows, например в блокноте. MATHLAB предоставляет пользователю
возможность пролистать предыдущие команды, сделать это можно с помощью клавиш Page Up и
Page Down. В эти команды легко можно внести изменения и повторно их выполнить.
Работа с командным окном MATHLAB. Командное окно системы MATHLAB показано на
рис. 1. Здесь же показано ниспадающее меню File. Оно содержит опции, приведенные в табл.1.
Рис. 1. Командное окно системы MATHLAB
Таблица 1
Основные опции командного окна системы MATHLAB
Опция
Подопции Назначение
Открыть в
New
M-file
редакторе/отладчике новый
файл
Figure
Открыть графическое окно
Model
Открыть окно доля создания
новой модели
GUI
–
Открыть в
Open
редакторе/отладчике
указанный файл
Закрытие командного окна
Close
Command
Window
3
Import Data…
Импортировать данные из
файла
Save
Workspace
As…
Set Path…
Вызов окна сохранения mфайла
Продолжение табл.1
Preferences…
Page Setup…
Print
Вызов средства просмотра
путей доступа Path Browser
Выбор характеристик
Формат страницы вывода на
печать
Установка опций вывода на
печать
Печать выделенного
фрагмента
Окончание текущей сессии
Print
Selection
Exit
MATLAB
Использование MATHLAB в качестве калькулятора. Командное окно можно использовать
для текущих вычислений в режиме калькулятора. Для этого в командной строке вводится
математическое выражение. После нажатия Enter будет выведен результат. В системе MATHLAB
используются традиционные арифметические операции +,–,*,/, а также операция возведения в
степень ^. Для определения приоритета выполнения операций в выражении можно использовать
круглые скобки. При вводе дробных чисел используется десятичная точка (не запятая!).
Кроме того, в выражении можно использовать встроенные функции системы MATHLAB.
Количество этих функций превышает 800 наименований. В табл.2 приведены некоторые из
функций, часто используемых при решении задач теории автоматического управления.
Таблица 2
Элементарные функции в MATHLAB
(Большими буквами обозначены массивы, малыми – элемент массива или число)
Имя
Вычисление
abs(x)
Абсолютных
значений
для
действительных и комплексных чисел
real(z)
Действительной части комплексного
числа
imag(z)
Мнимой части комплексного числа
cplxpair(z, tol)
Сортировки
cplxpair(z[],dim) комплексных чисел
по разным правилам
cplxpair(z,
tol,dim)
mod(x,y)
Целой части от деления чисел
rem(x,y)
Остатка от деления чисел
factor(n)
Простых множителей числа
gcd(m,n)
Наибольшего общего делителя чисел
rat(x)
Результата в виде рационального числа
или цепной дроби
sqrt(z)
Квадратного корня
exp(z)
e в степени z
expm(Z)
Матричной экспоненты (e в степени Z,
где Z – матрица)
angle(Z)
Аргумента комплексного числа в
радианах
conj(Z)
Числа, комплекно-сопряженного Z
ceil(X)
Целого числа, ближайшего большего,
чем дробное X
fix(X)
Целого числа, ближайшего меньшего,
чем дробное X
4
floor(X)
round(X)
sign(X)
Целого числа, ближайшего меньшего к
действительному X
Продолжение табл.2
Целого
числа,
ближайшего
к
действительному X
 1 при X > 0

sign  X  =  0 при X = 0 –
-1 при X < 0

для действительных
чисел
sign(X) = X abs  X
– для комплексных чисел
primes(n)
Простых чисел в интервале от 0 до n
icm(m,n)
Наименьшего общего кратного чисел m и
n
icm(A,B)
Наименьшего общего кратного пар чисел
в массивах A и B
perms(V)
Матрицы
перестановок
элементов
вектора V
pov2(z)
Степени числа 2
pov2([M,N])
Массива чисел M.*(2^N)
log2(z)
Двоичного логарифма числа
log10(z)
Десятичного логарифма числа
log(z)
Натурального логарифма числа
[M,N]= log2(z)
Массива мантисс и целочисленных
порядков (z=m*2N)
sin(x), sinh(x)
Тригонометрического
и
гиперболического синусов
asin(x), asinh(x)
Тригонометрического
и
гиперболического арксинусов
cos(x), cosh(x)
Тригонометрического
и
гиперболического косинусов
acos(x), acosh(x)
Тригонометрического
и
гиперболического арккосинусов
sec(x), sech(x)
Тригонометрического
и
гиперболического секансов
asec(x), asech(x)
Тригонометрического
и
гиперболического арксекансов
tan(x), tanh(x)
Тригонометрического
и
гиперболического тангенсов
atan(x), atanh(x)
Тригонометрического
и
гиперболического арктангенсов
Имя
Вычисление
cot(x), coth(x)
Тригонометрического
и
гиперболического котангенсов
acot(x), acoth(x)
Тригонометрического
и
гиперболического арккотангенсов
csc(x), csch(x)
Тригонометрического
и
гиперболического косекансов
acsc(x), acsch(x)
Тригонометрического
и
гиперболического арккосекансов
[T,R]=cart2pol(x,y)
Преобразования 2-мерных декартовых
координат x, y и полярные T, R (T – угол
в рад.)
[T,R,Z]=cart2pol(x,y,z) То же, для трехмерных координат
[X,Y]=pol2cart(T,R)
Преобразование полярных координат T,
R в декартовы X, Y
[X,Y,Z]=pol2cart(T,R,Z) То же, для трехмерных координат
5
Общие правила вычислений в командном окне сводятся к следующему:
1. Работа с системой в режиме прямых вычислений носит диалоговый характер и происходит
по правилу «задал выражение, получи ответ».
2. Пользователь набирает на клавиатуре вычисляемое выражение, редактирует его (если нужно)
в командной строке и завершает ввод нажатием клавиши Enter. Для указания текущего места
ввода и вычисления используется символ >> на пустой строке. В предшествующих месту ввода
строках редактирование выражений и вычисления невозможны.
3. Данные вводятся с помощью строчного редактора (встроенного в MATHLAB (по
умолчанию) или внешнего, выбираемого пользователем).
4. Знаком присваивания является привычный математикам знак равенства =, а не
комбинированный знак :=, как во многих других математических системах.
5. Правила записи матрицы, вектора и скаляра: большими буквами (например, А)
обозначаются матрицы, малыми (а) – векторы и скаляры. Векторные функции (выдающие
значения в виде вектора) обозначаются большими буквами (F(x)), скалярные функции (их
значение – скаляр – действительное число) обозначаются малыми буквами (f(x)).
6. Комплексное или мнимое число определяется по наличию в его составе констант i или j,
которым присваивается значение sqrt(-1) = √-1. Комплексное число можно вводить одним из
следующих способов: 5+3i; 5+3*I; 5+3j; 5+3*j или 5+3*sqrt(-1)
7. Значения аргумента функции в виде выражения присваивания вводятся раньше выражения
функции и отделяются от него точкой с запятой (см. пп.11-13). Аргумент в виде одного числа
можно вставлять в окаймлении круглых скобок непосредственно в выражение функции.
Правильный ввод простейшего вычисляемого выражений:
y = sin (0.35) Enter
или
sin (0.35) Enter.
Если аргументов несколько, то они отделяются запятыми. Если вычисляемых функций
несколько в одном месте ввода, то они отделяются запятыми.
8. Арифметические операции для массивов отличаются от матричных операций наличием
точки перед знаком операции:
– А.*Б (умножение массивов – массивы должны иметь одинаковое количество чисел или один
из них должен быть числом);
– А./Б (деление);
– А.\Б (левое деление);
– А.^Б (возведение в степень).
Точка перед «+» и «–» не ставится!
9. Встроенные функции (например, sin) записываются строчными буквами и их аргументы
указываются в круглых скобках (см. табл.2). Если аргументов несколько, то они отделяются
запятыми.
10. Для изменения формата вывода результата вычисления необходимо до нажатия клавиши
Enter установить нужный формат через меню «Файл  Свойства».
11. Для блокировки вывода результата некоторого выражения (ввиду промежуточного
характера) после него надо установить знак ; (точка с запятой): если блокировка отсутствует, то
MATHLAB выдаст результат расчета по части выражения до неустановленного знака и
сообщение об ошибке, а остальную часть вычисляемого выражения игнорирует, как показано на
рис. 2.в.
а) »x = (0.5 0.7 1); Y = sin(x)
Y=
501/1045 947/1470 1327/1577
б) »x = (0.5 0.7 1; 1 3 12; 0.8 0.1 3); Y = sin(x)
Y=
0.4794 0.6442 0.8415
0.8415 0.1411 –0.5366
0.7174 0.0998 0.1411
6
в) »x = (0.5 0.7 1) ; Y = sin(x)
??? x = (0.5 0.7 1)Y
Missing operator, comma or semicolon
Рис. 2. Правильная запись вычисления функции на одномерном (а) и многомерном (б)
массивах и неправильная (в) (пропуск точки с запятой после первого оператора)
12. Если не указана переменная для значения результата вычислений, то MATHLAB назначает
такую переменную с именем ans.
13. Результат вычислений выводится в строках вывода (без знака »).
14. Для вычисления функции на одномерном или многомерном матричных массивах значений
аргумента необходимо выполнить действия согласно рис.13.
В векторе (одномерном массиве) значения заключены в квадратные скобки и отделяются друг
от друга пробелом (рис.3, а); в матрице (многомерном массиве) значения заключены тоже в
квадратные скобки, причем, строки отделяются точкой с запятой (порядок следования строк: левая
выше правой), а значения в каждой строке отделяются аналогично вектору (рис.3, б).
15. Если значения аргумента вычисляемой функции являются членами отрезка арифметической
прогрессии с заданной разностью (шагом), то для записи аргумента применяется оператор
«:»(двоеточие) – см. рис. 3. При разности, равной единице, ее запись в операторе можно опускать
(см. рис. 3, б).
а)
» x=[1:2.5:16.5];Y=sin(x)
Y=
0.8415 –0.3508 –0.2794 0.7985 –1.0000 0.8038 –0.2879
б)
» x=1:10;Y=sin(x)
Y=
Columns 1 through 7
0.8415 0.9093 0.1411 –0.7568 –0.9589 –0.2794 0.6570
Columns 8 through 10
0.9894 0.4121 –0.5440
в)
x=[1:2.5:11.5; 2:6];Y=sin(x)
Y=
1327/1577 –851/2426 –1109/3969 1161/1454 –102108/102109
401/441 441/3125 –445/588 –677/706 –1109/3969
Рис. 3. Правильная запись вычисления функции на одномерном массиве аргумента в
виде отрезка арифметической прогрессии ( с разностями 2,5 (а) и 1 (б)) и в виде 2-строчной
матрицы с теми же разностями (в)
Для правильной записи значений матрицы аргумента, когда ее строки являются отрезками
арифметических прогрессий, необходимо руководствоваться правилами 14 и 15 одновременно.
16. Комментарии записываются в отдельную строку, помечаемую знаком «%» (процент) в
первом знакоместе строки (см. рис. 4, а).
Разбиение строки с длинным выражением или комментарием на две производится установкой
курсора перед переносимой на создаваемую вторую строку частью выражения и нажатием клавиш
Shift + Enter (см. рис. 4, б) – двукратное разбиение выражения х = [23 45 67 45] на три строки).
17. Соединение двух строк в одну в программе или в выражении производится установкой
курсора в начало второй строки и нажатием клавиш Shift + Backspace (рис. 4, в) – соединение
двух строк с выражениями 67 и 45]).
7
а) »x=[0.5 0.7 1];Y=sin(x)
% Комментарии размещаются в отдельных строках
Y=
0.4794 0.6442 0.8415
б) » x=[23 45 67 45]
x =[23 45 67 45]
в) » x=[23 4567 45]
x =[23 45 67 45]
Рис. 4. Ввод комментария в вычисляемое выражение или программу (а), разбиение
первой строки на три (б), объединение 3-й и 2-й строк (в)
18. Вычисляемое выражение сразу после завершения вычисления можно ввести вновь в
текущее место ввода нажатием кнопки «стрелка вверх» ↑ (для изменения величин аргументов
или коррекции выражения) .
Повторное нажатие кнопки ↑ заменит текущие условия на условия, им предшествующие: этот
процесс можно повторять многократно, добиваясь вызова в место ввода все более ранних
вычислительных условий.
Ранее вычислявшееся выражения можно быстро вставить в место ввода путем выделения его
левой кнопкой мышки (кнопка далее отпускается) и небольшого протягивания его вниз повторно
нажатой левой кнопкой: MATHLAB сам вставит выделенное выражение.
19. Ранее примененную функцию можно вставить в командное окно через копирование её из
окна Command History (Протокола команд), в котором все ранее использованные команды и
функции сохраняются до тех пор, пока пользователь не удалит их.
20. Чтобы сохранить данные вычислений в окне управления (выражения, программы,
результаты или их части) для повторного вызова и работы, необходимо:
• выделить данные,
• скопировать их в буфер,
• вызвать редактор-отладчик m-файлов через меню «Файл-Создать-m-файл», либо командой
edit в командном окне,
• вставить скопированные данные в открывшийся новый m-файл и сохранить его через меню
редактора File-Save As… («Файл-Сохранить как»).
21. Для продолжения вычислительной работы в окне управления с данными, сохраненными по
правилам п.20, необходимо через меню «Файл-Открыть» открыть требуемый файл, выделить в
нем требуемые для работы фрагменты, скопировать их в буфер и вставить в текущее место ввода
окна управления.
Рассмотрим применение перечисленных выше правил для выполнения вычислений.
Использование переменных. Результат вычислений можно присвоить любой переменной,
определенной пользователем. Имя переменной должно начинаться с буквы и может состоять из
букв, цифр и символа подчеркивания. Система MATHLAB различает строчные и прописные
буквы в именах переменных (A и a – это разные переменные). Знак = соответствует операции
присваивания. Значения переменных, вычисленные в течение текущего сеанса работы,
сохраняются в специально зарезервированной области памяти компьютера, называемой рабочим
пространством (Workspace). Использование переменных рассмотрено в примере 1.
Пример 1. Использование переменных
8
 a  3;
1
 b  4;
1
 c  a ^ b  b ^ a  a * b  2
c
133
 d  a  c  b ^ 3;
 d
1
d
72
3
Комментарии к вычислениям:
1  Если в конце строки ставится точка с запятой, то результат не будет выведен после
нажатия Enter.
2  Здесь нет точки с запятой, и после нажатия Enter результат выводится и присваивается
переменной c.
3  Для того чтобы узнать значение переменной достаточно ввести ее имя в командную
строку и нажать Enter.
Использование MATHLAB как калькулятора иллюстрирует также пример 2.
Пример 2. Использование MATHLAB как калькулятора
  4.5  7  ^ 3  37 5*log10   2  92  * sgrt  25 3  1   1
2  ans 
3  1.5031e  003
Комментарии к вычислениям:
1  Нажатие клавиши Enter.
2  Результат присваивается переменной с именем ans
3  Результат выводится в формате с плавающей точкой. Такая запись означает 1.5031·103.
Длинные выражения можно записать в нескольких строках с использованием в качестве знака
переноса символа многоточия ….
Использование массивов. В системе MATHLAB также используются массивы, математической
формой представления которых являются матрицы. Напомним основные действия над матрицами
и их реализацию в MATHLAB.
1. Присвоение значений матрице. Простейшей операций с матрицей является ее создание. Для
создания столбца необходимо указать его имя, знак равенства и в квадратных скобках через
запятую или через пробел перечислить значения элементов. Например: А=[1 2 3 4 5]. В случае
если необходимо создать столбец чисел, то в качестве разделителя используется символ «;» (точка
с запятой), например: B=[1;3;5;7]. Для создания квадратной или прямоугольной матрицы
необходимо чередовать оба этих способа, например:
С=[ 1 2 3 ; 4 5 6 ; 7 8 9 ].
2. Создание матриц специального вида. В математике встречаются матрицы специального вида,
часто используемые при решении прикладных задач. Ниже приведен ряд из них:
Единичная матрица, рис. 5, а. В единичной матрице все элементы равны нулю, кроме
элементов стоящих на главной диагонали и равных единице. Для создания единичной матрицы
необходимо подать команду
<Имя матрицы>=eye(<Размер>).
Например: A=eye(4,4).
Единичная матрица может быть только квадратной.
Матрица со всеми единицами, рис. 5, б. Эта матрица содержит единицы во всех ячейках. Для
создания матрицы необходимо указать
9
<Имя матрицы>=ones(<Кол-во строк>, <Кол-во столбцов>).
Например: A=ones(3, 4).
Нулевая матрица, рис. 5, в. Эта матрица содержит во всех своих ячейках одни нули. Для
создания необходимо выполнить следующую команду:
<Имя матрицы>=zeros(<Кол-во строк>, <Кол-во столбцов>).
Например: A=zeros(4, 2).
Случайная матрица, рис. 5, г. Все значения этой матрицы получаются с генератора случайных
чисел. Для создания такой матрицы необходимо задать следующую команду:
<Имя матрицы>=rand(<Кол-во строк>, <Кол-во столбцов>).
Например: A=rand(6, 3). По умолчанию в качестве элементов матрицы используются
вещественные числа.
1
0

0

0
а
0 0 0
1 0 0 
0 1 0

0 0 1
б
1 1 1 1
1 1 1 1


1 1 1 1
в
0
0

0

0
0
0 
0

0









0.9501 0.4565 0.9218
0.2311 0.0185 0.7382 
0.6068 0.8214 0.1763 

0.4860 0.4447 0.4057 
0.8913 0.6154 0.9355 

0.7621 0.7919 0.9169 
г
Рис.5. Специальные матрицы
Доступ к ячейкам матрицы. Для доступа к ячейкам матрицы необходимо указать имя матрицы,
номер строки и номер столбца. Нумерация строк и столбцов ведется с единицы. Номера пишутся в
круглых скобках. Общий формат записи
<Имя массива>(<Номер строки>, <Номер столбца>).
Например: A(1,2).
Умножение матрицы на скаляр. В математике для всех матриц определена операция
умножения матрицы на скаляр (число). Все значения матрицы в этом случае умножаются на это
число:
 A 1,1

r   A  2,1
 A  2,1

A 1, 2 
A  2, 2 
A  3, 2 
A 1, 3    r  A 1,1
 
A  2, 3     r  A  2,1
A  3, 3    r  A  2,1
r  A 1, 2 
r  A  2, 2 
r  A  3, 2 
r  A 1, 3  

r  A  2, 3  
r  A  3, 3  
Сложение, вычитание скаляра из матрицы. Кроме операции умножения матрицы на скаляр
для матрицы и скаляра определены операции сложение и вычитания. Действия так же
выполняются с каждой ячейкой матрицы отдельно:
 A 1,1

r   A  2,1
 A  2,1

A 1, 2 
A  2, 2 
A  3, 2 
A 1, 3   r  A 1,1
 
A  2, 3     r  A  2,1
A  3, 3    r  A  2,1
r  A 1, 2 
r  A  2, 2 
r  A  3, 2 
r  A 1, 3  

r  A  2, 3  
r  A  3, 3  
Сложение (вычитание) матриц. Эта операция допустима только с матрицами одинакового
размера. При выполнении операции действие выполняется с соответствующими друг другу
ячейками:
10
 A 1,1

 A  2,1
 A  3,1

A 1, 2 
A  2, 2 
A  3, 2 
 A 1,1  B 1,1

  A  2,1  B  2,1
 A  2,1  B  3,1

A 1, 3    B 1,1
 
A  2, 3     B  2,1
A  3, 3    B  3,1
A 1, 2   B 1, 2 
A  2, 2   B  2, 2 
A  3, 2   B  3, 2 
B 1, 2 
B  2, 2 
B  3, 2 
B 1, 3  

B  2, 3   
B  3, 3  
A 1, 3   B 1, 3  

A  2, 3   B  2, 3  
A  3, 3   B  3, 3  
Произведение матриц. При выполнении операции перемножения матриц выполняется
последовательное умножение строки на вектор. При этом количество столбцов в первой матрице
должно равняться количеству строк во второй матрице. Матрица результата будет иметь
количество столько же строк, сколько и в первой матрице, и количество столбцов равное
количеству столбцов во второй матрице:
 A 1,1

 A  2,1
 A  3,1

A 1, 2  
  B 1,1
A  2, 2    
B  2,1
A  3, 2   
 A 1,1  B 1,1 

  A 1, 2   B  2,1

 A 1,1  B 1, 2  

 A 1, 2   B  2, 2 

 A 1,1  B 1,3 

  A 1, 2   B  2,3

B 1, 2 
B  2, 2 
B 1,3  

B  2,3  
A  2,1  B 1,1 
 A  2, 2   B  2,1
A  2,1  B 1, 2  
 A  2, 2   B  2, 2 
A  2,1  B 1,3 
 A  2, 2   B  2,3 
A 3,1  B 1,1  

 A  3, 2   B  2,1 

A  3,1  B 1,1  
 A  3, 2   B  2,1 

A  3,1  B 1,3   

 A  3, 2   B  2,3  
Присвоение матрице математического выражения. Организация всех переменных системы
MATHLAB как матрицы вызывает следующие ограничения применения их в выражениях.
Пример 3.
t=1:5
t= 1 2 3 4 5
y=cos(t)
y=1 0.5 –0.4 –1 –0.6 0.2
z=y/t
z=–0.08
Результат – единственное число, а не функция z(t)=cos(t)/t!, как ожидалось. Причина этой
ситуации в том что обычные арифметические операции выполняются над числами, а ожидаемый
результат требует выполнения операции над множеством значений (вектором).
Для организации поэлементного выполнения арифметических операций предусмотрена
специальная форма их записи: «.op». Для приведенного выше примера применение операций
деления одного массива на другой в виде «./» дает следующий результат:
z=y ./ t
z= 0.5403 –0.2081 –0.3300 –0.1634 0.0567.
Использование массивов рассмотрено в примере 4.
Пример 4. Использование массивов.
11
 a1  1 3 12 0.5 6 
1
a1 
1.0000 3.0000 12.0000 0.5000 6.0000
 b  3 2 8 0.2 3 ;
 c 2  2 : 0.5 : 4;
 d  a1  c 2;
 e3  b  c 2;
 s  d .* e3;
2
3
 w  sqrt  b  ;
5
4
 t  s./ e3;
 u  2  s 1  b  2   c 2  3 * d  5  ;  6
 r  b  1;
 p  u * 7;
7
Комментарии к вычислениям:
1  Элементы массива задаются в квадратных скобках.
2  Другой способ задать массив в виде x:y:z, где x – первый элемент массива, z – последний
элемент массива, y – приращение каждого следующего элемента над предыдущим. Здесь
элементами массива будут 2 2,5 3 3,5 4.
3  Сложение и вычитание массивов осуществляется поэлементно.
4  Операции поэлементного умножения и деления массивов обозначаются: .* и . /
5  Взятие функции от каждого элемента массива. В результате получится массив той же
размерности.
6  Использование отдельных элементов массива. Номер элемента указывается после имени
переменной массива в круглых скобках. Нумерация элементов начинается с единицы.
7  Сложение и умножение всех элементов массива на число.
Программирование в ППП MATHLAB. Приемы разработки программ в MATHLAB в своей
основной форме совпадают с аналогичными программами, разрабатываемыми в большинстве
языков программирования.
Цикл for…end. Для данного n ,оператор
x =[];
for i =1:n
x=[x,i .2 ];
end
x
или
x =[];
for i =1:n
x=[x,i .2 ];
end
x
создает определенный вектор размерности n ,а оператор
x =[];
for i =1:n
x=[x,i .2 ];
end
x
12
создает вектор с теми же элементами, но размещенными в обратном порядке.
Заметим, что матрица может быть пустой (например, в случае оператора x=[].)
Последовательность операторов
for i =1:m
for j =1:n
H(i,j)=1/(i+j-1);
end
end
H
создаст и напечатает на экране матрицу Гильберта размерности m×n . Точка с
запятой, которая завершает внутренний оператор, предотвращает вывод на экран ненужных
промежуточных результатов, в то время как последний оператор H выводит на экран
окончательный результат.
Цикл while…end. В общем виде цикл while записывается в виде
while <условие>
<операторы>
end
<Операторы> будут повторяться до тех пор, пока <условие> будет оставаться истинным.
Например, для заданного числа a приведенная далее последовательность операторов вычислит и
выведет на дисплей наименьшее неотрицательное число n ,такое что 2n < a:
n=0;
while 2 ^n <a
n=n +1;
end
n
Условный оператор if…end. В общем виде простой оператор if используется следующим
образом:
if <условие>
<операторы>
end
<Операторы>будут выполняться только если <условие> истинно. Возможно также
множественное ветвление, что демонстрируется приведенным далее примером.
if n <0
parity =0;
elseif rem(n,2)==0
parity =2;
else
parity =1;
end
При использовании двухвариантного условного оператора часть, связанная с elseif , конечно, не
используется.
Оператор переключения case…end. При необходимости построить конструкцию ветвления с
более чем двумя логическими условиями удобнее использовать не вложенные операторы if ,а
оператор переключения switch ...case . Этот оператор имеет следующую структуру:
13
switch <выражение>
%<выражение>-это обязательно скаляр или строка
case <значение1>
операторы
%выполняется, если <выражение>=<значение1>
case <значение2>
операторы
%выполняется, если <выражение>=<значение2>
...
otherwise
операторы
%выполняется, если <выражение>не совпало
%ни с одним значением
end
Условия (операторы отношения). В MATLAB используются следующие операторы отношения:
Обозначение
<
>
<=
>=
==
=
Значение
меньше чем
больше чем
меньше
или
равно
больше
или
равно
равно
не равно
Отметим, что знак =используется в операторах присваивания, в то время как
знак ==используется в операторах отношения. Операторы отношения (или, другими словами,
логические переменные, которые они создают) могут объединяться с помощью логических
операторов:
Обозначение
&
|

Значение
И
ИЛИ
НЕ
Когда эти операторы применяются к скалярам, то результатом является тоже
скаляр 1 или 0 в зависимости от того, является ли результат истиной или ложью. Попробуйте
вычислить 3 <5, 3>5, 3==5 и 3==3. Когда операторы отношения применяются к матрицам одного
размера, результатом является матрица того же размера, у которой в качестве элементов стоят 0
или 1, в зависимости от соотношения между соответствующими элементами исходных матриц.
Попробуйте вычислить a=rand(5), b=triu(a), a ==b .Операторы while и if интерпретируют
отношение между матрицами как истинное в том случае, если результирующая матрица не имеет
нулевых элементов.
Так, если вы хотите выполнить оператор в том случае, когда матрицы A и B
полностью совпадают, вы можете написать
if A ==B <операторы>end
но если вы хотите выполнить оператор в том случае, когда матрицы A и B не равны, вы должны
ввести
if any(any(A .=B))<оператор>end
или, что проще,
if A ==B else <оператор>end .
14
Заметим, что конструкция
if A .=B, <оператор>, end
почти наверняка не даст того, что нужно, поскольку оператор будет выполняться, только если
каждый элемент матрицы A будет отличаться от соответствующего элемента матрицы B. Для
сведения матричных отношений к вектору или скаляру можно воспользоваться функциями any и
all .В предыдущем примере необходимо использование функции any два раза, поскольку эта
функция – векторная.
Функция find. Оператор k=find(x) возвращает вектор k номеров ненулевых элементов
вектора/матрицы x .Если x – матрица, то при определении индексов она рассматривается как
вектор, образованный последовательно соединенными столбцами матрицы. Вектор find(x) можно
использовать совместно с операторами отношения, поскольку результатом применения оператора
отношения к матрицам является матрица из 0 и 1 (ложь или истина ). Таким образом, можно с
помощью одного оператора find определить и записать сразу все индексы матрицы,
удовлетворяющие некоторому условию. Если при этом вспомнить, что оператор цикла for
допускает форму for k=KK ,где KK – целый вектор, то удобно использовать их вместе. Например,
если вам необходимо выполнить <оператор>только для тех элементов матрицы, которые больше
3 ,то удобно это сделать следующим образом:
for i=find(A>3)
<оператор>
end;
При отладке выражений и программ в окне Редактора-отладчика сообщения об ошибках
выдаются в командное окно MATLAB.
М-файлы бывают двух типов: сценарии и функции. Для их создания необходимо вызвать
редактор m-файлов командой edit в командном окне либо последовательностью File→New→Mfile из меню командного окна
M-файл-сценарий, именуемый также Script-файлом, является просто записью серии команд без
входных и выходных параметров. Он имеет следующую структуру:
%Основной комментарий
%Дополнительный комментарий
Тело файла с любыми выражениями
Важны следующие свойства файлов-сценариев:
– они не имеют входных и выходных аргументов;
– работают с данными из рабочей области;
– в процессе выполнения не компилируются;
– представляют собой зафиксированную в виде файла последовательность операций,
полностью аналогичную той, что используется в сессии при работе в командном окне.
Основным комментарием является первая строка текстовых комментариев, а дополнительным
– последующие строки. Основной комментарий выводится при выполнении команд lookfor и help
имя_каталога. Полный комментарий выводится при выполнении команды help Имя_файла.
Использование m-файла-сценария состоит в вызове его в заданное место файла для
выполнения определяемых им действий.
М-файл-функция является типичным объектом языка программирования системы MATHLAB.
Одновременно он является полноценным модулем с точки зрения структурного
программирования, поскольку содержит входные и выходные параметры и использует аппарат
локальных переменных. Структура такого модуля с одним выходным параметром выглядит
следующим образом:
function vаг = f_name(Список_параметров)
%Основной комментарий
%Дополнительный комментарий
Тело файла с любыми выражениями
15
vаг=выражение
М-файл функции имеет следующие свойства:
– он начинается с объявления function, после которого указывается имя переменной var –
выходного параметра, имя самой функции и список ее входных параметров;
– функция выдает значение и может использоваться в виде
name(список_параметров)
в математических выражениях;
– все переменные, имеющиеся в теле файла-функции, являются локальными, то есть действуют
только в пределах тела функции;
– файл-функция является самостоятельным программным модулем, который общается с
другими модулями через свои входные и выходные параметры;
– правила вывода комментариев те же, что у файлов-сценариев;
– файл-функция служит средством расширения системы MATHLAB;
– при обнаружении файла-функции он компилируется и затем исполняется, а созданные
машинные коды хранятся в рабочей области системы MATHLAB.
Последняя конструкция vаг = выражение вводится, если требуется, чтобы функция выдавала
результат вычислений.
Пример 5. Файл-функция
function r =randint(m,n)
%RANDINT случайная матрица с целыми элементами.
%randint(m,n) возвращает матрицу mxn с целыми
%элемента м и между 0 и 9.
a =floor(10*rand(m,n));
Пример 6. Более общий вид файл-функции
function r =randint(m,n,a,b)
%RANDINT случайная матрица с целыми элементами.
%randint(m,n)возвращает матрицу mxn с целыми
%элементами между 0 и 9.
%rand(m,n,a,b) возвращает матрицу с целыми
%элементами в диапазоне между целыми a и b.
if nargin <3,a =0;b =9;end
r =floor((b-a+1)*rand(m,n))+a;
Этот текст должен быть записан на диск в виде файла с именем randint.m (в соответствие с
именем функции – это обязательное условие для функции).
Первая строка функции - объявление имени функции, входные аргументы, выходные
аргументы. Без такой строки весь следующий файл является программой, или сценарием, а не
функцией. Так, например, оператор
z =randint(4,5)
приведет к передаче чисел 4 и 5 переменным m и n ,а выходной результат будет
передан переменной z. Поскольку переменные в файле-функции локальные, их имена никак не
влияют на имена и значения переменных в текущей рабочей области MATHLAB .
Приведенная форма файла-функции характерна для функции с одним выходным параметром.
Если выходных параметров больше, то они указываются в квадратных скобках после слова
function. При этом структура модуля имеет следующий вид:
function [vаг1,vаг2,...] = f_namе(список_параметров)
%Основной комментарий
%Дополнительный комментарий
16
Тело файла с любыми выражениями
var1-выражение
Такая функция во многом напоминает процедуру. Ее нельзя слепо использовать
непосредственно в математических выражениях, поскольку она выдает не единственный
результат, а множество результатов – по числу выходных параметров. Если функция, имеющая
несколько выходных параметров, входит в состав математического выражения, для вычислений в
выражении будет использован первый из выходных параметров. Это зачастую ведет к ошибкам в
вычислениях. Поэтому, как отмечалось, данная функция используется как отдельный элемент
программ в виде
[varl,var2, …] = namе(Список_параметров)
После такого вызова выходные переменные varl, var2, … становятся определенными и их
можно использовать в последующих математических выражениях и иных сегментах программы.
Если функция используется в виде
f_namе(список_параметров),
то выдается значение только для первого выходного параметра – переменной varl. Приведенная
далее функция, которая вычисляет наибольший общий делитель двух целых чисел с помощью
алгоритма Евклида, иллюстрирует также использование функции вывода сообщений об ошибках.
Пример 7. Файл-функция с двумя параметрами
function a=gcd(a,b)
%GCD Наибольший общий делитель.
%gcd(a,b) является наибольшим общим делителем
%целых чисел a и b,оба не равны нулю.
a =round(abs(a));b =round(abs(b));
if a ==0 &b ==0
error(’gcd не определено, если оба числа равны нулю ’)
else
while b ~=0
r =rem(a,b);
a=b;b=r;
end
end
Инструментальная панель командного окна системы MATHLAB позволяет обеспечить
простой доступ к операциям над m-файлами. Эти операции включают:
– создание нового m-файла (New File);
– открытие существующего m-файла (Open File);
– удаление фрагмента (Cut);
– копирование фрагмента (Copy);
– вставка фрагмента (Paste);
– отмена только выполненной операции (Undo);
– просмотр рабочей области (Workspace Browser);
– просмотр путей доступа (Path Browser);
– текущая помощь (Help).
Рабочая область. Рабочая область системы MATHLAB Workspace – это область памяти, в
которой размещены переменные системы. Содержимое этой области можно просмотреть из
командной строки с помощью команд who и whos. Различие между этими командами состоит в
следующем:
– who – выводит только имена переменных;
–whos – выводит информацию о размерах массивов и типе переменной.
17
Сохранение переменных рабочей области. Команда Save Workspace As… меню File либо
команда save fname, набранная в командном окне позволяет сохранить содержимое рабочей
области в двоичном m-файле, который можно в дальнейшем вызвать командой Open из меню
главного окна, либо командой load из командного окна.
Загрузка рабочей области. Команда Open меню File или команда load, набранная в командном
окне позволяет загрузить m-файл, который был ранее сохранен с помощью команды save. При
загрузке m-файла новые значения одноименных переменных будут записаны взамен старых. Если
m-файл имеет расширение, отличающееся от .mat, то необходимо использовать флаг –mat; в
противном случае MATHLAB будет считать форматом файла ASCII-формат.
Загрузка файлов данных в ASCII-формате. Команда load позволяет выполнять импорт файлов
данных в ASCII-формате; она преобразует содержимое файла в переменную с именем файла
только без расширения.
Например, применение команды load tides.dat создает в рабочей области системы MATHLAB
переменную с именем tides. Если исходный файл в ASCII-формате имеет m строк с n значениями
в каждой строке, то результатом будет массив чисел размера m×n.
Для сохранения или загрузки последовательности файлов, имена которых имеют общий корень
и дополнительный целочисленный суффикс, необходимо использовать структуру цикла.
Например, следующая конструкция позволяет сохранить квадраты чисел от 1 до 10 в файлах с
именами data1, …, data10:
file = 'data';
for i = 1:10
j = i.^2;
save([file int2(i)],'j');
end
Использование группового символа. Команды load и save допускают использование группового
символа (*) в качестве замены ряда символов в шаблоне имени переменной.
Например, команда save rundate x* сохраняет все переменные, имена которых начинаются с
символа x в файле с именем rundata.mat.
Точно также команда load testdata ex1*95 загружает все переменные, имена которых
начинаются с символов 'ex1' и заканчиваются символами '95', независимо от того, какие символы
размещены между ними.
Пример 8. Использование рабочего пространства MATLAB.
 who  1
Your variables are :
a1 b c 2 d e3 p r s
 clear b  2
 save mywork  3
 clear  4
load mywork  5
clc  6
Комментарии к вычислениям:
1  Команда вывода имен всех переменных рабочего пространства.
2  Команда удаления переменной из рабочего пространства.
3  Команда сохранения рабочего пространства в дисковом файле под заданным именем.
4  Команда очистки рабочего пространства.
5  Команда загрузки рабочего пространства из ранее сохраненного файла.
6  Команда очистки командного окна (рабочее пространство не изменяется).
В результате сохранения рабочего пространства на диске создается файл с заданным именем
(может быть произвольным) и расширением mat. Сохранение рабочего пространства можно
выполнить через меню командного окна File пункт Save workspace as …
18
В командном окне есть возможность вернуть в командную строку ранее введенные команды,
они запоминаются в специальной области памяти, называемой стеком команд. Для этого
используются клавиши «стрелка вверх» и «стрелка вниз». Клавиша «стрелка вверх» позволяет
вывести предыдущие команды в порядке обратном их вводу. Клавиша «стрелка вниз»
осуществляет прокрутку команд в противоположном направлении.
Создание графиков. Функция plot имеет различные формы, связанные с входными
параметрами, например plot(у) создает кусочно-линейный график зависимости элементов у от их
индексов. Если вы задаете два вектора в качестве аргументов, plot(x,y) создаст график
зависимости у от х.
Например, для построения графика значений функции sin от нуля до 2 сделаем следующее
t = 0:pi/100:2*pi; у = sin(t); plot(t,y).
Вызов функции plot с многочисленными парами х-у создаст многочисленные графики.
MATLAB автоматически присваивает каждому графику свой цвет (исключая случаи, когда это
делает пользователь), что позволяет различать заданные наборы данных. Например, следующие
три строки отображают график близких функций, и каждой кривой соответствует свой цвет:
у2 = sin(t-.25) ;
уЗ = sin(t-.5) ;
plot( t, y, t, y2, t, уЗ).
Функция hist – построение графика гистограммы заданного вектора. Стандартное обращение
имеет вид: hist(y,x), где y – вектор, гистограмму которого нужно построить; x – вектор,
определяющий интервалы изменения первого вектора, внутри которых подсчитывается число
элементов вектора y.
Действия с графическими окнами. Команды работы с графическим окном находятся в
главном меню окна и во всплывающем меню (щелчок правой кнопкой мыши в координатной
плоскости).
Нанесение координатной сетки. Для нанесения (удаления) сетки используется пункт
всплывающего меню Grid (рис.6).
Рис. 6. Всплывающее меню координатной плоскости
Вывод информации об отдельных точках графика. Для вывода координат некоторой точки
графика выполняется наведение курсора мыши на данную точку и нажатие левой кнопки (не
отпуская). Например, для временного графика будет выведена информация о текущем значении
сигнала и о текущем времени (рис. 7).
Рис. 7. Информация о координатах точки графика
19
Информационная надпись не исчезает при отпускании кнопки мыши. Для ее удаления
необходимо щелкнуть левой кнопкой мыши на свободном поле либо правой кнопкой мыши
вызвать всплывающее меню, показанное на рис. 8
Рис. 8. Всплывающее меню при работе с графиком
и воспользоваться пунктом Delete. Аналогично выводится информационная надпись о текущем
значении и текущей частоте для частотных характеристик.
Масштабирование и удаление графиков. Существует несколько способов изменения масштаба
графика (как временной, так и частотной характеристики).
Первый способ – использование подменю Zoom всплывающего меню (рис. 6). Пунктами
подменю Zoom являются:
In-X – масштабирование по горизонтали;
In-Y – масштабирование по вертикали;
X-Y – масштабирование по вертикали и по горизонтали (выделение прямоугольного
фрагмента);
Out – возврат исходного масштаба.
Масштабирование выполняется мышью, при удержании нажатой левой кнопки, путем
проведения горизонтальной линии (In-X), вертикальной линии (In-Y) или прямоугольника (X-Y).
Второй способ изменения масштаба – использование окна параметров координатной
плоскости. Для вывода окна параметров необходимо сначала войти в режим редактирования
графического окна, нажав мышью кнопку с изображением стрелки в меню окна (рис. 9),
Рис. 9. Меню графического окна
а затем выполнить двойной щелчок по координатной плоскости (но не по самому графику!). В
результате появится окно параметров (рис. 10).
Максимальное и минимальное значения по оси X и оси Y (для разных характеристик эти оси
имеют разный смысл) задаются в строках ввода напротив надписи Limits. При этом должен быть
установлен флажок ручного ввода пределов Manual.
Иногда требуется скрыть некоторые графики (если на одной координатной плоскости их
несколько). Для того чтобы скрыть графики (с возможностью последующего восстановления)
используется всплывающее меню графического окна (режим редактирования выключен). В
подменю Systems перечислены имена всех объектов, характеристики которых были выведены в
окно. Для того чтобы скрыть график, необходимо снять флажок напротив имени объекта.
20
Рис. 10. Окно параметров графического окна
Изменение параметров графиков. Для изменения параметров графика можно использовать
всплывающее меню графика (рис. 11). Для его вывода необходимо в режиме редактирования
графического окна выполнить щелчок правой кнопкой мыши при наведении курсора на сам
график.
Рис. 11. Всплывающее меню графика
Для изменения толщины линии используется подменю Line Width, для изменения стиля линии
(сплошная, пунктирная и т.д.) – подменю Line Style. При выборе пункта Color… появляется окно
установки цвета линии. Те же действия можно выполнить, используя окно установки параметров
графика (пункт Properties…).
Оформление графического окна. Для добавления текстовых комментариев нажмите мышью
кнопку меню графического окна с изображением буквы A. Затем выполните щелчок мыши в
нужном месте координатной плоскости, введите текст и выполните щелчок мыши в любом другом
месте координатной плоскости. В режиме редактирования графического окна можно
перетаскивать текстовую надпись с помощью мыши на любое место координатной плоскости.
Для введения заголовка над координатной плоскостью заполните строку Title в окне
параметров Insert. Для введения поясняющих надписей для осей – строки Label для оси X и для
оси Y.
Сохранение графического окна. Для сохранения координатной плоскости и ее содержимого в
графическом файле используется пункт Export… в подменю File… главного меню графического
окна. В окне сохранения файла задается тип файла (например, Bitmap files *.bmp) и имя файла.
Файлы типа Bitmap могут быть открыты графическим редактором Paint.
Установите сетку на координатную плоскость и сохраните любую из характеристик в файле
типа Bitmap. Откройте этот файл в редакторе Paint.
1.2. Работа с пакетом Control System Toolbox
21
Объекты и модели систем. Пакет Control System Toolbox позволяет создавать линейные
модели систем автоматического управления и решать задачи анализа и синтеза линейных систем.
Основной (родительской, класса LTI – Linear Time-Invariant Systems) программной единицей
пакета Control System Toolbox является линейный стационарный объект (далее просто объект),
который представляет собой линейное звено, описанное передаточной функцией с постоянными
параметрами. Объект может являться моделью всей системы, ее части или отдельного элемента
системы.
Дочерними объектами (подклассами класса LTI) являются объекты четырех различных
моделей:
– объекты, представленные в tf-форме (в форме передаточной функции)
W ( p) 
bm p m  bm 1 p m 1  ...  b1 p  b0
, mn;
an p n  an 1 p n 1  ...  a1 p  a0
– объекты, представленные в zpk-форме (в форме перечисления значений нулей и полюсов и
статического коэффициента усиления)
m
W ( p)  K
 p  z 
i 1
n
i
 p  p 
j 1
;
i
– объекты, представленные в ss-форме (в форме системы дифференциальных уравнений для
переменных состояния)
x  t   Ax  t   Bu  t  ,
y  t   Cx  t   Du  t 
;
– объекты, представленные в frd-форме (в форме вектора частот k и соответствующих
значений комплексного коэффициента передачи W  jk  ).
Работа с объектами производится в основном рабочем окне MATLAB. Здесь мы рассмотрим
работу с объектами в tf-форме, остальные формы представления объектов будут использованы по
мере необходимости в последующих лабораторных работах.
Создание объекта в tf-форме. Пусть требуется создать объект с передаточной функцией вида
b0 s m  b1 s m 1  ...  bm 1 s  bm
W ( s) 
.
a0 s n  a1 s n 1  ...  an 1 s  an
Примечание: переменная передаточной функции (оператор Лапласа) в MATHLAB
обозначается буквой s; в отечественной литературе по теории автоматического управления ее
чаще обозначают буквой p.
Для создания объекта используется функция tf (Transfer Function). Командная строка,
создающая объект с именем name, имеет следующий вид:
name=tf([b0 b1 b2 … bm],[a0 a1 a2 … an])
Имя объекта задается произвольно по тем же правилам, что имена обычных
переменных. В качестве аргументов функции tf задаются массив коэффициентов числителя b0,
b1,…, bm и массив коэффициентов знаменателя передаточной функции a0, a1,…, an. Коэффициенты
задаются в квадратных скобках через пробел или запятую. Массив коэффициентов числителя
содержит m+1 коэффициент, а массив коэффициентов знаменателя n+1 коэффициент. На месте
отсутствующих коэффициентов записывается 0.
Рассмотрим пример создания объектов.
22
Пример 9. Создание объектов с помощью функции tf.
 wl  tf 1 2 , 0.6 1 10 
Transfer function 
s2
1
0.6 s ^ 2  s  10
 w2 = tf 1, 1 0 3  2
Transfer function
1
s^23
w3 = tf 1 1.5 ,  2 0   3
Transfer function
s  1.5
2s
Комментарии к вычислениям:
1  Если в конце строки не поставлена точка с запятой, то будет выведен результат –
передаточная функция.
2  Здесь второй порядок знаменателя и равен нулю коэффициент a1.
3  Здесь первый порядок знаменателя и равен нулю коэффициент a1.
Операции над объектами. Данные операции производят объединение нескольких объектов в
один объект. С их помощью можно получить передаточную функцию системы по известным
передаточным функциям ее элементов.
Последовательное соединение объектов (рис. 12) реализуется с помощью операции умножения:
W  W1 *W2 .
f
x1
W1
x2 = y
W2
Рис. 12. Последовательное соединение объектов
Для приведенных выше передаточных функций получим
w1* w2 
s2
.
0.6 s  s  11.8s 2  3s  30
4
3
Отметим, что этот же результат может быть получен с помощью функции series в виде
W  series(w1, w2) .
Параллельное соединение объектов (рис. 13) реализуется с помощью операции сложения:
W  W1  W2 .
f
W1
W2
x1
y
x2
Рис. 13. Параллельное соединение объектов
23
Для приведенных выше передаточных функций получим
w1  w2 
s3  2.6s 2  4s  16
.
0.6s 4  s3  11.8s 2  3s  30
Отметим, что этот же результат может быть получен с помощью функции parallel в виде
W = parallel(w1, w2) .
Охват объекта отрицательной обратной связью (рис. 14)
f
x1 = y
x3
W1
x2
W2
Рис. 14. Охват объекта отрицательной обратной связью
реализуется выражением
W
W1
1  W1W2
и выполняется с помощью функции feedback:
W=feedback(W1,W2).
Для приведенных выше передаточных функций получим
W = feedback(w1,w2) =
s3 + 2s 2 + 3s + 6
.
0.6s4 + s3 + 11.8s 2 + 4s + 32
Пример 10. Создание модели автоматической системы.
Дана структурная схема автоматической системы (рис. 15). Необходимо создать ее модель в
Control System Toolbox.
G  p
0.2 s  1
0.1s
1
0.4 s  1
Y  p
2
Рис. 15. Структурная схема автоматической системы
24
 w1 = tf  0.2 1 ,  0.1 0 ;  1
 w2 = tf 1,  0.4 1 ;  1
 w3 = tf  2,1 ;  1
 sys = feedback  w1* w2, w3  3
Transfer function :
s2
0.24 s ^ 3  s ^ 2  7 s  14
Комментарии к вычислениям:
1  Создаем объекты для каждого звена.
2  Формируем объект sys – модель всей системы.
3  Передаточная функция системы выводится в командное окно.
Для сложных систем получение передаточной функции производится путем последовательного
применения допустимых структурных преобразований, приводящих к одноконтурному
представлению системы, и получения промежуточных передаточных функций, из которых
итоговая передаточная функция получается применением приведенных преобразований.
Пример 11. Пусть имеем автоматическую систему управления устройством электрической
тяги, операторное представление структурной схемы которой показано на рис. 16.
F  p
G  p

540


10
s 1
1
2 s  0.5
Y  p
0.1
0.01
Рис. 16. Система управления скоростью электропривода
Определим передаточную функцию системы W  p   Y  p  G  p  .
получаемый результат вычислений приведены ниже:
>> B1=[10];
A1=[1 1];
Sys1=tf(B1,A1);
B2=[1];
A2=[2 0.5];
Sys2=tf(B2,A2);
B3=[540];
A3=[1];
Sys3=tf(B3,A3);
B4=[0.1];
A4=[1];
Sys4=tf(B4,A4);
Sys5=series(Sys1,Sys2);
Sys6=feedback(Sys4,Sys5);
Sys7=Sys3*Sys6;
Sys=feedback(Sys7,[1])
Transfer function:
Последовательность и
25
108 s^2 + 135 s + 27
-----------------------110 s^2 + 137.5 s + 28.5
Полученная передаточная функция имеет второй порядок, причем собственная частота системы
n  28.5 110  0.509 ,
а коэффициент затухания

137.5
2 28.5 110
 1.228 ,
т.е. собственные движения системы носят устойчивый слабоколебательный характер (система
работоспособна).
Построение основных характеристик объекта. Создав объект с определенной структурой и
параметрами, можно исследовать различные характеристики объекта. Графики характеристик
строятся в специальных графических окнах. Рассмотрим способы получения основных временных
и частотных характеристик (табл.3 – 6).
Таблица 3
Исследование переходной функции и весовой функции
Команда
Комментарий
Построение переходной функции (step)
и весовой функции (impulse) функции
step(w)
объекта w. Время моделирования
impulse(w)
определяется автоматически.
Построение переходной (весовой)
функции объекта w на заданном
отрезке времени от 0 до t (где t – это
константа или переменная); t также
step(w,t)
можно задавать как массив вида
impulse(w,t)
0:dt:tmax, где tmax – время окончания
моделирования, dt – шаг расчета
переходной функции (должен быть
достаточно малым).
Окончание табл. 3
step(w1,w2,…,w Построение переходной (весовой)
функции нескольких объектов на
n)
impulse(w1,w2, одной координатной плоскости.
…,wn)
же
с
заданием
времени
step(w1,w2,…,w То
моделирования.
n,t)
impulse(w1,w2,
…,wn,t)
Таблица 4
Исследование реакции на произвольно заданное воздействие
Команда
Комментарий
Построение реакции объекта w на
воздействие
заданное
двумя
массивами. Массив t – это массив
значений времени. Задается в виде
lsim(w,u,t)
0:dt:tmax, где tmax – время окончания
моделирования, dt – шаг расчета
(должен быть достаточно малым).
Массив u – это массив значений
входного воздействия того же размера,
что и массив t.
26
lsim(w1,w2,…,w
n,u, t)
То же для нескольких объектов
(графики
выводятся
на
одну
координатную плоскость).
Примечание. Обозначение координатных осей графического окна производится при выводе
временных характеристик:
Amplitude – ось значений выходной величины объекта;
Time (sec) – ось времени (единицы – секунды).
Таблица 5
Исследование АФЧХ – амплитудно-фазовой частотной характеристики
(Nyquist diagram)
Команда
Комментарий
nyquist(w)
Построение АФЧХ объекта w.
То же с заданием диапазона частот, для
которого строится АФЧХ (в фигурных
nyquist(w,
скобках). Частота omin должна быть
{omin,omax})
больше нуля.
nyquist(w1,w2,…,w Построение АФЧХ нескольких объектов
на одной комплексной плоскости.
n)
То же с заданием диапазона частот.
nyquist(w1,
…,wn,{omin,
omax})
Примечание. Амплитудно-фазовая частотная характеристика строится в виде годографа на
комплексной плоскости для диапазона частот –∞…∞ и представляет собой две симметричные
относительно действительной оси кривые: одна для положительных частот, другая для
отрицательных частот. В отечественной литературе принято строить амплитудно-фазовую
частотную характеристику строить только для положительных частот. Обозначение осей
комплексной плоскости в графическом окне: Real Axis – действительная ось, Imaginary Axis –
мнимая ось.
Таблица 6
Исследование ЛЧХ – логарифмических частотных характеристик
(Bode diagram)
Команда
Комментарий
Построение ЛЧХ объекта w.
bode(w)
bode(w,{omin,omax То же с заданием диапазона частот.
Частота omin должна быть больше
})
нуля.
ЛЧХ
нескольких
bode(w1,w2,…,wn) Построение
объектов в одном окне.
bode(w1,w2,…,wn,{ То же с заданием диапазона частот.
omin,omax})
Построение ЛЧХ объекта w с
выводом информации о запасах
устойчивости
автоматической
margin(w)
системы по амплитуде и по фазе.
Объект w должен описывать
разомкнутую систему.
Примечание. Команды bode и margin всегда строят 2 логарифмические частотные
характеристики в одном окне друг под другом в одном масштабе частоты: ЛАЧХ –
логарифмическую амплитудную частотную характеристику и ЛФЧХ – логарифмическую фазовую
частотную характеристику. Обозначение координатных осей: Magnitude (dB) – ось значений
амплитудно-фазовой частотной характеристики в децибелах, Phase (deg) – ось значений
27
логарифмической фазовой частотной характеристики в градусах, Frequency (rad/sec) – ось частоты
(в радианах в секунду).
Для того чтобы построить новую характеристику в другом графическом окне (при сохранении
на экране уже имеющегося графического окна) необходимо ввести команду figure (создается
новое пустое графическое окно); после запуска следующей команды вывода графиков они
появятся в новом окне. При построении нескольких характеристик на одной координатной
плоскости каждый график строится своим цветом в зависимости от порядка построения.
Стандартным для MATHLAB является следующий порядок цветов графиков: синий, зеленый,
красный, голубой, фиолетовый.
Пример 12. Построим переходную и весовую характеристики системы из примера 11. Для
этого добавим в приведенную выше последовательность команд следующие:
>> step(Sys)
>> figure
>> impulse(Sys)
В результате их выполнения буду построены переходная и весовая функции приведенные на
рис. 17.
а
б
Рис. 17. Переходная (а) и весовая (б) функции системы из примера 11
Для определения значений нулей и полюсов (т.е. корней числителя и знаменателя
соответственно) передаточной функции служат функции zero(sys) и pole(sys), а для определения
их расположения – функция pzmap(sys). Получение значений корней и их расположения для
передаточной функции из примера 11 производится вставкой их в командный фай, приведенный в
примере.
2. Порядок выполнения лабораторной работы
2.1. Задания на выполнение
Задание 1. Вычислите три произвольно заданных числовых выражения, используя MATHLAB.
Одно из них должно быть длинным, т.е. построено с использованием операции переноса.
Задание 2. Создайте несколько массивов различными способами (см. комментарии к примеру
4)
Задание 3. Выведите на экран список переменных рабочего пространства и сохраните рабочее
пространство в файле с произвольным именем; затем удалите все переменные из рабочего
пространства и убедитесь, что оно очищено; снова загрузите сохраненное рабочее
пространство и выполните с ними произвольные действия.
Задание 4. Создайте m-файл любой выбранной вами функции, сохраните его и используйте для
вычислений.
Задание 5. Создай те график некоторой функции с различными диапазонами и шагом
изменения параметра (ов).
Задание 6. Создайте объекты с передаточными функциями:
28
10
0.8s  5
2s
,
, 2 .
2
s  s  6s  4 3s  5 s
3
Задание 7. Создайте модель системы, структурная схема которой показана на рис. 16.
2
F  p
5

1
2s  1
0.05s  1
0.1s  1
Y  p
10
s
1
0.1s  1
Рис. 16. Структурная схема автоматической системы
Задание 8. Создайте объект с передаточной функцией
1
.
s  0.5s  1
2
Получите для него переходную и весовую функции, амплитдно-фазовую частотную
характеристику, логарифмическую частотную характеристику (в трех различных графических
окнах), а также значения и расположение нулей и полюсов передаточной функции..
Задание 9. По полученным в предыдущем задании характеристикам определите:
– значения переходной функции в точке ее максимума и в точке первого минимума после
наступления максимума, а также значения времени в этих точках;
– значения действительной и мнимой части АФЧХ на частоте 1.09 рад/с;
– частоту, на которой ЛАЧХ имеет максимум;
– значение ЛФЧХ на этой частоте.
– установите сетку на координатную плоскость и сохраните любую из характеристик в
файле типа Bitmap, Visio и т.п.
2.2. Содержание отчета
1. Цель работы.
2. Результаты выполнения заданий 1 – 9 с описанием выполненных действий, использованных
команд и представлением полученных результатов.
3. Выводы по работе.
3. Контрольные вопросы
1. Назначение, области применения и средства пакета MATHLAB и теории управления.
2. Запуск пакета MATHLAB и выход из него.
3. Виды сохраняемой информации и способы ее сохранения.
4. Рабочие окна пакета MATHLAB и работа с ними.
5. Понятие m-файла и Script-файла.
6. Работа с переменными в пакете MATHLAB.
6. Основные операции с матрицами в пакете MATHLAB.
7. Генерация векторов и массивов в пакете MATHLAB.
8. Основные пакеты расширения MATHLAB, используемые в теории управления.
9. Создание графических объектов (функции plot() и hist()).
10. Масштабирование и удаление графиков.
11. Совмещение нескольких графиков в одном окне.
12. Формы представления объектов в Control System Toolbox.
13. Операции над объектами в Control System Toolbox.
14. Создание модели системы управления в Control System Toolbox.
15. Основные характеристики объекта и способы их построения в Control System Toolbox.
29
16. Действия с графическими окнами в Control System Toolbox и способы их выполнения.
17. Работа с графическими объектами в Control System Toolbox.
Лабораторная работа № 2
Тема: Знакомство с инструментарием приложения SIMULINK. Подготовка исходных данных
и моделирование систем автоматического управления.
Цель работы: На простейшем примере дифференциальных уравнений первого и второго
порядка освоить этапы подготовки и моделирования объектов регулирования.
Содержание работы:
1. Составление моделей 1-го и 2-го порядков в среде Simulink.
2. Приведение модели к безразмерному виду.
3. Изучение поведения модели 2-го порядка в зависимости от значения коэффициента
демпфирования.
1. Основные теоретические сведения
1.1. Постановка задачи моделирования систем управления
Модели систем управления. Большинство объектов регулирования могут быть описаны
линейными дифференциальными уравнениями с постоянными коэффициентами. На примере
объекта, описываемого дифференциальным уравнением второго порядка, рассмотрим все этапы
моделирования и анализа свойств объекта. Возьмем, к примеру, объект, у которого входным
воздействием является расход пара un, кг/час, а выходной величиной – температура y, 0С, рис.1.
un t 
Объект
y t 
Рис. 1. Структурное представление объекта
Допустим, что в результате экспериментов по исследованию динамики объекта получено
следующее дифференциальное уравнение, описывающее изменение
y  t  в зависимости от
изменения возмущающей функции u n  t  :
 мин 2  d 2 y
 1 
 мин  dy
 1 
256 
7 y  5
 2  118 
 un

 С  dt
 С
 кг час 
 С  dt
Возмущающая функция u n  t  должна быть известной функцией времени. Должны быть заданы
также начальные условия. Предположим, известно, что в начальный момент времени температура
объекта была равна
y t 0  128 C
30
и происходило остывание со скоростью
 C 
dy
 1.6 
.
dt
 мин 
Таким образом, необходимо решить на ЭВМ следующее уравнение:
 мин 2  d 2 y
 1 
 мин  dy
 1 
256 
7 y  5
 2  118 
 un

 С  dt
 С
 кг час 
 С  dt
(1)
при начальных условиях:
y t 0  128 C
(2)
 C 
dy
 1.6 

dt
 мин 
(3)
Представление модели с использованием метода понижения порядка производной. Решить
дифференциальное уравнение – значит, получить функцию y(t), меняющуюся во времени. Для
составления структурной схемы решения применим метод понижения порядка производной,
который сводится к следующим пяти этапам.
Этап I. Разрешим дифференциальное уравнение (1) относительно высшей производной


d 2y
1
 1  dy
 1 
 0.46 
 0.027 
y t  0.02 
u t
2
2   
2  n 

dt
 мин  dt
 мин 
 кг час  мин 
(4)
d 2y
известно в любой момент времени,
dt 2
dy
с помощью интегрирующего звена и с учетом начальных условий получим в точке В значение .
dt
Затем, с помощью еще одного интегратора , в точке С получим значение искомой функции y  t  .
Этап II: Предположив (рис. 2), что в точке А значение
d 2y
dt 2
A
н. у.

н. у.
dy
dt
B

y
C
Рис. 2. Структурная реализация левой части уравнения (1.4)
Этап III. Обратим теперь внимание на правую часть уравнения (4). Она представляет собой
сумму трех функций времени
dy
, y  t  и u n  t  , взятых с постоянными коэффициентами.
dt
31
Допустим (рис. 3), что нам известны функции y  t  в точке С1 и
dy
в точке В1. Теперь,
dt
просуммировав их с коэффициентами, соответствующими правой части (4), получим вторую
производную
d 2y
d 2y
. Таким образом, на выходе сумматора, в точке A1, будет величина
,
2
dt
dt 2
известная в любой момент времени.
un t 
0.02
0.02 u n

B1
0.027
0.027 y
0.46
C1
0.46
d 2y
dt 2
A1



dy
dt
Рис. 3. Структурная реализация правой части уравнения (1.4)
Этап IV. Равенство (1.4), которое происходит из физической сущности моделируемого
объекта, требует, чтобы оно (это равенство) выполнялось в каждый момент времени t .
Реализовать это требование легко, достаточно замкнуть схемы, показанные на рис. 2 и 3. При этом
сольются: точки А и А1 , В и В1 , С и С1 (рис. 4).
un t 
0.02
0.027
н. у.
0.027 y
0.46
0.46




d 2y
dt 2
A  A1 

н. у.
dy
dt
B  B1 

y
C  C1 
dy
dt
Рис. 4. Структурная реализация уравнения (1.4)
Этап V. Установить начальные условия, которые определяют единственность решения
дифференциального уравнения.
Инструментарий Simulink пакета MATHLAB как раз и позволяет моделировать и исследовать
поведение систем, описываемых любыми (линейными, линейными с переменными
коэффициентами и нелинейными) дифференциальными уравнениями. Единственное требование к
дифференциальным уравнениям – они должны быть представимы в виде структурных схем,
подобных указанной на рис. 4.
Показатель демпфирования в объекте второго порядка. Линейное дифференциальное
уравнение можно записать в виде передаточной функции как отношение преобразованного по
Лапласу выходного сигнала к преобразованному по Лапласу входному сигналу. Для уравнения (1)
передаточная функция будет иметь вид
32
 1 
5

Y  p
 кг час 
W  p 

.
Un  p
 мин 2  2
 мин 
 1 
256 
p

118
p

7

 С 
 С 
 С 
Для приведения передаточной функции к каноническому виду разделим числитель и
 1 
знаменатель на коэффициент 7  
 С
 С 
0.714 
кг час 

W  p 
36.6  мин 2  p 2  16.86  мин  p  1
(5)
В общем случае линейному дифференциальному уравнению второго порядка соответствует
передаточная функция вида
W  p 
k
T p  2 Tp  1
2
2
(6)
где k – коэффициент усиления, T – постоянная времени,  – коэффициент относительного
затухания (показатель демпфирования).
Заданное уравнение (5), приведенное к стандартному виду (1.6), станет следующим:
 С 
0.714 

 кг час 
W  p 
(7)
2
 6.05  мин2  p 2   6.05  2 1.393  мин p  1
Условие
например
как
в
уравнении
(7),
  1,
  1.393
2 2
означает, что корни характеристического уравнения T p  2 Tp  1  0 являются вещественными и
(6) описывает апериодическое (неколебательное) звено второго порядка. Такое звено может быть
представлено как последовательное соединение двух апериодических звеньев первого порядка

W  p 
1
k

T1 p  1 T2 p  1
(8)
При   1 корни характеристического уравнения комплексные, и передаточная функция
описывает колебательное звено второго порядка, которое не может быть представлено в форме
(1.8), а только в форме (6).

При   1 в уравнении (8) T1  T2 и корни характеристического уравнения действительные и
кратные. Передаточную функцию в этом случае можно записать

W  p 
k
k

T p  2Tp  1 Tp  12
2
2
Малейшее уменьшение  по отношению к 1, например   0.97 , приводит к появлению двух
комплексных сопряженных корней характеристического уравнения и такой объект становится
колебательным.
33
Случаю   0 соответствует колебательное звено второго порядка консервативного типа,
которое является идеальным случаем, когда рассеиванием энергии в системе можно пренебречь.
Переходные характеристики такого звена представляют собой незатухающие колебания.

Если  1 , то свойства звена приближаются к свойствам апериодического звена первого
порядка. Например, если

W  p 
k
100 p  1 0.01 p  1 ,
то объект без потери точности может описываться передаточной функцией
W  p 
k
100 p  1 .
Единственное отличие будет наблюдаться в самом начале переходного процесса. Какое это
отличие, вам следует выяснить самим, проведя моделирование и, может быть, потом обосновать
их (эти отличия) аналитически.
Приведение передаточных функций к безразмерному виду. Рассмотрим снова уравнение (6).
При переходе от передаточной функции к амплитудно-фазовой характеристике, произведение Tp
заменяют на Tjω. Чтобы привести дифференциальный оператор к безразмерному виду, изменим
масштаб времени (частот), обозначив Ω = Tω. Соответствующий дифференциальный оператор
обозначим как P = Tp. В результате этих преобразований передаточная функция примет вид
W  p 
k
p 2  2 p  1
.
(9)
В такой форме передаточная функция в явной форме зависит только от показателя
демпфирования  .
1.2. Работа с пакетом Simulink
После запуска MATHLAB запуск Simulink может быть произведен одним из трех способов:
– кнопкой запуска Simulink;
– использованием соответствующего раздела меню Start пакета MATHLAB.
– командой Simulink в командном окне MATHLAB.
34
Кнопка запуска Simulink
Запуск Simulink
из меню Start
Рис. 5. Средства запуска Simulink
При этом происходит переход к обозревателю библиотеки модулей Simulink Library Browser,
из которой вызываются модели компонентов исследуемой системы, показанные на рис. 6. Мы
будем пользоваться частью библиотеки Simulink, включающей в себя разделы:
– Continuous – модели линейных непрерывных систем;
– Math Operations – модели математических операций;
– Sinks – приемники сигналов;
– Sourses – источники сигналов;
Библиотека блоков. Внешний вид наиболее часто встречающихся в системах управления
элементов показан на рис. 7.
Рассмотрим некоторые блоки, входящие в состав библиотеки. Каждый блок имеет
определенное число входов и выходов для связи с другими блоками модели. Некоторые блоки
имеют только входы или только выходы. Свойства блоков определяются параметрами,
задаваемыми пользователем. Эти параметры вводятся в окне параметров, для раскрытия которого
выполняется двойной щелчок левой кнопкой мыши по изображению блока.
Непрерывные линейные системы
Нелинейности
Дискретные линейные системы
Таблицы поиска
Математические операции
Верификация моделей
Утилиты разработки моделей
Порты и подсистемы
Свойства сигналов
Маршрутизация сигналов
Приемники сигналов
Источники сигналов
Функции, определенные пользователем
Рис. 6. Окно библиотеки модулей Simulink
35
а
д
б
в
е
и
г
ж
з
к
Рис. 7. Блоки-компоненты систем управления
Первые четыре блока (рис.7, а–г, библиотека Sourses ) представляют собой настраиваемые
источники сигнала. Они имеют один выход и не имеют входов.
Источник постоянного сигнала (константа), рис.7, а, формирует постоянный сигнал заданной
величины.
Параметр блока: Constant Value – значение константы.
Источник ступенчатого сигнала (Step), рис.7, б, формирует ступенчатый сигнал (рис. 8).
g t 
gк t 
gн t 
t
tн
Рис. 8. Ступенчатый сигнал
Параметры блока:
Step time – время скачка сигнала.
Initial value – начальное значение.
Final value – конечное значение.
Источник линейно изменяющегося сигнала (Ramp), рис. 7, в, формирует сигнал, возрастающий
или убывающий с постоянной скоростью (рис.9).
tg
g t 


t
tн
Рис. 9. Линейно возрастающий сигнал
Параметры блока:
Slope – наклон (значение производной по времени).
Start time – время начала действия сигнала.
Источник синусоидального сигнала, рис.7, г, формирует синусоидальный сигнал с заданной
частотой, амплитудой и начальной фазой.
Параметры блока:
Amplitude – амплитуда.
Frequency (rad/sec) – частота в рад/с.
36
Phase (rad) – начальная фаза в радианах.
Графический индикатор сигналов, рис.7, д, предназначен для наблюдения результатов
моделирования – временных графиков величин модели. Блок имеет один вход, куда подается
исследуемый сигнал модели, и не имеет выходов. В модели можно использовать только один
индикатор. Наблюдение нескольких графиков в одном окне осуществляется с помощью
мультиплексора. После того как расчет модели произведен компьютером, можно посмотреть
результат, для чего необходимо выполнить двойной щелчок по значку индикатора. В результате
раскрывается графическое окно с графиком сигнала в функции времени.
Мультиплексор, рис.7, е, имеет несколько входов, число которых определяется пользователем,
и один выход. Мультиплексор объединяет несколько сигналов в один векторный сигнал, который
передается в модели по одной линии. Использование мультиплексора позволяет подать на
индикатор несколько сигналов и наблюдать их графики на одной координатной плоскости.
Параметр блока: Number of inputs – число входов.
Остальные блоки (рис.7, ж–к) представляют собой преобразователи сигналов.
Линейное динамическое звено, рис. 7, ж.
Параметры блока:
Numerator – массив коэффициентов числителя передаточной функции.
Denominator – массив коэффициентов знаменателя передаточной функции.
Коэффициенты числителя и знаменателя передаточной функции задаются по тем же правилам,
как в Control System Toolbox. После ввода параметров передаточная функция показывается внутри
значка блока.
Пропорциональное звено, рис. 7, з, умножает сигнал на величину Gain.
Параметр блока: Gain – коэффициент передачи.
Звено запаздывания, рис.7, и, выполняет задержку сигнала на выходе блока относительно
входного сигнала, при этом полностью сохраняет форму входного сигнала.
Параметр блока: Time delay – время задержки.
Сумматор, рис. 7, к, выполняет алгебраическое суммирование (сложение или вычитание)
заданного числа входных сигналов. Графическая форма сумматора может быть изменена после
вывода элемента в окно модели (щелчок на сумматоре левой кнопкой мыши → Sum parameters
в всплывающем окне → Icon Shape)
Параметр блока: List of signs – список знаков. В список знаков записываются плюсы и минусы
без пробелов (например +–++). Тем самым определяется число входов сумматора, и знак каждого
слагаемого.
Действия с блоками. В состав основных действий с блоками входят:
– вставка блока из библиотеки в окно модели;
– выделение блока;
– удаление блока;
– изменение размеров блока;
– изменение атрибутов блока;
– копирование блока;
– изменение ориентации блока.
Вставка блока из окна библиотеки в окно модели выполняется с помощью мыши (удерживая
левую кнопку). При этом окно модели должно быть предварительно создано (File → New → Model).
Выделение блоков. Блок может быть выделенным или невыделенным. Для выделения блока
выполняется однократный щелчок левой кнопкой мыши по значку блока. Выделение показывается
четырьмя квадратными метками по углам значка блока (рис.10, а). Для выделения нескольких
блоков выполняется однократный щелчок мышью по значкам блоков с удержанием клавиши Shift
или путем обведения прямоугольного участка окна рамкой.
а
б
Соединение выполнено
в
Соединение не выполнено
37
г
д
Рис. 10. Действия с блоками
Удаление блоков. Нажатие клавиши Delete приводит к удалению всех выделенных блоков.
Изменение размеров блока. Значок блока можно растягивать, захватив мышью за квадратные
угловые метки.
Изменение имени блока. Чтобы ввести новое имя блока выполняется однократный щелчок
левой кнопкой мыши по старому имени. Имя блока обводится рамкой и появляется курсор
(рис.10,б). После этого можно редактировать имя. Не допускается отсутствие имени блока (пустая
строка) и наличие в одном окне блоков с одинаковыми именами.
Вращение блока. При выполнении щелчка правой кнопкой мыши по значку блока появляется
всплывающее меню блока, где находится подменю Format. В подменю Format содержатся
команды: Rotate block – вращение блока на 90 по часовой стрелке, Flip block – разворот блока на
180, Flip name – переброска имени на другую сторону блока.
Создание копии блока. Для создания копии необходимо захватить блок, удерживая правую
кнопку мыши и перетащить на свободное место окна.
Сборка схемы модели. Сборка модели включает в себя выполнение следующих действий:
– компоновка блоков;
– проведение и корректировка соединительных линий;
Компоновка блоков состоит в таком их размещении на экране, при котором структура
соединительных линий будет выглядеть наиболее просто.
Проведение соединительных линий. Для соединения выхода одного блока с входом другого
указатель мыши наводится на исходную точку и затем проводится линия (удерживая левую
кнопку мыши). Когда линия доведена до конечной точки, кнопка мыши отпускается. Жирный
конец стрелки означает, что соединение выполнено (рис.10, г). Если линия осталась не
подключенной, конец стрелки будет тонким (рис.10, д). Неподключенную стрелку затем можно
продолжить. Линии можно захватывать мышью и изменять их конфигурацию.
Отделение блока от линии. Для отделения блока он захватывается мышью с удержанием
клавиши Shift и перетаскивается на другое место.
Удаление линий. Линии, как и сами блоки, можно выделять. После нажатия клавиши Delete
выделенные линии удаляются.
Создание узлов. Для создания узла на линии новая линия тянется от выбранной точки с
удержанием правой кнопки мыши (рис.10, в).
3. Чтобы собрать схему, сначала необходимо "перетащить" все нужные звенья из
соответствующих наборов на пространство модели untitled, предназначенное для составления
блок-схемы вашей модели. Делается это следующим образом: выбрать элемент в библиотеке,
нажать на элементе левой кнопкой мыши и, не отпуская кнопку, перенести указатель мыши в окно
построения модели и там отпустить.
В соответствии со схемой на рис. 4 нам необходимы: источник скачкообразного возмущения
для un , сумматор, три усилителя, два интегратора, два источника постоянного сигнала (для
задания начальных условий) и осциллограф. После выбора на структурной схеме модели будут
помещены все необходимые элементы, рис.11.
38
Рис. 11. Пространство модели с размещенными в нем звеньями будущей модели
Теперь необходимо связать между собой эти звенья, соединив их в соответствии со схемой,
рис. 4. Для этого вначале необходимо разместить звенья так, чтобы было удобно проводить
соединения. Затем нужно установить курсор на выходе нужного звена и нажать левую кнопку
мыши. При этом указатель примет вид перекрестия. Теперь, не отпуская кнопки, "тащить"
появившуюся линию до входа другого звена. Когда указатель примет вид двойного перекрестия,
отпустить кнопку. Система создаст связь между элементами и обозначит ее стрелкой по
направлению сигнала. Другие действия по размещению элементов и построению соединительных
линий приведены ниже:
– если подвести линию от входа элемента к другой, уже существующей, линии связи и
отпустить кнопку мыши, то система создаст узел, в котором сигнал расходится в двух
направлениях;
– если необходимо перевернуть звено, то его сначала выделить одинарным щелчком мыши
(появятся точки по углам элемента). Затем, нажимая Ctrl+R, добиться нужного расположения.
– линии связи, как и элементы, удаляют выделением и нажатием Del; выделенная связь
обозначается двумя пустыми точками на ее концах.
Перемещение целой группы элементов "с вытягиванием линий связи" осуществляется в два
этапа. Сначала выделяем прямоугольную область, которая охватывает нужные вам элементы. При
этом все элементы этой области будут "помечены". Затем, "ухватив" любой отмеченный элемент
из этой области, перемещаем его в нужное место и отпускаем. В результате переместятся все
элементы отмеченной области.
4. Для того, чтобы у сумматора установить нужное количество входов (в нашем примере – три),
поступают следующим образом: двойным щелчком на сумматоре открывают меню его свойств. В
строке этого меню задают последовательность плюсов и минусов, которая определит количество
входов и знаки, считая сверху вниз, с которыми сигналы будут суммироваться. В нашем примере
возмущающее воздействие суммируется с положительным знаком, а нулевая и первая
производные - с отрицательными (комбинация " + - - ").
5. Чтобы иметь возможность задавать начальные условия от внешнего источника, в свойствах
интеграторов, в меню Источник исходных условий (Initial condition source) выбирают внешний
(external). После этого на иконке интегратора появляется еще один вход (нижний), на который и
подают сигнал задания начального условия. В нашем примере это будет источник постоянного
сигнала. Меню свойств закрывают нажатием кнопки ОК.
6. Величину постоянного сигнала задают в свойствах источника (строка Constant value).
Величину коэффициента усиления задают в свойствах усилителя (строка Gain) как показано но на
рис. 12. Величину и время скачкообразного возмущения задают в свойствах источника
скачкообразного возмущения. Там же определяют момент поступления возмущения (строка Step
time), значения
Установка значения
коэффициента усиления
Рис. 12. пример установки параметров источника сигнала
сигнала до и после возмущения (строки Initial value и Final value соответственно).
39
7. Окончательный вид готовой блок-схемы модели показан на рис.12.
8. Запуск модели в работу, т.е. начало собственно процесса моделирования производится
нажатием кнопки
или через команду Start меню Simulation. Двойной щелчок на иконке
осциллографа (Scope) открывает его окно, в котором можно наблюдать изменение выходных
переменных во времени, как показано на рис. 13.
Для удобства наблюдения рекомендуется разбить весь экран монитора по горизонтали на два
поля: в верхнем поле развернуть осциллограф, а в нижнем оставить модель (или наоборот, вверху
блок-схема модели, а внизу экран осциллографа, как показано на рис. 13 и 14).
9. Настройка длительности процесса моделирования производится в меню Simulation окна
построения модели untitled (Simulation → Simulation parameters). В этом меню в закладке Solver
(Решатель) можно выставить время начала процесса моделирования (поле Start time) и его конца
(поле Stop time).
Рис. 13. Модель системы в рабочем окне Simulink
Рис. 14. Изображение выходного сигнала на экране осциллографа
40
10. Настройка параметров осциллографа осуществляется следующим образом. При двойном
щелчке левой кнопкой мыши на иконке осциллографа появляется его экран с координатной
разметкой. При нажатии на вторую справа кнопку (Параметры) на панели инструментов
появляется окно с двумя закладками Axes и Settings. Использую закладку Axes устанавливаем
размеры по вертикали (Ymin, Ymax). Кнопкой "бинокль"
на панели инструментов
осциллографа можно автоматически подобрать степень увеличения, при которой на осциллографе
видны все участки уже полученных кривых без "зашкаливания". Сохранить эти настройки
осциллографа можно кнопкой
, расположенной там же, справа от "бинокля". Действие
"увеличительных стекол" X и Y надо испробовать самим. Они предназначены для разворачивания
на весь экран какой-либо интересующей части графиков. Разметка оси абсцисс (времени)
устанавливается автоматически в соответствии с величинами Start Time и Stop Time, п. 10, (если
употребить слово auto в поле Time range).
11. Работу модели можно приостановить кнопкой Pause, в которую превращается кнопка
запуска моделирования (п. 9) после ее нажатия. Рядом, справа расположена кнопка возврата в
начальное состояние.
12. Simulink автоматически преобразует блок-схему модели в систему дифференциальных
уравнений. Выбор метода интегрирования этой системы можно произвести также через меню
Simulation. На панели Solver options в меню Simulation можно выставить шаг интегрирования
(левое поле) и тип решателя (правое поле). По умолчанию выставлен автоподбор шага (Variable
step) и интегрирование методом Дорманда-Принца (ode5 Dormand-Prince). Там же можно
выставить допустимые Абсолютную погрешность и Относительную погрешность
интегрирования (поля Absolute tolerance и Relative tolerance соответственно). Рекомендуем
оставить пока все эти параметры без изменений.
13. Многолучевой осциллограф получается добавлением элемента - мультиплексора Mux из
библиотеки Signal Routing, рис. 15. В этом случае можно наблюдать в одних координатах
одновременно несколько сигналов, например y  t  , y  t  , y t  , un t  . Двойным щелчком мыши на
мультиплексоре открывается меню его свойств, где можно выставить количество входов.
Рис. 15. Подключение мультиплексора к приемнику сигналов
14. Запись кривых-результатов моделирования (для долговременного хранения и дальнейшего
использования) осуществляется подсоединением на место осциллографа, или параллельно с ним
элемента В Файл (To File), расположенного в наборе Приемники (Sinks), табл. 1 и рис. 16.
Рис. 16. Подключение мультиплексора для записи результатов моделирования в файл
41
В свойствах элемента В Файл необходимо задать (придумать) имя файла c расширением "mat"
(например outdata1.mat, рис. 14), в который будет производиться запись данных.
15. Сравнение вида новой(ых) кривой(ых)-результата только что проведенного моделирования,
с некоторыми "реперными кривыми", полученными ранее, легко проводить с помощью элемента
Из Файла (From File). Для этого из набора Источники (Sources), см табл. 1, помещаем на поле
блок-схемы моделирования элемент Из Файла. Это обеспечит вывод на осциллограф "реперных
кривых" вместе с новой(ыми) кривой(ыми) моделирования рис. 14. в свойствах элемента Из
Файла необходимо указать конкретное имя файла, в котором хранятся "реперные кривые".
Естественно также, что файл под этим именем ранее выступал в качестве элемента В Файл, когда
в него записывались "реперные кривые".
16. Для сохранения блок-схемы на жестком диске достаточно нажать кнопку
,
расположенную на панели инструментов окна untitled. Если вы сохраняете блок-схему первый
раз, вам будет предложено ввести имя, под которым будет сохранена ваша схема. При
последующих сохранениях данные в файле с указанным именем будут обновляться. По
умолчанию файлы сохраняются в директории "…/Matlab/work", но настоятельно рекомендуется
(чтобы не смешивались пользовательские файлы и собственные программные файлы среды
MatLab) создать новую поддиректорию. Рекомендуется в качестве имени поддиректории
использовать свою фамилию, записанную латинскими буквами, например "…/Matlab/Afanasiev/".
17. Для вызова с жесткого диска ранее сохраненной модели достаточно активизировать
функцию Открытие Файла (Open File) кнопкой
с панели инструментов окна untitled или
выбрать эту функцию из меню Файл (File). В диалоговом меню следует выбрать директорию
расположения и имя ранее сохраненного файла с расширением ".mdl".
18. Для того, чтобы продолжить работу с моделью на другой ПЭВМ и/или в другое время,
необходимо:
– сохранить Рабочее Поле (Workspace) в файл на жестком диске (mat-файлы);
– сохранить блок-схему модели в файл на жестком диске (mdl-файлы);
– сохранить на жестком диске файлы-функции (если вы их создавали в окне MatLab
Editor/Debugger (m-файлы);
– переписать все файлы, созданные в трех предыдущих пунктах на дискету 3.5’’.
Методы контроля правильности набора схем и установки коэффициентов. Первым и
наиболее общим показателем правильности составления структурной схемы и установки
коэффициентов является изменение всех переменных в допустимых границах. Если после нажатия
кнопки Пуск некоторые переменные монотонно возрастают и "уходят в бесконечность".
Причиной этого может быть наличие интегратора, не охваченного обратной связью (неправильно
сделаны соединения), или установка большого значения коэффициента усиления в статике
(неправильно установлены коэффициенты).
Если решение сильно колебательное, то это может характеризовать: отсутствие обратных
связей по производным (например, при решении дифференциального уравнения второго порядка)
или наличие большого коэффициента усиления при моделировании колебательного звена.
Если переменные не выходят за предусмотренные пределы, то следующие количественные
методы позволяют оценить точность моделирования:
Проверка правильности выставления коэффициентов передачи по коэффициенту
усиления в статике. На вход собранной схемы подают скачкообразное возмущение. Например
un  const  40 , рис. 17.
42
Рис. 17. Изображение входного единичного воздействия и его результатов
После окончания переходного процесса измеряют численное значение выходной величины
y   . Это удобно сделать, подсоединив параллельно осциллографу элемент Дисплей (Display) из
набора Приемники (Sinks), рис. 15.
Пусть для модели, описываемой уравнением
 мин 2  d 2 y
 1 
 мин  dy
 1 
6
 1.1   y  0.09 
 2  2.1 
 un

 С  dt
 С
 кг час 
 С  dt
(15)
получилось y    3.378 .
Следовательно, полученный коэффициент усиления будет
K
y 
un   

3.378
 0.08178 .
40
Сравниваем полученный коэффициент в статике с действительным по уравнению (15)
1.1y  0.09un , K 
y 0.09

 0.08182 .
un
1.1
43
Коэффициенты
усиления
в
статике
должны
совпадать
с необходимой точностью. Если нужна более высокая точность, то следует вновь выставить
коэффициенты, взяв большее количество знаков после десятичной точки.
Проверка правильности выставления коэффициентов по характеру переходного процесса
(решения) для дифференциальных уравнений второго порядка. На вход собранной схемы
подают скачкообразную возмущающую функцию, например un  const  40 , и наблюдают характер
решения (переходного процесса), рис.17.
Если объект является объектом второго порядка то, в зависимости от корней
характеристического уравнения, могут быть получены следующие виды переходных процессов
(рис. 18):
а) оба корня действительные, отрицательные – переходный процесс апериодический;
б) оба корня комплексные сопряженные – переходный процесс колебательный;
в) оба корня чисто мнимые (в уравнение не входит первая производная) – переходный процесс
представляет собой незатухающие колебания.
Следовательно, для такой проверки предварительно нужно вычислить корни характеристического уравнения. Кстати, это легко за вас сделает MatLab, надо только знать
соответствующие команды, которые необходимо задать в Командном Окне (MatLab Command
Window).
Рис. 18. Изображение входного синусоидального воздействия и его результатов
Проверка правильности времени переходного процесса производится при исследовании
объекта на скачкообразное возмущение: переходный процесс должен закончиться приблизительно
за время, чуть большее   3T , где T – постоянная времени при первой производной
dy
,
dt
полученная после деления всех членов дифференциального уравнения на коэффициент при y  t  .
Для уравнения
44
 мин 2  d 2 y
 1 
 мин  dy
 1 
1
 1.1   y  0.9 
 2  2.8 
 un

 С  dt
 С
 кг час 
 С  dt
T 
(1.16)
2.8
 2.5455 минут
1.1
(линия «а» на рис. 17), и весь переходный процесс закончится за время
  3T  3  2.5455  7.6364 минут.
2. Порядок выполнения лабораторной работы
2.1. Задания на выполнение
Задание 1. Составить блок-схему и смоделировать в среде Simulink объект
первого порядка, если его математическое описание задано в виде передаточной функции
W  p 
Y  p
Un  p

k
C1 p  1
(1.13)
с ограничениями
umax  un  umin .
Значения коэффициентов и ограничений взять из табл. 1.
Рассмотреть реакцию в шести случаях:
– с нулевым, положительным и отрицательным начальным условием при возмущающем
воздействии un t   0 ;
– с нулевым, положительным и отрицательным начальным условием при возмущающем
воздействии в виде функции Хевисайда (виде "единичного" ступенчатого возмущающего
воздействия в момент времени t  1 ).
Наблюдать поведение системы на осциллографе (Scope).
Задание 2. Составить блок-схему и смоделировать в среде Simulink объект, описываемый
уравнением второго порядка с постоянными коэффициентами
45
b2
d2 y
dt
2
 b1 dy
 b0 y  b3un t  ,
dt
(1.14)
начальными условиями
dy
dt
 y  0 ,
t 0
y t 0  y  0
и ограничениями
umax  un  umin .
Исходные данные взять из табл. 2.
Рассмотреть поведение системы для un t   0 при следующих комбинациях начальных условий:
1. Оба начальных условия нулевые, только первое – нулевое, только второе – нулевое, оба
начальных условия – ненулевые.
2. То же самое, но с un t  в виде функции Хевисайда от уровня umin величиной umax  umin в
момент времени t  0 . Начальные условия принять следующими:
y  0   0 , y  0  
b3
umin
b0
Наблюдать результаты моделирования на осциллографе.
Задание 3. Привести заданное в задании 2 уравнение к безразмерному виду, выразить его в
виде передаточной функции типа (1.12) и изучить поведение системы в зависимости от величины
показателя демпфирования  . Коэффициент усиления принять k  1 .
Рассмотреть 4 варианта:
–
–
–
–
 - величина больше 1, полученная для вашего варианта задания;
 - величина, близкая или равная 1;
 - величина в диапазоне 0.7 ÷ 0.3;
 -величина, близкая или равная 0.
Для каждого из 4-х вариантов проделать следующие эксперименты:
А. Начальные условия нулевые. Вынуждающая функция un t   100 единицам при t  0 .
Б. Начальные условия: y  0  0 , y  0  100 . Вынуждающая функция un t   0 .
46
В. Начальные условия: y  0  100 , y  0  0 . Вынуждающая функция un t   0 .
Г. Начальные условия: y  0  50 , y  0  50 . Вынуждающая функция un t   0 .
Объяснить характер полученных кривых, отобразить их на осциллографе (Scope) и вывести на
печать. Если нет возможности вывода на печать, зарисовать осциллограммы "от руки".
2.2. Содержание отчета
В отчете должны содержаться:
1. Цель работы.
2. Вариант задания на выполнение.
3. Блок-схема моделирования звена первого порядка с коэффициентами, соответствующими
вашему варианту. Осциллограммы для различных вариантов начальных условий и возмущающих
функций.
4. Блок-схема моделирования звена второго порядка с коэффициентами, соответствующими
вашему варианту. Осциллограммы для различных вариантов начальных условий и возмущающих
функций.
5. Блок-схема моделирования звена второго порядка в безразмерном виде с сохранением
(записью) всех кривых разгона для различных вариантов моделирования в зависимости от
коэффициента демпфирования  . Блок-схема должна содержать блоки, дающие возможность:
организовывать длительное хранение в файле всех ранее полученных кривых разгона (To File);
возможность просмотра (From File) кривых, полученных в результате моделирования и
записанных на длительное хранение в файле.
Варианты заданий к лабораторной работе
Таблица 1
Вариант
1
2
3
4
5
6
k
0.653
C1
C
кг час
0.6817
C
об мин
0.0143
%
мм
С
см
кг час
7.6
С
%
7.75
атм
0.3
umin
50мин
14
1.81мин
200
кг
час
об
мин
umax
136
2500
кг
час
об
мин
61.5 с
5000 мм
8250 мм
8 мин
3 см
12 см
13.8 мин
24 ˚С
68 ˚С
26.8 мин
4.2 атм
12.6 атм
47
7
17.1
кг час
атм
32 с
С
об с
180 мин
18.4
8
9
7.22
мм
С
12 атм
26
12.3 мин
42 атм
об
с
114
18 С
об
с
69 С
Окончание табл. 1
8.12
10
кг час
атм
С
%
С
0.052
мм
11
0.731
12
34 мин
16.3 атм
17.8 атм
4.17 с
12%
71%
0.24 с
112 мм
134 мм
Таблица 2
Вариант
1
b2
b1
6
2.1
мин
С
1.1
0
150
мин
С
3
0.8
с
С
0.1
1
С
0.08
866
с
%
14.0
1
%
0.2
мин
%
12.0
1
%
0.5
4
5
6
b3
мин2
С
2
3
b0
с2
С
0
мин2
%
мин 2
62
кг час
400
7
4600
8
260
мин2
С
320
51
мин
кг час
400
мин
С
3.7
1
С
1
С
1
кг час
2.2
0.09
1
об мин
0.2
1
атм
1
см
1
мм
1
93
атм
1
С
29
1
С
18.6
1
об с
мин 2
кг час
40
мин
кг час
1.2
1
кг час
8.6
1
атм
0
40
мин
кг час
1.2
1
кг час
8.6
1
атм
мин2
мм
560
9
10
700
мин
мм
46.0
1
мм
332
1
C
Продолжение табл. 2
48
11
0
12
320
c2
C
0.4
c
C
480
c
C
1.3
1
C
1
115
C
0.068
84
1
мм
1
%
Продолжение табл. 2
Вариант
y  0
С
мин
40 С
400
4.2 С
38 атм
79 атм
0%
34 мм
100 мм
82 мм
6250 мм
40 %
0.3 атм
8.3 атм
20 С
81 С
1
8
2
–
3
0.1
С
с
4
–
5
2
6
кг час
1.6
мин
7
3.2
8
4
%
мин
С
мин
кг час
мин
9
3.0 С
100
4
11
–
12
0.2
мм
мин
С
с
кг
час
212 С
156
71
–
10
un
y  0
min
12
max
об
мин
об
с
4400
140
об
мин
об
с
кг час
мин
кг
час
11 атм
42 атм
6 атм
23 атм
300 мм
32 С
3.1 С
30 мм
20 С
20%
3. Контрольные вопросы
1. Понятие возмущающей функции.
2. Представление модели методом понижения порядка производной.
3. Понятие канонического вида дифференциального уравнения системы.
4. Показатель демпфирования и его влияние на вид звена второго порядка.
5. Приведение дифференциального уравнения к безразмерному виду.
6. Порядок установки параметров блоков исследуемой модели системы.
63 С
102 мм
82%
49
7. Действия с блоками исследуемой модели системы.
8. Порядок сборки модели исследуемой системы.
9. Методы интегрирования, используемые в Simulink.
10. Запись результатов моделирования в файл.
11. Методы контроля правильности модели.
12. Объяснение полученных результатов моделирования.
Скачать