Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ
Методические указания
к лабораторным работам 10 - 18
по дисциплине
Воронеж
2018
УДК 681.513.2
Рис. 1
Математические выражения
Как и большинство систем программирования Matlab обеспечивает выполнение
математических выражений, но в отличие от других языков программирования эти
выражения содержат целые матрицы. В состав математических выражений входят:
- переменные;
- числа;
- операторы;
- функции.
Переменная – массив/вектор/скаляр
a= a= ans =
3 6 0.0000 + 1.0000i
b=
1 2 3
4 5 6
7 8 9
>>
Операторы
Встроенные функции
» a + b
ans =
6 8
10 12
» a(2,1) % опрос одного элемента матрицы
ans =
3
Элементы матрицы имеют индексы в соответствии с принятым в математике
порядком:
a11 a12 a13
a11 a12 a13
a a21 a22 a23 a a21 a22 a23
a31 a32 a33 a31 a32 a33
a =
1 2
3 4
ans =
1 3
2 4
Функция Назначение
s=sum(a) Сумма всех элементов вектора a
p=prod(a) Произведение всех элементов вектора a
m=max(a) Нахождение максимального значения среди
элементов вектора a
[m,k]=max(a) Второй выходной аргумент kсодержит
номер максимального элемента в
векторе a
m=min(a) Нахождение минимального значения среди
элементов вектора a
[m,k]=min(a) Второй выходной аргумент k содержит
номер минимального элемента в
векторе a
m=mean(a) Вычисление среднего арифметического
элементов вектора a
a1=sort(a) Упорядочение элементов вектора по возрастанию
Функция find
Функция find определяет индексы элементов массива, которые удовлетворяют
заданному логическому условию. Как правило, она используется с целью создания
шаблонов для сравнения и образования массивов индексов. В наиболее
употребительной форме функция к = find(x <условие>) возвращает вектор индексов
тех элементов, которые удовлетворяют заданному условию,
А = magic(4)
А =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> с=a+b;
>> w=u-v;
>> s=dot(a,b)
>> c=cross(a,b)
» a * b % операция с матрицами
ans =
19 22
43 50
» a.* b % операция с массивами
ans = (таблицами)
5 12
21 32
»
Аналогичным образом выполняется поэлементное деление ./ (точка с косой
чертой). Кроме того, операция .\ (точка с обратной косой чертой) осуществляет
обратное поэлементное деление, то есть выражения a./b и b.\a эквивалентны.
Возведение элементов вектора a в степени, равные соответствующим элементам b,
производится с использованием .^. Для транспонирования векторов-строк или
векторов-столбцов предназначено сочетание .' (точка с апострофом). Операции ' и
.' для вещественных векторов приводят к одинаковым результатам. Не обязательно
применять поэлементные операции при умножении вектора на число и числа на
вектор, делении вектора на число, сложении и вычитании вектора и числа. При
выполнении, например, операции a*2, результат представляет собой вектор того же
размера, что и a, с удвоенными элементами.
Оператор (:)
» a = [1 2 3 4
5 6 7 8];
» sum(a(:,1)) % знак : => операция со столбцом
ans =
6
» a(2,:)
ans =
5 6 7 8
»
» 1:6 % интервал значений целых чисел
ans =
1 2 3 4 5
6
» a = 1:5 % то же с присвоением
a =
1 2 3 4 5
»
» a = 1.1:5.5 % с десятичными знаками, шаг единица
a =
1.1000 2.1000 3.1000 4.1000 5.1000
»
» a = 0.1:0.1:0.5 % дробный шаг
a =
0.1000 0.2000 0.3000 0.4000 0.5000
»
function c=mysum(a,b)
c=a+b;
function
[x1,x2]=quadeq(a,b,c)
D=b^2-4*a*c;
x1=(-b+sqrt(D))/(2*a);
x2=(-b-sqrt(D))/(2*a);
При вызове quadeq из командной строки используйте квадратные скобки для
указания переменных, в которые будут занесены значения корней. В конце строки не
ставим точку с запятой и система выдает ответ на экран в командное окно.
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-8 -6 -4 -2 0 2 4 6 8
Рис. 1.2
Синтаксис:
plot3(x,y,z) – строит массив точек, представленных векторами x, y и z, соединяя
их отрезками прямых. Команда имеет ограниченное применение, т.к. строит не
поверхность , а пространственную кривую;
plot3(X,Y,Z) – строит точки с координатами X(i,:), Y(i,:) b Z(i,:) и соединяет их
отрезками прямой, получая таким образом трехмерную поверхность;
plot3(X,Y,Z,S) – обеспечивает аналогичные построения, но со спецификацией
линий и точек, соответствующих синтаксису команды plot.
Пример:
» x=-3:0.1:3;
» y=x;
» z=x.^2+y.^2;
» subplot(2,1,1),plot3(x,y,z),grid on
» [x,y]=meshgrid(x,y);
» z=x.^2+y.^2;
» subplot(2,1,2),plot3(x,y,z),grid on
Синтаксис:
figure(n) данная команда делает активным графическое окно с номером n
(если такое окно существует) или создает пустое графическое окно.
Синтаксис:
axis([xmin xmax ymin ymax])
axis(‘auto’)
axis(axis)
axis(‘square’)
axis(‘equal’)
Синтаксис:
grid on наносит координатную сетку на текущие оси;
grid off удаляет координатную сетку;
grid выполняет роль переключателя с одной функции на другую.
Создание LTI-моделей
ss Создает модель пространства состояния
zpk Создает модель нули/полюсы/коэффициенты передачи
tf Создает модель передаточной функции
dss Специфицирует описатель модели пространства состояния
fflt Специфицирует цифровой фильтр
set Установка/модификация атрибутов LTI-модели
Itiprops Детальная справка об атрибутах LTI-моделей
Извлечение данных
ssdata Извлечение матриц пространства состояния
zpkdata Извлечение данных о нулях/полюсах/КП
tfdata Извлечение числителя(-лей) и знаменателя(-лей) ПФ
dssdata Получение информации о версии описателя SSDATA
get Получение информации о значениях свойств LTI-модели
Получение информации об отдельных характеристиках модели
class Информация о типе модели (ss, zpk или tf)
size Информация о размерах матриц входа и выхода
isempty Проверка, является ли LTI-модель пустой
isct Проверка, является ли модель непрерывной
isdt Проверка, является ли модель дискретной
isproper Проверка, является ли модель правильной
issiso Проверка, имеет ли модель один вход и один выход
isa Проверка, является ли LTI-модель моделью заданного типа
Преобразование системы
ss Преобразование в пространство состояния
zpk Преобразование в нули/полюсы/КП
Transfer function:
3 s + 1
-----------
s^2 + s + 1
Transfer function:
3 s +
1
-----------
s^2 + s + 1
t1 = 2*t0;
% формирование
передаточных функций w1 =
tf([Kr/H],[1 0]);
w2 = tf([1],[t0^2 2*t0*dzeta 1]);
w3 = tf([1], [t1 1])*tf([1], [t1 1]); % корректирующее
звено
W = w1 * w2 * w3;
Для обозначения входа и выхода можно также указать на точку схемы (линию
связи блоков) мышью и нажав правую кнопку. При этом выпадает меню, в котором
следует выбрать позицию Linearisation Points и далее Input или Output. Затем, через
меню Tools-Control Design- Linear Analysis запускаем LTI-viewer.
0.25 s y ( s) x2 s
Первое уравнение – алгебраическое. Оно входит в структуру системы
аналогично построению модели SIMULINK. Из второго, найдем передаточную
функцию:
x2 s 0.05 s 2 0.4 s 1 20 x1 s , откуда
x2 s 20
W2 s .
x1 s 0.05 s 0.4 s 1
2
y s 1
Третье уравнение преобразуется W3 s .
x2 s 0.25 s
Таким образом, можно составить укрупненную структуру системы:
u h2 h3
h1
x1 20 1 y
1 10 y
0.05s2 +0.4s+1 0.25s
Constant Gain Transfer Fcn Transfer Fcn1 To Workspace
Gain1
0.04
h4
Transfer function:
16000
-----------------------
s^3 + 8 s^2 + 20 s + 64
Умножим числитель и знаменатель на постоянный коэффициент 0,0125 и
получим
>> h=h*0.0125
Transfer function:
200
------------------------
s^3 + 8 s^2 + 20 s + 64
>> h.den{1}=h.den{1}*0.0125
Transfer function:
200
---------------------------------
0.0125 s^3 + 0.1 s^2 + 0.25 s + 0.8
что соответствует ранее полученной передаточной функции.
Таким образом, использование функции connect позволяет определить передаточную
функцию системы со структурой любой сложности.
Задание на лабораторную работу
1. Составить модель вида “передаточная функция”, описываемой системой
дифференциальных уравнений в соответствии со своим вариантом (справа
приведены значения перерегулирования и времени регулирования для контроля
правильности полученного решения).
№ Уравнения Tр
1 dx1 50,8 0,172
0.001 dt x1 20* U 0.1x2 ;
2
0.01 d x2 0.52 dx2 x 50x ; y x
dt 2 dt
2 1 2
A=
0 1 0
-20 -8 -16
4 0 0
>> B=[0; 20*10/0.05; 0]
B=
0
4000
0
>> C=[0 0 1]
C=
0 0 1
>> D=0
D=
0
>> Ws=ss(A,B,C,D)
a=
x1 x2 x3
x1 0 1 0
x2 -20 -8 -16
x3 4 0 0
b=
u1
x1 0
x2 4000
x3 0
c=
x1 x2 x3
y1 0 0 1
d=
u1
y1 0
Continuous-time model.
Синтаксис:
k = dcgain(sys)
Функция k = dcgain(sys) вычисляет коэффициент передачи k для lti-модели sys.
Коэффициент передачи для lti-модели с интегратором равен бесконечности.
Внимание! Для стандартного переходного процесса, определяемого единичным
входным воздействием, значение коэффициента усиления эквивалентно
установившемуся значению переходной характеристики.
10 0.5
0 0
-10 -0.5
-20 -1
-20 -15 -10 -5 0 -1 -0.5 0 0.5 1
» subplot(1, 2, 2),zgrid
Синтаксис:
bode(sys)
bode(sys, w)
bode(sys1, sys2, …, sysN)
Группа команд и функций bode предназначена для расчета амплитудных и
фазовых логарифмических частотных характеристик (диаграмм Боде) для lti-моделей.
Команды bode строят на экране графики логарифмических частотных характеристик.
Функция bode выполняет только расчет характеристик, но графиков не выводит.
Логарифмические частотные характеристики применяются при анализе таких свойств
систем, как запас устойчивости по фазе и амплитуде, коэффициент передачи, ширина
полосы пропускания, реакция системы на возмущения.
Команда bode(sys) строит на экране графики логарифмических частотных
характеристик для lti-модели sys. Эта модель может быть непрерывной или
дискретной, одномерной или многомерной. В случае многомерной модели функция
bode строит множество логарифмических частотных характеристик для каждого канала
системы от входа к выходу. Диапазон частот определяется автоматически по значениям
нулей и полюсов передаточной функции системы.
Команда bode(sys, w) строит логарифмические частотные характеристики в
заданном диапазоне частот. Этот диапазон должен быть задан массивом ячеек w =
{wmin, wmax}. Для построения логарифмических частотных характеристик на
заданных частотах создается вектор значений частот w. Для создания логарифмической
сетки следует применить команду logspace. Единица измерения частоты - рад/с.
Команды bode(sysl, sys2,..., sysN), bode(sysl, sys2,..., sysN, w) позволяют
построить частотные характеристики для нескольких lti-моделей на одном графике.
Все модели должны иметь одинаковое количество входов и выходов, среди них могут
быть как непрерывные, так и дискретные.
Пример:
Построить логарифмические частотные характеристики для непрерывной lti-
модели с одним входом и одним выходом.
g = tf([1 0.1 7.5],[1 0.12 9 0 0]);
bode(g)
Перейдем от непрерывной модели к дискретной с периодом дискретности Ts =
0,5 с и построим на одном графике их частотные характеристики:
» gd=c2d(g,0.5)
Transfer function:
0.121 z^3 + 0.07256 z^2 + 0.06758 z + 0.1146
----------------------------------------------------------
z^4 - 2.138 z^3 + 2.218 z^2 - 2.021 z + 0.9418
Sampling time: 0.5
» bode(g,'k',gd,'k:')
Синтаксис:
margin(sys)
[Gm, Pm, Wcg, Wcp] = margin(sys)
[Gm, Pm, Wcg, Wcp] = margin(mag, phase, w)
» [Gm,Pm,Wcg,Wcp]=margin(hd);
» [20*log10(Gm),Pm,Wcg,Wcp]
ans =
6.2424 13.5712 5.4374 4.3544
Для графического отображения этих значений
» margin(hd)
» step(sys)
Синтаксис:
impulse(sys)
impulse(sys, t)
impulse(sys1, sys2,..., sysN)
impulse(sys1, sys2, ...,sysN, t)
Команды и функции impulse рассчитывают и строят реакцию на импульсную
функцию Дирака для непрерывной модели или на единичный импульс для дискретной
модели. Эта реакция называется импульсной переходной или весовой функцией. Для
моделей, заданных в пространстве состояний, начальные условия предполагаются
нулевыми.
Команда impulse(sys) строит график импульсной переходной функции для lti-
модели sys. Эта модель может быть непрерывной и дискретной, одномерной и
многомерной. Для многомерной модели строится набор импульсных переходных
функций по каждому каналу входа-выхода. Продолжительность моделирования
определяется автоматически так, чтобы отобразить основные особенности переходных
процессов.
Команда impulse(sys, t) позволяет явно указать продолжительность мо-
делирования либо в виде момента окончания t = Tfinal в секундах, либо в виде вектора t
= 0:dt:Tfinal. Для дискретных моделей значение dt должно соответствовать периоду
дискретности; для непрерывных моделей значение dt должно быть достаточно малым,
чтобы учесть наиболее быстрые изменения переходного процесса.
Команды impulse(sysl, sys2, ..., sysN), impulse(sysl, sys2, ..., sysN, t) позволяют на одном
графике построить импульсные переходные функции для нескольких lti-моделей
sysl,..., sysN. Все модели должны иметь одинаковое число входов и выходов.
Constant Gain
Gain1
0.04
Gain1
0.4
. Gain Integrator
Gain3
0.4
Gain1
0.04
Моделирование нелинейностей
В отличие от моделей, создаваемых в рабочей области путем составления
передаточной функции и матриц пространства состояний, модель в системе SIMULINK
может включать в себя нелинейные объекты. Наиболее характерными нелинейными
блоками являются:
Управление программой
find Поиск индексов и значений элементов массива по
заданному условию
Функция find определяет индексы элементов массива, которые удовлетворяют
заданному логическому условию. Как правило, она используется с целью создания
шаблонов для сравнения и образования массивов индексов. В наиболее
употребительной форме функция к = find(x <условие>) возвращает вектор индексов
тех элементов, которые удовлетворяют заданному условию,
А = magic(4)
А=
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
k = find(A > 8); A(k) = 100
100 2 3 100
5 100 100 8
100 7 6 100
4 100 100 1
Пример:
Этот цикл с неопределенным числом операций находит первое целое число п,
для которого n! записывается числом, содержащим 100 знаков:
n = 1;
while prod(1:n) < 1e100
n = n + 1;
end
Оператор цикла for ... end выполняет инструкцию или группу инструкций
предопределенное число раз. По умолчанию приращение равно 1. Можно задавать
любое приращение, в том числе отрицательное. Для положительных индексов
выполнение завершается, когда значение индекса превышает <конечное значение>; для
отрицательных приращений выполнение завершается, когда индекс становится меньше
чем <конечное значение>.
Допустимы вложенные циклы типа:
for i = 1 : m
for j = 1 : n
A(i, j)=1/( i + j - 1);
end
end
Использование массива в качестве переменной цикла. В качестве переменной
цикла for могут использоваться массивы.
Пример: рассмотрим массив А размера mn. Оператор цикла
for i = A
инструкции
end
определяет переменную цикла i как вектор А(:, k). Для первого шага цикла k
равно 1; для второго - k равно 2 и так далее, пока k не достигнет значения n. То есть
цикл выполняется столько раз, сколько столбцов в матрице А. Для каждого шага i - это
вектор, содержащий один из столбцов массива А.
ans =
RiseTime: 0.1426
SettlingTime: 1.4786
SettlingMin: 0.8779
SettlingMax: 1.4007
Overshoot: 40.0747
Undershoot: 0
Peak: 1.4007
PeakTime: 0.3684
>>
значение параметров качества переходной характеристики определять только
при условии устойчивости системы для текущих величин переменных параметров
(устойчивость системы определяется отсутствием нулевых или положительных корней
характеристического уравнения). Вектор корней можно получить используя функцию
pole();
полученные результаты вывести в виде плоскости изменения исследуемого
показателя качества;
подтвердить достоверность исследований, определив базовую точку (при
исходных значениях вариативных параметров) значения исследуемого показателя
качества на полученной плоскости путем построения контура полученной плоскости
для контрольного значения параметра. Формат функции для такого построения:
[c,h] = contour(X,Y,Z,[v v]); clabel(c,h)
где X, Y плоскости изменения вариативных параметров;
Z плоскость рассчитанных значений исследуемого параметра качества системы;
v контрольное значение параметра качества системы, получаемое при исходных
значениях варьируемого параметра.
Генератор Генератор
пилообразного прямоугольных
сигнала импульсов
>=
AND Clk
Sine Wave
Relational Up Cnt
Operator Logical
Operator Rst
Scope
Counter
Repeating Pulse
Pulse
Sequence Generator1
Generator
При запуске решения возникает ошибка. Она связана с тем, что на вход счетчика
поступает логический сигнал, в то время как свойствами блока предусмотрен целый
или вещественный тип. Дополним схему блоком автоматического преобразования типа
сигнала Data Type Conversion из библиотеки Signal Attributes.
>=
AND Convert Clk
Sine Wave
Relational Up Cnt
Operator Logical Data Type Rst
Operator Conversion Scope
Counter
Repeating Pulse
Pulse
Sequence Generator1
Generator
Теперь модель работает, однако время расчета очень велико, поскольку шаг
моделирования должен быть меньше времени преобразования сигнала, т.е. менее 50е-6
секунды. Результат моделирования выглядит следующим образом:
1200
1000
800
600
400
200
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
>=
AND Convert Clk
Sine Wave
Relational Up Cnt S/H
In<L>
Operator Logical Data Type Rst
Operator Conversion Scope
Sample
Counter and Hold
Repeating Pulse
Pulse
Sequence Generator1
Generator
1000
800
600
400
200
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
В результате получен процесс, практически не отличающийся от входного
сигнала по форме, и только амплитуда сигнала напоминает о том, что это сигнал на
выходе десятиразрядного АЦП.
В matlab версий ниже 7 можно использовать блок Triggered Subsystem, который
дает аналогичный результат
>=
AND Convert Clk
Sine Wave
Relational Up Cnt In1 Out1
Operator Logical Data Type Rst
Operator Conversion Scope
Triggered
Counter Subsystem
Repeating Pulse
Pulse
Sequence Generator1
Generator
Таким образом, полноценная модель аналого-цифрового преобразователя
полностью подтверждает вывод о том, что при современном развитии аппаратной
части микропроцессоров влияние АЦП на точность работы мала. Однако на этапе
моделирования использование такой модели может позволить определить
минимальную разрядность и максимальное время преобразования сигнала, которые
обеспечат достаточную точность управления объектом.
Задание на лабораторную работу
Синусоидальный сигнал выдается в систему в цифровом виде, посредством АЦП.
Определить минимальную разрядность АЦП и максимальное время преобразования
сигнала обратной связи, обеспечивающие пульсации выходного сигнала не более
заданной величины.
Параметры сигнала:
Вариант Частота Амплитуда Точность Вариант Частота Амплитуда Точность
1 1 Гц 10 В 2% 11 1 Гц 300 В 0,1%
2 20 Гц 200 В 5 % 12 20 Гц 220 В 1%
3 100 Гц 400 В 0,5% 13 100 Гц 24 В 5%
4 500 Гц 0.5 В 0,1% 14 500 Гц 300 В 0,5%
5 750 Гц 300 В 1% 15 750 Гц 220 В 1%
6 1000 Гц 220 В 2% 16 1000 Гц 24 В 2%
7 300 Гц 24 В 5 % 17 300 Гц 400 В 0,5%
8 5 Гц 300 В 0,5% 18 5 Гц 0.5 В 0,1%
9 50 Гц 220 В 0,1% 19 50 Гц 10 В 2%
10 0.1 Гц 24 В 1% 20 0.1 Гц 200 В 5 %
Учебное издание
Методические указания
к лабораторным работам 10 - 18
по дисциплине
Составитель:
Слепокуров Юрий Сергеевич