Алматинский институт энергетики и связи

Кафедра инженерной кибернетики

 

 

 

 

 

 

 

 

 

 

 

 

 

ОСНОВНЫЕ ПРИЕМЫ РАБОТЫ В СРЕДЕ MATLAB

 

Методический практикум

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Алматы 2004

 

 

 

 

СОСТАВИТЕЛЬ: Ибраева Л.К.ОСНОВНЫЕ ПРИЕМЫ РАБОТЫ В СРЕДЕ MATLAB. Методический практикум – Алматы: АИЭС, 2004 -    49  с.

 

Система MatLAB (MATrix LABoratory) является интерактивной системой для выполнения инженерных и научных расчетов Методический практикум предназначен для преподавателей, аспирантов и студентов, желающих применять систему MATLAB  при исследовании систем. В методическом практикуме описаны только основные приемы работы с системой.

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

Каждый раздел практикума сопровождается примерами. Рекомендуется при изучении пакета выполнять эти упражнения – результат будет отражаться в командном окне. Поэтому в методических разработках не приведены окна с результатами (за исключением примеров раздела 3).

 

 

 

Рецензент: канд. техн наук,  доц. С.Г.Хан

 

 

 

 

 

 

 

 

 

 

 

 

Печатается по плану издания Алматинского института энергетики и связи на 2004 г.

 

 

 

 

 

 

 

 

 

 

© Алматинский институт энергетики и связи, 2004 г.

Система MatLAB (MATrix LABoratory) является интерактивной системой для выполнения инженерных и научных расчетов, ориентированной на работу с массивами данных. Она имеет встроенную матричную и комплексную арифметику.

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

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

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

Работа в среде MatLAB может выполняться:

- в режиме «калькулятора», когда вычисления производятся

  непосредственно в командном окне;

- путем вызова программы (встроенной или пользовательской);

- путем графической сборки модели исследуемой системы – пакет Simulink.

 

1.     MatLAB как научный калькулятор

 

 Ввод чисел выполняется по обычным правилам языков программирования; десятичный показатель записывается в виде целого числа после символа e.

Формат чисел:  Файл-Свойства

Арифметические действия: +      *   /   \  ^                 

                             

Вывод результата:

- Если оператор не заканчивается символом «;» (точка с запятой), результат

  сразу отображается  в командном окне.

- Если оператор не содержит знака присваивания, то значение результата

  присваивается системной переменной ans.

- Общая форма:

       <имя переменной> = <результат>

Имена переменных могут использоваться для хранения промежуточных результатов.

 

Пример 1.1:

>> 25 + 17;

>>ans*7

ans = 294

 

Зарезервированные имена переменных:    i, j   - мнимая единица;    pi – число π;  ans – результат последней операции без знака присваивания.

         Некоторые элементарные функции:

sin(z), sinh(z), asin(z), cos(z), cosh(z), acos(z), tan(z), atan(z), exp(z), log(z), log10(z), sqrt(z), abs(z), round(z).

 

Комплексные числа вводятся в виде:

 <имя переменной> =                                                                                                            <значение действ.части> + i (либо  j )*< значение мнимой части>

Простейшие действия с комплексными числами производятся с использованием приведенных выше операций.

 

Пример 1.2:

>> x=1+2i; y = -3+4i;

>>disp(x+y)

-2.0000+6.0000i

 

Здесь использована функция disp, которая также позволяет выводить в командное окно результаты вычислений или некоторый текст.

Функции комплексного аргумента:

real(z) – выделяет действительную часть комплексного аргумента;

imag(z) – выделяет мнимую часть комплексного аргумента;

angle(z) – вычисляет значение аргумента комплексного числа

                (в радианах от – π до + π).                                                                                          

Пример 1.3:

Наберите в командном окне:

>>disp(real(y)

>>disp(imag(y)0

>>disp(angle(y))

 

MatLAB специально предназначен для вычислений с векторами, матрицами и полиномами. Любая заданная переменная по умолчанию является вектором или матрицей.

 

Ввод вектора:

V1 = [1.2  2.3  3.4  4.5] (вместо пробелов можно использовать запятые).

Длинные векторы можно вводить частями, а затем объединять: v=[v1  v2].

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

         V = nz : h : kz (nz – начальное значение, h – шаг, kz – конечное значение). По умолчанию шаг принимается равным 1.

Чтобы ввести вектор-столбец, его элементы нужно отделять точкой с запятой.

 

 

Пример 1.4:

Введите в командное окно

>>v1[1  2  3];v2=[4  5  6];

>>v=[v1 v2]

 

         Действия над векторами одинаковой структуры:

Сложение и вычитание векторов: +  и - 

Транспонирование – знак апострофа (например, х').

Умножение  вектора на число: *.

Умножение двух векторов: * (по правилам математики- для векторов одинакового размера и лишь тогда, когда один из векторов-сомножителей является строкой, а другой – столбцом; в противном случае, один из векторов надо транспонировать).

Векторное произведение (для трехкомпонентных векторов): cross (v1 v2)

Предусмотрено несколько операций поэлементного преобразования векторов (и матриц); все эти операции преобразуют  элементы вектора как элементы обычного одномерного массива чисел.  К таким операциям принадлежат все элементарные математические функции одного аргумента (некоторые были приведены выше). Например, запись Y = sin(X), где Х – известный вектор, приводит к формированию нового вектора Y, элементы которого равны синусу соответствующих элементов вектора Х.

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

Добавление числа к каждому элементу вектора (аналогично, вычитание): +  и  -

Поэлементное умножение векторов: .* (перед знаком умножения – точка)

Поэлементное деление векторов: ./ (перед знаком деления – точка)

Поэлементное возведение в степень: .^ (перед знаком степени – точка)

Эти операции позволяют вычислять значения сложных функций, не используя операторы цикла.

 

Пример 1.5:

Вычисление значений функции Y = a*exp(-k*x)*sin(x)  при значениях аргумента x от 0 до 10 с шагом 1 можно выполнить при помощи следующих операторов:

>> a=3; k=0.5;

>> x = 0:1:10;

>>y= a*exp(-k*x).*sin(x)

         Элементы матрицы вводятся в квадратных скобках по строкам. При этом элементы строки отделяются друг от друга пробелом или запятой, строки отделяются точкой с запятой.

 

Пример 1.6:

Введите в командное окно:

>>A=[2  4  5  8  10; 5  6  8  9  7]

         MatLAB имеет функции, которые позволяют формировать векторы и матрицы определенного вида. Некоторые из них:

zeros(m,n) – создает матрицу m*n с нулевыми элементами;

ones(m,n)- создает матрицу m*n с единичными элементами;

eye(m,n)- создает матрицу m*n с единицами на главной диагонали и остальными

                    нулевыми элементами;

rand(m,n) - создает матрицу m*n из случайных чисел, равномерно

                        распределенных на (0,1);

randn(m,n) - создает матрицу m*n из случайных чисел, распределенных по

                          нормальному закону с нулевым математическим ожиданием и

                          дисперсией, равной 1.

Поэлементное преобразование матриц – аналогично действиям с векторами.

 

Пример 1.7:

>> A = [1,2,3,4,5; -2,3,1,4,8]

>> B = [1,3,5,-2,1;1,8,-3,-1,2]

>> sin(A)

>> A .*B

 

Матричные действия с матрицами:

Базовые действия с матрицами выполняются с помощью обычных знаков арифметических операций. Функция обращения матрицы – inv(A).

 

Пример 1.8:

>> A = [1 2 3 4 5; 6 7 8 9 10]

>>A’

>> B =[ 0 -1 -2 – 3 -4; 5 6 7 8 9]

>> A’*B

>> C=A*B’

>> inv(C)

>> inv(ans)             % для проверки обращение применяется к результату

>> A=[1 2;3 4]

>>A^2                    % действие эквивалентно умножению матрицы на себя

>>A^(-2)                % при отрицательной степени  выполняется умножение

                                    обратной матрицы на себя

 

Действие деления матриц (которого не существует в математике): / (или \).

Действие В/А аналогично действиям  B*inv(A); его удобно использовать для решения матричного уравнения  X*A=B; действие A\B аналогично действиям  inv(A)*B; удобно использовать для решения матричного уравнения A*X=B.

 

Пример 1.9: Требуется решить систему уравнений:

         X1 + 2X2 + 3X3 = 14

        2X1 +   X2  - 5X3 =  -15

         X1 -    X2  -    X3 =  -4

Решение: >> A=[1 2 3;2 1 -5;1 -1 -1]

                >> B=[14;-15;-4]

                >> x=A\B

 

Операции с полиномами

         Полином хранится в виде вектора, элементами которого являются коэффициенты полинома:

         P = [an … a2  a1  a0]

Некоторые функции:

conv(P1,P2) – умножение двух полиномов;

deconv(P1,P2) – деление полинома P1  на полином P2;

roots(P) – вычисление вектора, элементы которого являются корнями заданного

                полинома;

poly(r) – построение вектора полинома по заданному вектору его корней;

polyval(p,x) – вычисление значения полинома по заданному значению его

                       аргумента;

polyder(p) – вычисление производной от полинома.

 

Пример 1.10:

Найдем корни полинома P(x) = x5 + 8x4 + 31x3 + 80x2 + 94x + 20.

>>p=[1,8,31,80,94,20];

>>disp(roots(p))

Вычислим значение полинома при х=2:

>>y=polyval(p,2);

 

Обработка данных измерений

         Система дает возможность обработки данных, которые заданы в векторной или матричной форме.

max(V) – выдает значение максимального по значению элемента вектора V;

min(V) – выдает значение минимального по значению элемента вектора V;

sort(V) – формирует вектор, элементы которого распределены в порядке

               возрастания из значений;

sum(V) – вычисляет сумму элементов вектора V;

prod(V) – вычисляет произведение всех элементов вектора V;

trapz(x,y) – осуществляет интегрирование методом трапеций (вычисляется

                    площадь под графиком функции y(x), в котором все точки, заданные

                    векторами x и y, соединены отрезками прямых.

 

   Аппроксимация и интерполяция данных

         Система предоставляет удобные процедуры для аппроксимации и интерполяции данных измерений.

polyfit(X,Y,n) – полиномиальная аппроксимация, n – порядок

                           аппроксимирующего полинома; X,Y – вектора аргументов и

                           значений функции; результатом будет вектор коэффициентов

                           полинома длиной (n + 1).

spline(X,Y,Xi) – интерполяция кубическими сплайнами.

 

Пример 1.11:

>> x = [1 2 3 4 5 6 7 8];

>> y = [-1.1  0.2  0.5  0.8  0.7  0.6  0.4  0.1];

>> polyfit(x,y,1)

ans = 0.1143  -0.2393

Это означает, что заданная зависимость аппроксимирована прямой:

          y(x) = 0.1143x – 0.2393

 

Построение графиков

Основной функцией, обеспечивающей построение графиков, является функция plot. Обращение к этой процедуре:

plot(x1,y1,s1,x2,y2,s2.,…)

Здесь x1,y1 - заданные векторы, элементами которых являются массивы значений аргумента  (x1) и функции (y1), соответствующих первой кривой графика; x2,y2 – массивы значений аргумента и функции второй кривой графика и т.д. Переменные s1, s2 являются символьными (их указание не обязательно, они определяют тип линии, тип точки графика и цвет линии).

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

 

Пример 1.12:

Пусть требуется вывести график функции y=3sin(x+π/3) на промежутке от -3π до +3π с шагом π/100.

>>x=-3*pi:pi/100:3*pi;

>>y=3*sin(x+pi/3);

>>plot(x,y), grid

 

Заголовок графика выводится с помощью процедуры title(‘текст’), надписи к осям – процедурами xlabel(‘текст’), ylabel(‘текст’).

 

Пример 1.13:

>>x=-3*pi:pi/100:3*pi;

>>y=-3*sin(x+pi/3);

>>plot(x,y), grid

>>title(‘Функция y=3sin(x+π/3));

>>xlabel(‘x’); ylabel(‘y’)

 

Пример 1.14: Дополним пример 1.11.

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

 

>> x = [1 2 3 4 5 6 7 8];

>> y = [-1.1  0.2  0.5  0.8  0.7  0.6  0.4  0.1];

>> P1=polyfit(x,y,1);

>> P1=polyfit(x,y,2);

>> P1=polyfit(x,y,3);

>> P1=polyfit(x,y,4);

>>stem(x,y);

>>hold

>>x=0.5:0.05:8.5;

>>y1=polyval(P1,x1);

>>y2=polyval(P2,x2);

>>y3=polyval(P3,x3);

>>y4=polyval(P4,x4);

>>plot(x1,y1,x2,y2,x3,y3,x4,y4);

>>grid:

>>title(‘Полиномиальная аппроксимация’);

>>xlabel(‘argument’);

>>ylabel(‘function’)

 

Здесь процедура stem(x,y) используется для  представления графика дискретной функции в виде отдельных вертикальных линий для каждого из значений аргумента; x, y – векторы аргументов и значений функций; для отражения графика дискретной функции на той же фигуре, что и полиномы, после обращения к функции stem записывается функция hold.

         При построении графика функции можно не указывать ее аргумент. В этом случае в качестве аргумента система принимает номер элемента вектора, график которого строится.

 

Пример 1.15:

>> x= [1 3 2 9 6 8 4 9 -6];

>> plot(x)

>> grid

>> title (‘График вектора x')

>> ylabel (‘значения элементов’)

>> xlabel (‘номер элемента’)

 

Более наглядно представить вектор в виде столбчатой диаграммы (функция bar):

>> bar(x)

>> title (‘График вектора x')

>> ylabel (‘значения элементов’)

>> xlabel (‘номер элемента’)

 

        

 

 

2 Программирование в среде MatLAB

 

         Программа создается в окне установленного редактора:

Файл-Создать-M-файл

Существуют программы двух видов: управляющие программы (Script-файлы) и процедуры (файл-функции). Все программы имеют расширение имени файла .m.

Файл-функция имеет первую строку вида:

Function [перечень конечных величин] =

                                         <имя процедуры> (<перечень входных величин>)

Script-файлы такой строки не имеют.

         В файл-функциях все переменные воспринимаются как локальные, в Script-файлах все используемые переменные образуют рабочее пространство (work space), которое является единым для всех Script-файлов, вызываемых в текущем сеансе работы с системой.

 

Оформление М-файлов:

§        каждый оператор записывается в отдельной строке; в конце оператора желательно вводить символ «;» (чтобы результат действия оператора не выводился в командное окно;

§        можно размещать несколько операторов в одной строке, разделяя их запятой или точкой с запятой;

§        длинный оператор можно записывать в несколько строк, при этом предыдущая строка должна заканчиваться тремя точками (…);

§        строка комментариев начинается с символа %;

§        строки комментариев, предшествующие первому выполняемому оператору программы (должны заканчиваться пустой строкой), воспринимаются системой как описание программы. Эти строки выводятся в командное окно, если набрать в нем help <имя файла>.

§        отсутствует оператор окончания текста программы;

§        переменные не описываются и не объявляются; их размер устанавливается при вводе значений ее элементов;

§        имена переменных могут содержать только буквы латинского алфавита и цифры, начинаются с буквы, число символов в имени – не больше 19-ти, строчные и прописные буквы в именах различаются системой.

 

Пример 2.1:

         Составим М-файл для вычисления значения функции:                                            y = f1(x) = a2*ctg(x)*sqrt(sin4(x) – cos4(x).

Для этого в окне редактора наберем следующий текст:

function y = f1(x, a)

%Процедура вычисления значения функции

% y = f1(x) = a2*ctg(x)*sqrt(sin(x)^4 – cos(x)^4)

%Обращение y = f1(x,a).

y = (a^2)*cot(x).*sqrt(sin(x).^4 – cos(x).^4);

Сохраним этот текст в файле f1.m.

Введем в командное окно команду:

>> y = f1(1, 0.1)

 

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

>> z = 0 : 0.3 : 1.8;

И обратимся к процедуре следующим образом:

>> v = f1 (z,1)

Чтобы получить информацию о созданной процедуре, наберем

>> help f1

 

Пример 2.2:

Оформите текст примера 1.14 как файл-функцию, сопроводив ее необходимыми комментариями.  Для этой процедуры нет необходимости передавать переменные из командного окна. Поэтому первую строку этой процедуры можно оформить следующим образом:   function appr;

Сохраните файл под именем appr.m. Вызовите программу из командного окна. Чтобы получить информацию о созданной процедуре, наберите  help appr.

 

Пример 2.3: Измените процедуру примера 2.2 таким образом, чтобы переменные

                    передавались из командного окна.

 

  Некоторые стандартные файл-функции

1  [I, cnt] = quad (‘<имя функции>’, a, b) – процедура вычисления интеграла

    методом квадратур; здесь a, b – нижняя и верхняя границы изменения

    функции;  I – полученное значение интеграла; cnt - число обращений к

    вычислению функции, представленной М-файлом с названием, указанным в

    <имя функции>.

2  ode23, ode45 – интегрирование обыкновенных дифференциальных уравнений;

    обращение к ним имеет вид;

     [t, y] = ode23 (‘<имя функции>’, tspan, y0, options)

     [t, y] = ode45 (‘<имя функции>’, tspan, y0, options)

    где  <имя функции> - строка символов, являющихся именем М-файла, в

    котором вычисляется вектор-функция f(t,y), то есть правые части системы

    ОДУ; y0 – вектор начальных значений переменных состояния; t – массив

    значений аргумента, соответствующих шагам интегрирования; y – матрица

    матрица проинтегрированных значений переменных, в которой каждый

    столбец соответствует одной из переменных состояния, а строка содержит

    значения переменных состояния, соответствующих определенному шагу

    интегрирования; tspan – вектор-строка [t0 tfinal], содержащая начальное и

    конечное значение аргумента; options – необязательные параметры,

    определяющие значения допустимых относительной и абсолютной

    погрешности интегрирования (по умолчанию соответственно 1.0e-3 и 1.0e-6).

3  fmin – нахождение минимума функции одного аргумента;

    обращение:    Xmin = fmin (‘<имя функции>’, X1, X2)

    здесь Xmin – локальный минимум функции в интервале  X1<X<X2;

4  fmins - нахождение минимума функции нескольких аргументов;

    обращение: Xmin = fmins (‘<имя функции>’, X0), X0 – начальное значение

    вектора аргументов;

5  fzero - нахождение нулей (корней) функции одного аргумента;

    обращение; z = fzero ('<имя функции>', x0, tо1, trace)

    здесь x0 – начальное значение аргумента, в окрестности которого

    отыскивается действительный корень функции, tо1 – заданная относительная

    погрешность вычисления корня, trace – обозначение необходимости выводить

    на экран промежуточные результаты,  z – значение искомого корня;

6  fplot -  построение графиков функции одной переменной; отличие от    

    процедуры  plot в том, что не надо предварительно вычислять значения

    функции; обращение: fplot(‘<имя функции>, [<интервал>], n)

    где <интервал> - вектор-строка из двух чисел, задающая нижнюю и

    верхнюю границы изменения аргументов, <имя функции> - имя М-файла с

    текстом процедуры вычисления значения функции по заданному значению

    аргумента, n – количество частей, на которые разбит указанный интервал (по

    умолчанию = 25);

    если обратиться к этой процедуре следующим образом

                 [x, Y] = fplot(‘<имя функции>, [<интервал>], n)

    то график функции не отображается на экране, а вычисляется вектор

    аргументов x и вектор (матрица) Y соответствующих значений указанной    

    функции; в этом случае для построения графика следует обратиться к 

    процедуре  plot(x,Y).

 

Пример 2.4. Найдем число π как значение локального минимума функции y =

                      cos(x) на отрезке [3,4]:

>> Xmin = fmin(‘cos’,3,4)

 

Пример 2.5. Найдем минимум функции y = (x-1)^2 + 3 на отрезке [0,5]. Вначале  

                      сформируем файл-фунцию:

 

 function y = parab (x)

 y = (x-1).^2 + 3

 plot(x,y)

 

Сохраним ее в файле parab.m. Затем в командном окне наберем:

>> x= -5:1:5

>>y=parab(x)

>> xmin = fmin(‘parab’, 0,5)

 

Рассмотрим применение процедур интегрирования обыкновенных дифференциальных уравнений на следующих примерах.

 

Пример 2.5. Требуется решить дифференциальное уравнение

                  y’ = -y,

с начальным условием y(0)= 1.

Откроем окно редактора системы и запишем в нее текст файл-функции:

     function dy=f1(t,y)

     dy=-y

Сохраним файл с именем f1.

В командном окне введем:

>>[t, y] = ode45('f1', [0 5], 1)

 

Здесь мы установили интервал решения уравнения - [0 5], начальное значение переменной состояния – 1, параметр options не указывали.

Система выдаст в командное окно числовые значения переменных. Чтобы просмотреть график, наберите

>>plot(t, y)

 

Пример 2.6. Рассмотрим следующую систему:

 

                  

 

Для решения этой системы создадим М-файл со следующим текстом:

function dy = rigid(t,y)
dy = zeros(3,1);    % вектор-столбец
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);

Сохраним файл.

Решаем систему на интервале [0 12] с вектором начальных условий [0 1 1]:

 

>> [t,y] = ode45('rigid',[0 12],[0 1 1]);

Отразим решение на графике:

         >> plot(t,y)

 

3.     Моделирование систем в пакете Simulink

 

         Пакет SIMULINK применяется для исследования поведения динамических систем. Ввод характеристик исследуемых систем производится в диалоговом режиме, путем графической сборки схемы соединений стандартных элементарных звеньев. В результате такой сборки образуется модель исследуемой системы, которую называют S-моделью.  Модель хранится в файле с расширением .mdl. Для построения S-модели используются блоки из библиотеки SIMULINK. Состав библиотеки может быть пополнен пользовательскими блоками.

Библиотека блоков SIMULINK представляет собой набор визуальных объектов, используя которые можно собирать, как из кубиков, произвольную конструкцию.

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

На порядок соединения блоков друг с другом также не накладывается ни­каких ограничений. Конечно, при связывании блоков необходимо соблюдать определенные правила, о которых будет сказано чуть позже, однако они обусловлены в основном логикой работы самой модели, а не специальными требованиями SIMULINK.

Для удобства работы пользователя библиотека блоков разбита на семь разделов. Шесть из них являются базовыми и не могут изменяться пользователем (за исключением внешнего оформления):

        Описание состава и назначения блоков  SIMULINK приведено в Приложении.

         Запуск пакета: Файл-Создать-Модель или соответствующая кнопка на панели инструментов. Необходимые блоки выбираются из соответствующих разделов библиотеки и с помощью мыши переносятся в окно создаваемой модели (по умолчанию это окно называется Untitled). Блоки соединяются с помощью линий, которые рисуем с помощью мыши (как от входного порта к выходному, так и наоборот).

         В процессе построения блок-схем все операции с объектами основаны на использовании известной технологии Drag-and-Drop (например, выделение, копирование, перестановка, отсоединение, удаление, изменение размеров, установка параметров блоков, создание соединительных линий и т.д.)

         Блок-схемы алгоритмов моделей составляются по содержательному описанию работы системы.

 

Пример 3.1. Необходимо синтезировать комбинационное цифровое устройство (КЦУ) на элементах И-НЕ на три входа, выходной сигнал которого совпадает с большинством входных сигналов. Это словесное описание условий функционирования КЦУ. Ему соответствует таблица истинности:

 

№ набора

X3

X2

X1

y

1

2

3

4

5

6

7

8

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

0

0

1

0

1

1

1

 

Соберем схему модели непосредственно по таблице истинности (рисунок 1):

- в окне модели расположите три блока Constant – для входных сигналов;

- преобразование входного сигнала в соответствии с заданной таблицей

  истинности  обеспечивает блок Combinatorial Logic (раздел Nonlinear). Так как 

  на вход этого блока может поступать только один сигнал, для объединения всех  

  входов  используйте  блок Mux. Блок Combinatorial Logic имеет единственный

  параметр настройки — Truth table (таблица истинно­сти), который представляет

  собой список возможных выходных значений автома­та. При задании таблицы

  истинности необходимо соблюдать два основных правила:

а) число строк таблицы должно быть равно 2n, где п — число элементов

     (размерность) входного сигнала;

б) входы таблицы считаются заданными.+

-         сформированный выходной сигнал выведите в блок Display.

 

В процессе синтеза КЦУ подразумевается необходимость минимизации аппаратных затрат на реализацию устройства. Чтобы выполнить условие задачи -  синтезировать КЦУ на элементах И-НЕ на три входа, используем для моделирования совершенные нормальные формы (СНФ).

Формула в СДНФ (совершенная нормальная дизъюнктивная форма): 

                                                (1)

После преобразований:  

Используя правила минимизации: 

 

                                                            (2)

         Для создания модели, описывающей работу цифрового устройства на базе формулы (1), используются блоки логических операций (Logical Operator) – рисунок 1.

 

Пример 3.2. Пакет MatLAB используется для исследования асинхронного двигателя в схеме асинхронного вентильного каскада (АВК). На кафедре ЭиАПУ разработаны имитационные модели структурной и электрической схем АВК[1]. На этих моделях можно выполнить серию экспериментов и получить характеристики объекта (влияние величины напряжения управления и нагрузки на характер переходных процессов, оценку соответствия установившихся значений параметров заданным и т.д.). На рисунке 2 приведена имитационная модель структурной схемы АВК, которая имеет вид последовательно соединенных звеньев. В эти звенья введены соответствующие передаточные функции с расчетными данными.

 

Пример 3.3. Математическая модель динамических процессов в топке котельного агрегата (объект с сосредоточенными параметрами) представляется в виде системы обыкновенных дифференциальных уравнений[2]. Решение этой системы дает возможность получить закон изменения температуры газов и температуры слоя загрязнений во времени, которые могут быть использованы для регулирования процесса сжигания топлива.

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

 

 

Здесь ∆t – температура топочных газов, ∆t1 – температура слоя отложений, ∆Bp – расход воздуха, ∆tB температура воздуха, τ - время, a1,…,a6  – расчетные коэффициенты модели.

Структурная схема модели представлена на рисунке 3. Чтобы не загромождать диаграмму и для повышения наглядности блоки расчетов по каждому уравнению системы оформлены как подсистемы (блок Subsystem из раздела Connection). Блоки Scope позволяют в процессе моделирования наблюдать динамику изменения интересующих исследователя характе­ристик системы. Создаваемое с помощью блока Scope «смотровое окно» напоминает экран измерительного прибора. В подсистемах для расчета коэффициентов модели и текущих значений температур (газов и шлаков) используются блоки Fcn, Product (раздел Nonlinear), Sum (раздел Linear), Constant (раздел Sources). 

 

4.     Цифровая обработка сигналов (Signal Processing Toolbox)

 

         Пакет Signal Processing Toolbox позволяет проектировать (рассчитывать конкретные числовые характеристики) цифровые и аналоговые фильтры по их требуемым амплитудно- и фазо-частотным характеристикам, формировать последовательности типовых временных сигналов и обрабатывать их спроектированными фильтрами. В пакет входят процедуры, осуществляющие преобразования Фурье, Гильберта, а также статистический анализ. Пакет позволяет рассчитывать корреляционные функции, спектральную плотность мощности сигнала, оценивать параметры фильтров по измеренным отсчетам входной и выходной последовательностей.

 

Формирование типовых процессов

         Процедура rectpuls обеспечивает формирование одиночного импульса прямоугольной формы. Обращение к процедуре:

 y = rectpuls (t, w).

Здесь y – вектор значений сигнала импульса единичной амплитуды, шириной w, центрированного относительно t = 0 по заданному вектору t моментов времени. Если ширина импульса w не указана, ее значение по умолчанию принимается равным единице.

 

Пример 4.1:

>> t = 0 : 0.1 : 10;

>> y = 0.75*rectpuls(t-3,2) + 0.5*rectpuls(t-8, 0.4)…

     + 1.35*rectpuls(t-5, 0.8);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, “FontSize’, 16)

>> title (‘Пример применения процедуры RECTPULS’)

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

         Формирование импульса треугольной формы единичной амплитуды можно осуществить при помощи процедуры tripuls, обращение к которой имеет вид:

         y= tripuls (t, w, s)

         Аргументы y, t, w  имеют тот же смысл. Аргумент s (-1 < s <1) определяет наклон треугольника. Если s = 0 или не указан, треугольный импульс имеет симметричную форму.

 

Пример 4.2:

>> t = 0 : 0.1 : 10;

>> y = 0.75*tripuls(t-1, 0.5) + 0.5*tripuls(t-5, 0.5, -1)…

     + 1.35*tripuls(t-3, 0.8, 1);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, “FontSize’, 16)

>> title (‘Пример применения процедуры TRIPULS’)

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

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

         y= gauspuls (t, fc, bw),

то она создает вектор значений указанного сигнала с единичной амплитудой, изменяющейся с частотой fc Гц и с шириной bw полосы частот сигнала. Если два последних аргумента не указаны, они по умолчанию приобретают значения 1000 Гц и 0,5 соответственно.

 

Пример 4.3:

>> t = 0 : 0.1 : 10;

>> y = 0.75*gauspuls(t-3, 1, 0.5);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, FontSize’, 16)

>> title (‘Пример применения процедуры GAUSPULS)

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

         Процедуры  sin(x), cos(x) формируют колебания, состоящие из конечного числа гармонических составляющих.

 

Пример 4.4:

>> t = 0 : 0.01 : 50;

>> y = 0.7*sin(pi * t/5);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, “FontSize’, 16)

>> title (‘Гармонические колебания y = 0.7*sin(pi * t/5)

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

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

         y = square (t, duty),

где аргумент duty определяет длительность положительной полуволны в процентах от периода волны.

 

Пример 4.5:

>> y = 0.7*square(pi*t/5, 40);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, “FontSize’, 16)

>> title (‘Прямоугольные волны y = 0.7*square(pi*t/5, 40);

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

         Генерирование пилообразных и треугольных колебаний выполняется процедурой sawtooth. Обращение:

         y= sawtooth (t, width)

Параметр width определяет часть периода, в которой сигнал увеличивается.

 

Пример 4.6:

>> y = 0.7* sawtooth (pi*t/5, 0.5);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, “FontSize’, 16)

>> title (‘Прямоугольные волны y = 0.7* sawtooth (pi*t/5, 0.5);

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

Процедура pulstran позволяет формировать колебания, являющиеся последовательностью прямоугольных, либо треугольных, либо гауссовых импульсов. Обращение

          y = pulstran (t, d, ‘func’, p1, p2, …)

Здесь d определяет вектор значений тех моментов времени, где должны быть центры соответствующих импульсов; параметр func определяет форму импульсов; параметры p1, p2,… определяют необходимые параметры импульса в соответствии с формой обращения к процедуре, определяющей этот импульс.

 

Пример 4.7:

>.> t= 0 : 0.01 : 50;

>> d = [0 : 50/5 : 50];

>> y = 0.7* pulstran (t, d, ‘tripuls’, 5);

>> plot(t,y), grid, set(gca, ‘FontName’, ‘Arial Cyr’, FontSize’, 16)

>> title (‘y = 0.7* pulstran (t, d, ‘tripuls’, 5’);

>>xlabel (‘Время (с)’)

>>ylabel (‘Выходной процесс y(t)’)

 

Аналогично сформируйте  последовательность прямоугольных и гауссовых импульсов.

 

Общие средства фильтрации

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

         h = freqs (b, a, w)

         Процедура создает вектор h комплексных значений частотной характеристики W() по передаточной функции W(s) звена, заданной векторами коэффициентов ее числителя – b и знаменателя - a, а также по заданному вектору w частоты ω. Если аргумент w не указан, процедура автоматически выбирает 200 отсчетов частоты, для которых вычисляется частотная характеристика. Если не указана выходная величина, процедура выводит в текущее графическое окно два графика - АЧХ и ФЧХ.

 

Пример 4.8: Передаточная функция имеет вид

W (s) = a/(s2 + 2*ξ*ω0*s + ω02 )

Выведем графики АЧХ и ФЧХ.

>> T0 =1; dz =0.05;

>> om0 = 2*pi/T0; A = 1;

>>a1(1) = 1; a1(2) = 2*dz*om0; a1(3) = om0^2; b1(1)=A;

>>freqs (b1,a1)

 

         Чтобы получить дискретную частотную характеристику по дискретной передаточной функции, заданной векторами значений ее числителя b и знаменателя a,  используется процедура

         y = freqz (b, a)

 

Спектральный анализ процессов

         Функции fft (Fast Fourier Transformation) и ifft (Invers Fast Fourier Transformation) осуществляют преобразования заданного вектора, соответствующие дискретному прямому и обратному преобразованию Фурье. Обращение:

y = fft ( x, n ); x = ifft ( y, n),

где n - число элементов заданного вектора (а также и выходного вектора).

 

Пример 4.9:

>> t = 0 : 0.001 :2;

>> x = sin(2*pi*5*t) + cos(2*pi*12*t);          %Формируем входной процесс

>> plot (t, x); grid

>> set (gca, ‘FontName’, ‘Arial Cyr’, ‘Fontsize’, 16);

>> title (‘Входной процесс’);

>> xlabel (‘Время’);

>> ylabel (‘x(t)’)

>> y = fft (x);

>> a = abs (y);

>> plot (a); grid

>> set (gca, ‘FontName’, ‘Arial Cyr’, ‘Fontsize’, 16);

>> title (‘Модуль Фурье-изображения’);

>> xlabel (‘Номер элемента вектора’);

>> ylabel (‘abs(F(x(t)’)

 

         Выполним обратное преобразование.

 

Пример 4.10:

>> x = ifft (y);

>> plot (t, x); grid

>> set (gca, ‘FontName’, ‘Arial Cyr’, ‘Fontsize’, 16);

>> title (‘Обратное Фурье-преобразование);

>> xlabel (‘Номер элемента вектора’);

>> ylabel (‘x(t)’)

 

         Для определения массива Фурье-изображения с целью построения графика Фурье-изображения в частотной области используется процедура fftshift.

 

Пример 4.11:

>> f1 = -500 : 0.5 :500;

>> v = fffshift (y);

>> a = abs (v);

>> plot (f1(970:1030), a(970:1030)); grid

>> set (gca, ‘FontName’, ‘Arial Cyr’, ‘Fontsize’, 16);

>> title (‘Модуль Фурье-изображения’);

>> xlabel (‘Частота (Гц)’);

>> ylabel (‘abs(F(x(t)’)

 

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

 

Пример 4.12:

>> N = length (y);

>> a = abs (v)/N;

>> plot (f1(970:1030), a(970:1030)); grid

>> set (gca, ‘FontName’, ‘Arial Cyr’, ‘Fontsize’, 16);

>> title (‘Модуль Фурье-изображения’);

>> xlabel (‘Частота (Гц)’);

>> ylabel (‘abs(F(x(t)/N’)

 

         Фильтрация осуществляется процедурой filter следующим образом:

         y = filter (b, a, x),

где x – заданный вектор входного сигнала; y - вектор значений выходного сигнала фильтра, получаемого в результате фильтрации; b - вектор коэффициентов числителя дискретной передаточной функции фильтра; a - вектор коэффициентов знаменателя этой функции.

Эта функция обеспечивает формирование вектора y по заданным  b, a, x, в соответствии с конечно-разностным уравнением фильтра с дискретной передаточной функцией вида рациональной дроби:

 

y(k) = b(1)*x(k) + b(2)*x(k-1) + b(nb+1)*x(k-nb)-

-         a(2)*y(k-1) – a(3)*y(k-3) -… - a(na+1)*y(k-nb),

 где b=[b(1),…,b(nb+1)], a=[1,a(2),…,a(nb+1)].

 

Пример 4.13: Пусть требуется получить достаточно верную информацию о некотором полезном сигнале (Yp) синусоидальной формы с периодом T1 = 1 и амплитудой A1 = 0.75, к которому добавился шум первичного преобразователя в виде более высокочастотной синусоиды с периодом T2 = 0.2 и амплитудой A2 = 5, а в результате измерения еще добавился белый гауссовый шум измерителя с интенсивностью Aш = 5. Сформируем этот сигнал как вектор его значений в дискретные моменты времени с дискретом  Ts = 0.001. В результате получим такой измеренный сигнал x(t):

 

>> Ts = 0.001;

>> t =0 : Ts :20;

>> A1 =0.75; T1 = 1;

>> T2 = 0.2; A2 = 10; eps = pi/4;

>> Ash = 5;

>> x = A1.*sin92*pi*t./T1 + A2.*sin(2*pi.*t./T2+eps) + …

   Ash*randn(1, length(t));

>> plot (t(10002:end),x(10002:end), grid, set(gca,‘FontName’, …

   ‘ArialCyr’, ‘FontSize’, 16),

>> title(‘Входной процесс’);

>> xlabel (‘Время ( с )’);

>> ylabel (‘X(t)’)

 

          Требуется так обработать измеренные данные x(t), чтобы восстановить по ним полезный сигнал как можно точнее. Период собственных колебаний фильтра должен быть равен периоду колебаний полезного сигнала Tф = T1. Чтобы после прохождения через фильтр амплитуда восстановленного сигнала совпадала с амплитудой полезного сигнала, нужно входной сигнал фильтра домножить на постоянную величину 2ξω02 . Сформируем этот фильтр, пропустим через него сформированный процесс, для сравнения на одном графике отобразим и восстанавливаемый процесс:

 

Пример 4.14:

>> T1 = 1; Tf = T1; dz = 0.05;

>> om0=2*pi/Tf; A=1; oms = om0*Ts;

>> a(1)=1+2*dz*oms+oms^2;

>> a(2)=-2*(1 + dz*oms);

>> a(3)= 1;

>> b(1)=A*Ts*Ts*(2*dz*om0^2);

>> Yp=A1*sin(2*pi*t/T1);

>> y=filter(b,a,x);

>> plot(t(1002:end), y(t(1002:end),t(1002:end), Yp(1002:end), grid,…

     set (gca,’ ,‘FontName’,  ‘ArialCyr’, ‘FontSize’, 16),

>> title(‘Процесс на выходе фильтра');

>> xlabel (‘Время ( с )’);

>> ylabel (‘Y(t)’)

 

         Чтобы избежать фазовых искажений полезного сигнала при его восстановлении, можно воспользоваться процедурой двойной фильтрации – filtfilt.

 

Пример 4.15:

>> y = filtfilt (b,a,x)

>> plot(t, y, t, Yp, grid, set (gca,’ ,‘FontName’,  ‘ArialCyr’, ‘FontSize’, 16)

>> title(‘Применение процедуры filtfilt’);

>> xlabel (‘Время ( с )’);

>> ylabel (‘Y(t)’)

 

Статистический анализ процессов

Определение спектральной плотности выполняется процедурой psd.

Обращение: [S,f] = psd (x, nfft, Fmax),

где x – вектор заданных значений процесса, nfft - число элементов вектора, которые обрабатываются процедурой fft, Fmax = 1/Ts - значение частоты дискредитации сигнала,  S - вектор значений СП сигнала, f – вектор значений частот, которым соответствуют найденные значения СП. В общем случае длина двух последних векторов равна nfft/2.

 

Пример 4.16:

>> [C,f] = psd (y1, dovg, Fmax);

>> subplot

>> stem (f(1:200), C(1:200)), grid,

>> set (gca,’ ,‘FontName’,  ‘ArialCyr’, ‘FontSize’, 16),

>> title (‘Спектральная плотность');

>> xlabel (‘Частота (Гц)’);

 

Если эту же процедуру вызвать без указания выходных величин, то результатом ее выполнения станет выведение графика зависимости СП от частоты.

 

Пример 4.17:

>> psd (y1, dovg, Fmax)

 

Здесь значения СП откладываются в логарифмическом масштабе в децибелах.

 

Группа функций xcorr вычисляет оценку взаимной корреляционной функции (ВЛФ) двух последовательностей x и y  . Обращение:

c= xcorr (x, y)

вычисляет и выдает вектор  c длины 2N-1 значений ВКФ векторов x и y  длины N. Также позволяет вычислить автокорреляционную функцию (АКФ)  последовательности, заданной в векторе x .

 

Пример 4.18:

>> R = xcorr (y1);

>> tau = -10+Ts : Ts : 10;

>> lt = length (tau);

>> s1r = round (length ( R) /2 – lt/2;

>> s2r = round (length ( R) /2 + lt/2 -1;

>> plot (tau, R (s1r:s2r), grid

>> set (gca,’ ,‘FontName’,  ‘ArialCyr’, ‘FontSize’, 16),

>> title (‘АКФ случайного процесса');

>> xlabel (‘Запаздывание (с)’);

 

Мы не рассматривали здесь вопросы проектирования фильтров в MatLab, а также интерактивную оболочку SPTool, содержащую средства поиска и просмотра сигналов (Signal Browser), проектировщик фильтров (Filter Designer), средство просмотра характеристик фильтров (Filter Viewer), средство просмотра спектра (Spectrum Viewer).

 

5. Исследование линейных стационарных систем (пакет Control Toolbox)

 

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

 

Ввод и преобразование моделей

         Ввод модели линейной стационарной системы (русскоязычное сокращение ЛСС, здесь же LTI - линейные,  инвариантные во времени системы) в среду пакета CONTROL  возможен в трех формах – в форме матриц пространства состояния, в виде коэффициентов числителей и знаменателей передаточных функций и в форме задания нулей, полюсов и коэффициента передачи системы.

         Некоторые процедуры создания LTI-моделей:

ss      - создает модель пространства состояния по заданным матрицам

         уравнений состояния системы;

dss    - создает аналогичную модель  по описанию пространства состояния

         более общего вида, когда уравнения переменных состояния не

         разрешены относительно производных;

tf       - создает модель по заданным передаточным функциям системы

zpk   -  создает модель по заданным нулям, полюсам и коэффициентам

        передачи системы;

filt   - создает модель по дискретным передаточным функциям, записанным в

       форме полиномов от z—1.

set  - присваивает значения некоторым другим полям –объектов (названиям

      входов и выходов, названиям системы и т.д.).

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

 

Пример 5.1:

>> v = tf ([1  4], [1  2   100])

 

         В MatLab предусмотрена возможность «набирать» программно «схему» САУ путем предварительного ввода моделей звеньев и последующего «соединения» этих звеньев в единую структуру. Однако более простым и удобным средством создания систем из отдельных блоков является интерактивная система Simulink,  рассмотренная в п.3.

 

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

tfdata   - для получения векторов числителя и знаменателя передаточной

                функции системы;

ssdata   - для получения значений матриц уравнений пространства состояния;

zpkdata - для получения векторов значений полюсов и нулей системы.

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

 

         Пакет предоставляет широкий набор процедур, осуществляющих анализ САУ с самых различных точек зрения и, прежде всего, определение откликов системы на внешние воздействия как во временной, так и в частотной области:

impulse - нахождение отклика на единичное импульсное входное

                 воздействие;

step        - нахождение реакции системы на единичный скачок входного

                воздействия;

initial    - определение собственного движения системы при произвольных 

                 начальных условиях;

lsim      - определение реакции системы на входное воздействие

               произвольной формы, задаваемое в виде вектора его значений во

               времени.

Кроме того: процедуры представления реакции системы на внешние гармонические воздействия в частотной области (bode, nyquist, nichols, sigma); процедуры, вычисляющие отдельные характеристики и графически показывающие расположение полюсов и нулей системы (pole, zpkdata, gram, damp, pzmap, rlocus).

         Если в командном окне набрать ltview, то можно вызвать окно обозревателя LTI–объектов и в интерактивном режиме строить все графики, причем для нескольких систем одновременно.

 

         Некоторые процедуры, используемые для синтеза САУ:

lqr, lqry    - осуществляют проектирование  линейно-квадратичного

                     оптимального регулятора для систем непрерывного времени;

lqrd, dlqr  - для проектирования дискретного оптимального линейно-

                     квадратичного регулятора;

kalman     - выполняет расчет фильтра Калмана для непрерывных или

                    дискретных САУ.

 

Список литературы

1. Гультяев А, Имитационное моделирование в среде Windows. – С-Пб.:                                            “КОРОНАпринт”, 1999.                                                                                               2. Лазарев Ю. MatLAB 5.x. – Киев: «Ирина», BHV, 2000.

 

 

Содержание

 

 

стр

 

 

1. MatLAB как научный калькулятор

3

2. Программирование в среде MatLAB

10

3. Моделирование систем в пакете Simulink

13

4. Цифровая обработка сигналов (Signal Processing Toolbox)

18

5. Исследование линейных стационарных систем (пакет Control Toolbox)

27

    Список литературы

29

    Приложение

30

 


ПРИЛОЖЕНИЕ

        БИБЛИОТЕКА МОДУЛЕЙ (БЛОКОВ) SIMULINK

Библиотека блоков SIMULINK представляет собой набор визуальных объектов, используя которые можно собирать, как из кубиков, произвольную конструкцию.

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

На порядок соединения блоков друг с другом также не накладывается ни­каких ограничений. Конечно, при связывании блоков необходимо соблюдать определенные правила, о которых будет сказано чуть позже, однако они обусловлены в основном логикой работы самой модели, а не специальными требованиями SIMULINK.

Для удобства работы пользователя библиотека блоков разбита на семь разделов. Шесть из них являются базовыми и не могут изменяться пользователем (за исключением внешнего оформления):

Sources (Источники),

Sinks (Получатели),

Discrete (Дискретные элементы),

Linear (Линейные элементы),

Nonlinear (Нелинейные элементы),

Connections (Соединения).

Седьмой разделBlocksets &Toolboxes (Наборы блоков и инструменты) — содержит блоки, относящиеся к компонентам MATLAB, включенным пользователем в рабочую конфигурацию пакета. При этом для каждой компоненты создается свой подраздел библиотеки. При минимальной рабочей конфигурации в разделе Blocksets &Toolboxes имеется только один подраздел - SIMULINK Extras (Дополнение к SIMULINK). Этот подраздел, в свою очередь, разбит на шесть частей, три из которых являются дополнением к одноименным основным разделам библиотеки, а три других имеют самостоятельное значение. Это наборы блоков Transformations (блоки пересчета координат и шкал температуры), Flip-Flops (блоки, соответствующие основным типам триггеров): Linearization (содержит единственный блок, реализующий функцию линейной аппроксимации).

Каждый блок, входящий в библиотеку SIMULINK, имеет по крайней мере один параметр настройки. Задавая требуемое значение параметра (или выбирая его из предлагаемого меню), пользователь имеет возможность скорректировать функ­цию, реализуемую данным блоком. Чтобы открыть окно настройки параметров, нужно дважды щелкнуть на изображении блока. Однако возможность изме­нять значения параметров появляется только после того, как блок будет помещен в окно блок-диаграммы.

Окна настройки параметров всех библиотечных блоков имеют идентичную структуру и содержат краткую характеристику блока, поля ввода (или выбора) значений параметров блока и 4 кнопки:

Apply применить;

Revert вернуть предыдущее значение параметров;

Help вызов файла помощи в формате html;

Close закрыть окно настроек.

Измененные значения параметров вступают в силу после «нажатия» кнопки Apply. Чтобы запустить модель на исполнение с новыми параметрами, закрывать окно настроек не обязательно.

Вернемся к основным разделам библиотеки SIMULINK. Как уже было сказа­но, их шесть.

 

Раздел Sources (Источники)                                                                      Блоки, входящие в этот раздел, предназначены для формирования сигналов, обеспечивающих управление работой модели в целом или отдельных ее частей - блоки-источники имеют по одному выходу и не имеют входов.

Итак, в качестве источников сигналов (входных величин) могут использоваться следующие блоки:

Constant — формирует постоянную величину (скаляр, вектор или матрицу);

Signal Generator — создает непрерывный сигнал произвольной формы;

Step генерирует единичный дискретный сигнал с заданными параметрами;

Ramp — создает линейно возрастающий (убывающий) сигнал;

Sine Wave — генератор гармонических колебаний;

Discrete Pulse Generator — генератор дискретных импульсных сигналов;

Chirp Signal — генератор гармонических колебаний переменной частоты;

Clock — источник непрерывного временного сигнала;

Digital clock — формирует дискретный временной сигнал;

Random Number — источник дискретного сигнала, амплитуда которого является случайной величиной, распределенной по нормальному закону;

Uniform Random Number — источник дискретного сигнала, амплитуда которо­го является равномерно распределенной случайной величиной;

Band-Limited White Noise — генератор «белого шума» с ограниченной полосой.

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

Первый из них — From File - предназначен для ввода в модель данных, хра­нящихся в МАТ-файле.

ВторойFrom Workspace — обеспечивает ввод в модель данных непосред­ственно из рабочей области MATLAB.

Структура данных в МАТ-файле представляет собой многомерный массив с переменным числом строк, которое определяется числом регистрируемых пе­ременных. Элементы первой строки содержат последовательные значения мо­дельного времени, элементы в других строках — соответствующие им значе­ния переменных.

Как и другие библиотечные блоки, блоки — «источники» могут настраиваться пользователем (за исключением блока Clock, работа которого основана на исполь­зовании аппаратного таймера компьютера).

Блок Step. Он обеспечивает формирование единичного управляющего сигна­ла, который может использоваться в любой точке модели. Блок имеет 3 параметра настойки:

Step time (Шаг времени) — определяет длительность сигнала, исходное зна­чение параметра равно 1.

Initial value (Начальное значение) — задает значение амплитуды сигнала в начальный момент времени; исходное значение — 0.

Final value (Конечное значение) — задает значение амплитуды сигнала по ис­течении шага моделирования; исходное значение этого параметра равно 1.

Блок Discrete Pulse Generator. Окно настроек блока позволяет изменять значения пяти параметров:

• амплитуды сигнала (Amplitude),

• величины периода сигнала (Period),

ширины импульса (Pulse width),

• величины задержки сигнала (Phase delay),

• шаг изменения модельного времени (Sample time).

Значения параметров 2...4 должны задаваться как целое число шагов модельного времени (number of samples). Поэтому выбор значений параметров блока целесооб­разно начинать с выбора величины Sample time. Размер шага можно указать как в фор­ме константы, так и в форме вычисляемого выражения. Если вычисленное значение является дробным, оно округляется до целого. Аналогично может быть задано и зна­чение амплитуды, но в случае дробной величины округление не производится.

Блок Random Number обеспечивает формирование сигналов, амплитуда ко­торых является случайной величиной, распределенной по нормальному закону с заданными параметрами. Блок имеет четыре параметра настройки. Первые два — Mean и Variance являются параметрами нормального закона (среднее и дисперсия), третий — Initial seed задает начальное значение для инициализации генератора последовательности случайных чисел. При фикси­рованном значении этого параметра генератор всегда вырабатывает одну и ту же последовательность СЧ. Четвертый параметр (Sample time) используется так же, как и в рассмотренных ранее блоках.

Блок Uniform Random Number обеспечивает формирование сигналов, амп­литуда которых является случайной величиной, распределенной равномерно в заданном интервале.

В блоке имеются такие же параметры настройки Initial seed и Sample time, как и в Random Number. Еще два параметра (Minimum и Maximum) задают диапазон распределения СВ.

Блок Digital Clock. Этот блок имеет единственный параметр настройки — ве­личину шага изменения модельного времени (Sample time). Величина шага за­дается таким же образом, как и в блоке Discrete Pulse Generator. Если величина шага задана выражением, то оно вычисляется только однажды, и полученное зна­чение используется на всем интервале моделирования. Особенность блока Digital Clock состоит в том, что он не только формирует величину шага, но и вычисляет новое значение модельного времени, которое используется для проверки усло­вия окончания моделирования. Очередное значение модельного времени вычис­ляется как сумма предыдущего значения и величины шага моделирования.

Блок From File имеет в качестве параметра настройки имя МАТ-файла, из ко­торого будут считываться требуемые данные. Если указывается только имя файла, то поиск файла производится в открытой папке. При необходимости можно указать полный путь доступа к файлу. После закрытия окна настроек имя файла выводится на изображении блока. Немного забегая вперед отметим, что в разделе библиотеки Получатели имеется блок То File, который выполняет запись резуль­татов моделирования в МАТ-файл.

Блок From Workspace, как было сказано ранее, обеспечивает использование в модели данных, хранящихся в рабочей области (собственной оперативной па­мяти) MATLAB. Блок имеет один составной параметр настройки, который пред­ставляет собой упорядоченный список используемых данных, заключенный в квад­ратные скобки. Список должен содержать не менее двух элементов, первым из которых явля­ется вектор значений модельного времени с именем tout. Остальные элементы спис­ка представляют собой векторы значений вводимых из рабочей области величин. Длина каждого из этих векторов должна быть равна длине вектора tout. Как пра­вило, в качестве элементов списка данных используются величины, помещенные в рабочую область MATLAB с помощью блока То Workspace, входящего в раздел библиотеки Sinks (Получатели).

 

Раздел Sinks (Получатели)                                                                       Блоки, собранные в этом разделе, различаются по функциональному предназначению.

Условно их можно разделить на три вида:

1) блоки, используемые при моделировании в качестве «смотровых окон». К ним относятся:

блок Scope - описан ниже;

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

блок Display, предназначенный для отображения численных значений величин:

2) блоки, обеспечивающие сохранение промежуточных и/или выходных результатов моделирования:

блок То File;

блок То Workspace;

3) блок управления моделированиемStop Simulation, который позволяет прервать моделирование при выполнении тех или иных условий. Блок срабатывает в том случае, если на его вход поступает ненулевой сигнал.

Блок Scope. Этот блок позволяет в процессе моделирова­ния наблюдать динамику изменения интересующих исследователя характе­ристик системы. Создаваемое с его помощью «смотровое окно» напоминает экран измерительного прибора. Открыть окно Scope можно только после того, как блок помещен па поле блок-диаграммы. Размер и пропорции окна можно изменять произвольно, ис­пользуя курсор мыши.

По оси ординат шкалы измерений откладываются значения наблюдаемой величины, по оси абсцисс — значения модельного времени. По умолчанию для оси ординат используется диапазон [-5; 5], а для оси модельного време­ни - [0; 10].

Блок-диаграмма может быть построена таким образом, чтобы на вход блока Scope поступала векторная величина. В этом случае для каждого элемента векто­ра в окне строится отдельная кривая, отражающая динамику его изменения. Вы­водимые кривые различаются цветом, который устанавливается автоматически. Одновременно в окне Scope может отображаться до 30 кривых.

Для управления параметрами окна Scope в нем имеется панель меню, содер­жащая семь кнопок

1 — изменение масштаба осей графика;

2 — изменение масштаба по оси абсцисс;

3 — изменение масштаба по оси ординат;

4 — автоматическая установка оптимального масштаба осей (автошкалирование);

5 - сохранение установленного масштаба осей;

6 — вызов диалогового окна настройки параметров блока Scope;

7 — печать содержимого окна Scope.

Кнопки 1 ...З являются альтернативными, т. е. в каждый момент времени может быть «нажата» только одна из них.

Для изменения масштаба по выбранной оси координат необходимо:

• «нажать» соответствующую кнопку изменения масштаба;

• подвести курсор мыши к тому участку графика, который должен быть ото­бражен в новом масштабе;

• нажать клавишу мыши (один раз!).

Первое нажатие приводит к четырехкратному увеличению масштаба, каж­дое последующее дает увеличение масштаба в два раза.

При «нажатии» кнопки 6 открывается окно Properties: Scope, содержащее две вкладки:

Axes (оси), позволяющая устанавливать параметры осей графика;

Setting (установки), предназначенная для ввода значений дополнительных параметров блока Scope.

В нижней части окна расположены кнопки, аналогичные кнопкам окон настрой­ки параметров других библиотечных блоков: Apply (Применить); Revert (Вернуть исходные значения); Help (Вызов помощи в формате HTML); Close (Закрыть

На вкладке Axes имеются поле Default limits (Диапазоны осей) и флажок Hide tick label (Скрыть обозначение осей).

В поле Default limits устанавливаются верхняя (Yтах) и нижняя (Ymin} границы оси ординат, а также наибольшее отображаемое значение модельного времени на оси абсцисс (Time range).

Относительно оси времени необходимо сделать дополнительное пояснение.

Если величина заданного интервала моделирования не превышает значение Time range (и, следовательно, весь процесс «умещается» в окне Scope), то под графиком в строке Time offset: выводится 0.

Если же интервал моделирования превышает значение Time range. то отображается только отрезок времени, равный Тm - п x(Time range), где Тm - длительность интервала моделирования, п — целое число. При этом в строке Тime offset выводится величина «скрытого» интервала времени (длиной пx(Time range)). Например, если значение Time range равно 7, а длительность интервала моделирования составляет 16 единиц времени, то в окне Scope будет выведен график моделируемого процесса за последние 2 единицы времени, а строка под графиком будет иметь вид: Time offset: 14.

Флажок Hide tick label позволяет изменить форму вывода графика в окне Scope. Если он установлен, то оси графика не отображаются, и график занимает всю рабочую область окна.

Чтобы установленные значения параметров вступили в силу, необходимо «нажать» кнопку Apply, расположенную в нижней части окна Properties.

На вкладке Setting имеются следующие поля:

1. Поле General обеспечивает выбор дискретности измерения отображаемых величин (характеристик системы и модельного времени).

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

Decimation установка дискретности измерения характеристик системы;

Sample time установка дискретности измерения модельного времени.

Для ввода требуемых значений используется строка редактирования, расположенная справа от меню. По умолчанию для измеряемых характеристик дискретность равна 1, а для модельного времени — нулю. Это означает, что значение наблюдаемой характеристики измеряется на каждом шаге моделирования, а модельное время считается непрерывным. Если параметр Decimation установить равным, например, 3, то значение исследуемой характеристики будет определяться только 1 раз в течение трех шагов моделирования. Параметр Decimation может принимать только целочисленные значения. Дискретность измерения модельного времени - это фактически величина шага моделирования. По умолчанию она равна 0,02. Для дискретных систем величина шага может быть задана либо в виде положительной константы, либо в форме вычисляемого выражения. Дискретность изменения модельного времени определяет момент окончания вывода данных в окно Scope: если очередной интервал заканчивается за пределами окна, то данные для него не выводятся.

Замечание. Параметр Sample time имеется практически во всех библиотечных блоках SIMULINK. Для каждого блока значение этого параметра устанавливается индивидуально. Если блок реализует некоторую функцию, то параметр Sample time определяет дискретность вычислений. Поэтому для эффектной работы модели необходимо согласовывать установку параметра для взаимосвязанных блоков.

2. Поле Data history позволяет задавать максимальный объем и способ хранения отображаемых в окне данных. Объем сохраняемых данных (Limit rows to last) вводится в строке редактирования. Способ хранения указывается с помощью флажка Save data to workspace: если он установлен, то отображаемые в окне Scope данные сохраняются в рабочей области MATLAB в виде матрицы, аналогичной по структуре МАТ-файлу. Имя матрицы указывается в строке редактирования (по молчанию — ScopeData).

3. Флажок Floating Scope предназначен для изменения способа использова­ния блока Scope в блок-диаграмме. При установленном флажке Scope отобра­жается как блок без входа, и если он был связан по входу с другими блоками, то эти связи «обрываются».

Блок XYGraph. Этот блок также относится к «смотровым окнам». Он пред­ставляет собой упрощенный вариант блока Scope и обеспечивает построение гра­фиков зависимостей произвольных величин, фигурирующих в модели. Блок име­ет два входа, первый из которых предназначен для ввода аргумента, второй — для ввода значений функции этого аргумента.

Окно XYGraph откры­вается автоматически при запуске модели. Оно имеет собственное меню, содержа­щее 4 раздела:

• раздел File включает стандартные команды работы с файлами, а также опции вывода графиков на печать;

• раздел Edit содержит единственную доступную команду — Copy Figure, кото­рая позволяет копировать содержимое окна XYGraph в буфер обмена;

• содержание разделов Window и Help совпадает с содержанием одноименных разделов меню командного окна MATLAB.

Блок XYGraph имеет следующие параметры настройки:

- диапазоны осей графика (X-min, Х-тах — для оси абсцисс н Y-min, Y-max для оси ординат);

• шаг модельного времени (Sample time), по умолчанию его значение равно -1. Это означает, что величина шага совпадает с установленной для модели в целом (либо со значением одноименного параметра предшествующего блока).

Блок Display. Он предназначен для вывода на экран численных значений вели­чин, фигурирующих в модели. Блок имеет 4 параметра настройки.

Первый — Format задает формат вывода; формат выбирается с помощью выпадающего меню, содержащего 5 пунктов: short, long, short_e, long_e, bank. Пред­лагаемые форматы вывода аналогичны форматам, используемым в командном окне MATLAB. Следующие два параметра используются так же, как и одноименные параметры блока Scope:

Decimation определяет периодичность вывода значений в окне Display;

Переключатель Floating display позволяет указывать способ использования блока Display в блок-диаграмме;

Поле Sample Time задает величину шага модельного времени, т. е. дискретность вывода данных в окно Display.

Блок Display может использоваться для вывода как скалярных, так и вектор­ных данных. Если отображаемая величина является вектором, то исходный фор­мат блока изменяется автоматически. Об изменении формата говорит маленький черный треугольник, появляющийся в нижнем правом углу блока. Для каждого элемента вектора создается свое мини-окно, но чтобы они стали видимы, необхо­димо «растянуть» изображение блока. Для этого следует выделить блок, подвести курсор мыши к одному из его углов (курсор при этом примет форму двойной стрел­ки), нажать клавишу мыши, и, не отпуская ее, растянуть изображение блока. Если хотя бы один элемент вектора остался «за кадром», на изображении блока Display по-прежнему присутствует черный треугольник. В этом случае операцию «растягивания» блока следует повторить

Блок То File. Как уже было сказано, этот блок используется в паре с блоком From File из раздела Sources. Он обеспечивает запись в МАТ-файл данных, полученных в ходе моделирова­ния. Блок имеет следующие параметры настройки:

File name имя МАТ-файла, в который будут записываться данные (может быть указан полный путь доступа к файлу, по умолчанию — untitled.mat); имя фай­ла выводится на изображении блока в блок-диаграмме;

Variable name имя переменной, по которому можно обращаться к данным, записанным в файле (для того. например, чтобы просмотреть или изменить их в командном окне MATLAB); по умолчанию используется стандартное имя ans;

Decimation дискретность записи данных в файл; при Decimation=1 запись производится на каждом шаге моделирования; параметр может принимать только целочисленные значения;

Sample Time величина шага моделирования для данного блока.

Блок То Workspace. Он также имеет «пару» из раздела Sources блок From Workspace и предназначен для сохранения данных, полученных в процессе моделирования, в рабочей области MATLAB. Данные сохраняются в виде мат­рицы, структура которой отличается от структуры данных в МАТ-файле тем, что:

• значения сохраняемых величин расположены по строкам, а не по столбцам:

• не регистрируются значения модельного времени. Блок имеет 4 параметра настройки:

Variable name имя, под которым данные сохраняются в рабочей области (по умолчанию — Simout);

Maximum number of rows (Максимальное количество строк) — предельно до­пустимое число шагов моделирования, для которого регистрируются данные (по умолчанию задается константой inf, то есть данные регистрируются на всем ин­тервале моделирования);

Decimation дискретность регистрации данных;

Sample time величина шага (дискретность изменения) модельного времени.

Два последних параметра имеют тот же смысл, что и одноименные параметры блока То File.

 

Раздел Discrete (Дискретные элементы)                                                        В этот раздел входят блоки, с помощью которых в модели может быть описано поведение дискретных систем. Напомним, что различают два основных типа таких систем: системы с дискретным временем и системы с дискретными состояниями. Блоки, входящие в рассматриваемый раздел библиотеки SIMULINK, обеспечивают моделирование как тех. так я других. Раздел содержит 8 блоков:

1. Unit Delay блок задержки сигнала.

2. Discrete-Time Integrator — дискретный сумматор (счетчик) времен.

3. Zero-Order Hold экстраполятор нулевого порядка.

4. First-Order Hold — экстраполятор первого порядка.

5. Discrete State-Space — блок формирования состояния системы. Блоки, обеспечивающие Z-преобразование входного сигнала:

6. Discrete Filter.

7. Discrete Transfer Fen.

8. Discrete Zero-Pole.

Блок Unit Delay обеспечивает задержку входного сигнала на заданное число периодов (шагов модельного времени).

Параметрами настройки для этого блока являются:

1. Начальное значение сигнала (Initial condition) значение амплитуды сиг­нала в момент активизации блока; оно может быть задано либо в виде числовой константы, либо в виде вычисляемого выражения.

2. Величина задержки (Sample time) — определяет число шагов модельного вре­мени, в течение которого сохраняется значение сигнала, поступившего на вход бло­ка; как и первый параметр, может задаваться в любой форме, но значение пара­метра должно быть положительным.

Блок Discrete-Time Integrator выполняет суммирование интервалов времени между поступлениями входного сигнала. Блок может быть использован для уп­равления логикой работы отдельных компонентов ИМ или модели в целом. В ча­стности, суммарная длительность работы некоторой подсистемы может служить условием «досрочного» окончания моделирования.

Блок имеет следующие параметры настройки:

• используемый метод интегрирования (Integrator method); с помощью выпа­дающего меню пользователь может выбрать один из трех методов: прямой метол Эйлера; обратный метод Эйлера; метод трапеций;

• подключение дополнительного управляющего сигнала (External reset).

• использование внешней установки начального значения входного сигнала

(Initial condition source).

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

«выпадающих» меню.

Параметр External reset может принимать следующие значения:

none дополнительный управляющий сигнал не используется;

rising для управления используется возрастающий сигнал;

falling для управления используется ниспадающий сигнал;

either на работу блока влияет любое изменение амплитуды управляющего

сигнала.

Параметр Initial condition source принимает одно из двух значений:

internal используется собственная установка начального значения сумматора;

external установка начального значения производится извне. Если выбранные пользователем значения двух рассматриваемых параметров

предполагают наличие дополнительных входных сигналов, то на графическом

изображении блока появляются дополнительные входные порты (после нажатия

кнопки Apply в окне настроек блока);

• начальное состояние сумматора (Initial condition); значение вводится в строке редактирования либо как числовая константа, либо в виде вычисляемо­го выражения;

• флажок Limit output (Ограничение выходного значения сумматора) опреде­ляет, будут ли использоваться следующие ниже 4 параметра настройки;

• верхнее предельное значение времени ( Upper saturation limit); по умолчанию -не ограничено (inf);

• нижнее предельное значение времени (Lower saturation limit); по умолча­нию параметр имеет значение -inf;

• флажок показать порт насыщения (Shore) saturation port);

• флажок показать порт состояния (Show state port).

Параметры 5...9 используются следующим образом. Если флажок Limit output установлен, то при переходе значения сумматора через верхний или нижний пре­дел на дополнительных выходах блока (saturation port и state port) формируется единичный сигнал. Чтобы этот сигнал можно было использовать для управления работой модели, флажки Show saturation port и Show state port должны быть включены (при этом на графическом изображении блока появляются обозначения портов). Особенность порта state port состоит в том, что снимаемый с него сигнал может быть использо­ван только для прерывания алгебраического цикла или для согласования состоя­ния подсистем модели.

 

Раздел Linear (Линейные элементы)                                                                Раздел содержит блоки, которые можно условно разделить на две группы: бло­ки, непосредственно предназначенные для описания линейных непрерывных сис­тем, и блоки общего назначения, которые могут быть использованы в модели лю­бой системы:

К первой группе относятся:

1. Gain — «линейный усилитель» (умножитель).

2. Transfer Fen — «передаточное звено».

3. State-Space — блок формирования состояния системы.

4. Zero-Pole.

5. Derivative — блок вычисления производной входного сигнала по времени (du/dt).

6. Dot Product блок вычисления свертки (скалярного произведения) двух входных сигналов.

7. Matrix Gain — матричный усилитель (умножитель) входного сигнала. Во вторую группу входят три блока:

1. Integrator — сумматор непрерывного времени.

2. Sum — блок суммирования входных сигналов.

3. Slider Gain — блок изменения коэффициента усиления. В соответствии с общей концепцией книги более подробно будут рассмотрены блоки, относящиеся ко второй группе.

Блок Integrator производит вычисление «времени существования» входного сигна­ла, и, подобно блоку Discrete-Time Integrator, может быть использован для определе­ния временных характеристик моделируемой системы (или отдельных ее подсистем).

Параметры настройки блока полностью идентичны параметрам настройки бло­ка Discrete-Time Integrator, рассмотренным ранее. Некоторое отличие имеет лишь последний из ни-х: вместо дискретности суммирования в данном случае требуется указать точность вычислений (Absolute tolerance).

Блок Sum может использоваться в двух режимах:

• сложения входных сигналов (в том числе с разными знаками);

• суммирования элементов вектора, поступающего на вход блока. Для управления режимами работы блока используется единственный параметр настройки — List of sings (Список знаков).

Значения этого параметра могут задаваться одним из трех способов:

• в виде последовательности знаков «+» и «-»; при этом число знаков опреде­ляет число входов блока, а сам знак — полярность входного сигнала;

• в виде целой положительной константы (больше 1); ее значение равно числу входов блока, а все входы считаются положительными (например, ввод констан­ты 4 аналогичен вводу «списка знаков» в форме ++++);

• в виде символа «I», который указывает на использование блока во вто­ром режиме.

Блок Slider Gain является одним из элементов взаимодействия пользователя с моделью в процессе моделирования. В активном состоянии блок представляет собой диалоговое окно, обеспечивающее установку значения некоторого параметра модели с помощью «ползункового» регулятора.

Блок Slider Gain становится активным после того, как будет помещен в окно блок-диаграммы создаваемой модели. Чтобы открыть окно с регулятором, необходимо дважды щелкнуть на изображении блока. Окно Slider Gain имеет три поля ввода: для указания нижнего уровня параметра (Low), верхнего уровня (High) и текущего значения. Текущее значение должно лежать внутри диапазона [Low, High]. Однако при выборе нового диапазона необходимо сначала указать новое значение параметра, а затем изменить гра­ны диапазона.

 

Раздел Nonlinear (Нелинейные элементы)                                                      По составу элементов это самый большой и, пожалуй, наиболее полезный для ими­тационного моделирования раздел библиотеки SIMULINK. Он содержит 30 блоков, которые условно можно разделить по назначению на несколько групп.

Первую группу образуют блоки, реализующие элементарные математические функции. К таким блокам относятся:

1. Блок Abs — формирует абсолютное значение входного сигнала (этот блок не имеет параметров настройки).

2. Блок Trigonometric Function обеспечивает преобразование входного сиг­нала с помощью одной из тригонометрических функций; выбор требуемой фун­кции производится в окне настройки параметров блока с помощью «выпадаю­щего» меню (оно становится доступным только после перемещения блока в поле блок-диаграммы).

3. Блок Math Function позволяет использовать для преобразования входного сигнала элементарные нетригонометрические функции (вычисление экспонен­ты, натурального и десятичного логарифмов, возведение в степень, извлечение квадратного корня и т. д.). Нужная функция выбирается с помощью «выпадаю­щего» меню.

4. Блок Rounding Function содержит различные функции округления значе­ния амплитуды входного сигнала; выбор конкретного метода округления выпол­няется также с помощью «выпадающего» меню.

5. Блок MinMax обеспечивает поиск минимального или максимального эле­мента входного вектора. Цель поиска задается в окне настроек блока. Второй па­раметр настройки — число входов блока.

Для блоков 2...5 имя выбранной функции выводится на графическом изобра­жении блока.

6. Блок Fсn — это универсальный «вычислительный» блок; в качестве пара­метра настройки блока можно ввести любое вычисляемое выражение, аргументом которого является значение входного сигнала; особенность этого блока состоит в том, что аргумент выражения должен быть указан явно. Для обозначения входно­го сигнала используется символ и. Если входной сигнал является вектором, то для операций, выполняемых над отдельными его элементами, аргумент также должен быть задан явно. Например, сложение двух элементов входного сигнала должно быть записано в таком виде: и(1)+и(2).

Замечание. Вычисляемое выражение должно давать только скалярное значе­ние. Это ограничение снимается при использовании блока MATLAB Fen.

7. Блок MATLAB Fen позволяет применить к входному сигналу любую подпрог­рамму обработки, реализованную в виде М-файла. Это может быть как библиотечная функция пакета MATLAB, так и подпрограмма, созданная разработчиком S-модели.

В первом случае использование блока MATLAB Fen аналогично использова­нию блока Fen. Вычисляемое выражение вводится в окне MATLAB function. Если оно содержит только обращение к библиотечной функ­ции, то ее аргумент можно явно не указывать. Например, для вычисления квад­ратного корня входного значения достаточно ввести имя функции sqrt.

Другой, более существенной, особенностью блока MATLAB Fen является нали­чие второго параметра настройки — Outputwidth (Ширина выходного сигнала). Это означает, что результатом работы блока может быть не только скаляр, но и вектор. Число его элементов должно быть равно значению параметра Output width.

8. Блок Product позволяет выполнять умножение или деление нескольких вход­ных сигналов (величин). В качестве параметров настройки могут указываться чис­ло входов блока и вид выполняемой операции.

Задание значений этих параметров аналогично настройке блока Sum из разде­ла Линейные элементы. В качестве знака операции умножения используется сим­вол «*», а для указания операции деления — символ «/».

Если в качестве значения параметра настройки блока ввести «1», то будет вы­числяться произведение элементов входного вектора (в этом случае на изображе­нии блока выводится символ Р).

Вторую группу образуют блоки, обеспечивающие логическую обработку вход­ного сигнала. Наиболее важными и полезными из них являются следующие.

1. Блок Logical Operator содержит набор основных логических операций: AND (операция логического умножения «И»), ОR (логическое сложение «ИЛИ»), NAND («И-НЕ»), NOR («ИЛИ-НЕ»), XOR (сложение по модулю 2), NOТ (операция ло­гического отрицания). Выбор требуемой функции выполняется с помощью «вы­падающего» меню; имя функции отображается на иконке блока.

Другим параметром настройки блока является число аргументов логической операции, то есть число входных портов блока (Number of input ports). Его значе­ние вводится в строке редактирования и должно быть натуральным числом. Мак­симально допустимое число входов блока практически не ограничено.

2. Блок Relational Operator реализует операции отношения над двумя вход­ными сигналами: >, <, >, <, = =(тождественно), != (не равно). Конкретная опера­ция выбирается при настройке параметров блока посредством «выпадающего» меню. Знак операции выводится на изображении блока.

3. Блок Combinatorial Logic обеспечивает преобразование входного сигнала в соответствии с заданной таблицей истинности. С его помощью можно описать на уровне «вход-выход» логику работы любого устройства или системы. Единственное ограничение заключается в том, что входные данные и результат должны быть представимы в форме булевых величин. Combinatorial Logic, можно сказать, что он представляет собой обобщенную мо­дель конечного детерминированного автомата. Для такого автомата заранее из­вестны все возможные значения выходного сигнала, и набор их ограничен. При­чем каждое выходное значение однозначно соответствует определенному входному воздействию. На вход блока может подаваться как скалярный, так и векторный сигнал. Ска­ляр в данном случае интерпретируется как одна булева величина, а вектор — как их совокупность. При этом любое ненулевое значение входного сигнала соответ­ствует значению «истина».

Блок имеет единственный параметр настройки — Truth table (таблица истинно­сти), который представляет собой список возможных выходных значений автома­та. При задании таблицы истинности необходимо соблюдать два основных правила:

1)     число строк таблицы должно быть равно 2n, где п — число элементов (размерность) входного сигнала;

2) входы таблицы считаются заданными.

Например, если на вход блока Combinatorial Logic подается векторный сигнал с n=2, то параметр Truth table представляет собой список из четырех элементов например такой: [0;1;0;1]. Таким образом, параметр Tmth table описывает только значения выходного сигнала. Разрядность выходного сигнала, а также значение каждого его разряда выби­раются пользователем на основе собственных представлений о логике работы со­здаваемой S-модели. Любое ненулевое значение сигнала в блоке Combinatorial Logic трактуется как «истина». Это относится и к входному, и к вы­ходному сигналу. Сформированный выходной сигнал может быть или выведен в какое-либо «смотровое окно», или передан на другие блоки S-модели.

Следующие четыре блока можно рассматривать как вариант модификации бло­ка Combinatorial Logic для непрерывного входного сигнала.

Dead Zone (Мертвая зона) — заменяет значение входного сигнала, лежащее в заданном диапазоне, нулем;

Look-up Table (Таблица поиска) — выполняет линейную интерполяцию вход­ного сигнала в соответствии с заданной табличной функцией.

Look-up Table(2D) — производит линейную интерполяцию двумерного вход­ного сигнала;

Hit Crossing (Обнаружено пересечение) — позволяет идентифицировать момент времени, когда входной сигнал «пересекает» некоторое значение: при появлении такой ситуации на выходе блока формируется единичный сигнал.

Блок Hit Crossing во многих случаях оказывается весьма удобным средством уп­равления логикой работы S-модели, поэтому остановимся на нем немного подробнее. Блок имеет три параметра настройки:

Hit crossing offset определяет значение, «пересечение» которого необходи­мо идентифицировать;

Hit crossing direction позволяет указать направление «пересечения», которое интересует разработчика модели; значение этого параметра выбирается с помо­щью «выпадающего» меню, которое содержит три пункта:

rising (возрастание),

falling (убывание),

either (в обоих направлениях);

Show output port (показать выходной порт) — флажок, с помощью которого можно выбрать формат использования блока.

При одновременном выполнении условий, задаваемых параметрами Hit crossing offset и Hit crossing direction, на выходе блока формируется единичный импульс. Его длительность определяется значением параметра Sample time бло­ка, предшествующего в модели блоку Hit crossing. Если этот параметр отсутствует, то единичный сигнал на выходе блока Hit crossing существует до его сле­дующего срабатывания.

В третью группу можно объединить блоки, реализующие функцию задержки входного сигнала. Таких блоков в разделе Nonlinear три:

Memory (Память);

Transport Delay (Задержка передачи)

Variable Transport Delay (Изменяемая задержка передачи).

Блок Memory является наиболее «слабым» из них по своим возможностям. Он выполняет задержку входного сигнала только на один шаг модельного времени. Блок имеет два параметра настройки.

Initial condition (Начальное состояние) — задает значение амплитуды вход­ного сигнала на момент инициализации блока; в большинстве случаев целесооб­разно принимать это значение равным нулю; флажок Inherit sample time (насле­дование шага времени) позволяет выбрать величину шага, на который будет производиться задержка сигнала:

• если флажок снят, то используется минимальный шаг, равный 0.1 единицы модельного времени;

• если флажок установлен, то величина шага определяется значением Sample time блока, предшествующего блоку Memory.

Блок Transport Delay обеспечивает задержку сигнала на заданное количество шагов модельного времени, причем необязательно целое. Настройка блока произ­водится с помощью трех параметров:

Time delay (Время задержки) — количество шагов модельного времени, на которое задерживается сигнал; может вводиться либо в числовой форме, либо в форме вычисляемого выражения;

Initial input (Начальный ввод) — значение амплитуды входного сигнала в момент инициализации блока (по умолчанию равно 0);

Initial buffer size (Начальный размер буфера) — объем памяти (в байтах), выделяемой в рабочей области MATLAB для хранения параметров задержанного сигнала; значение параметра должно быть кратно 8 (по умолчанию — 1024).

Блок Variable Transport Delay позволяет задавать управляемую извне величину задержки. С этой целью блок имеет дополнительный вход. Подаваемый на него сигнал определяет длительность задержки информационного сигнала, поступаю-то на основной вход блока.

Данный блок, как и предыдущий, имеет 3 параметра настройки: Maximum delay аксимальная задержка), Initial input и Buffer size. Назначение двух последних параметров идентично назначению одноименных параметров блока Transport delay. Параметр Maximum delay определяет наибольшую допустимую величину задержки информационного сигнала. Если величина задержки, определяемая управляющим сигналом,   превышает этот порог, то она принудительно устанав­ливается равной параметру Maximum delay. Его значение измеряется числом ша­гов модельного времени, может иметь дробное значение и вводиться либо в чис­ловой форме, либо в форме вычисляемого выражения.

Четвертую группу образуют «блоки-переключатели», то есть блоки, управля­ющие направлением передачи сигнала. Таких блоков четыре:

Switch (Переключатель);

Manual Switch (Ручной переключатель);

Multiport Switch (Многовходовый переключатель)

Relay (Реле).

Блок Switch имеет три входа: два информационных (1-й и 3-й) и один управ­ляющий (2-й). Логика работы блока состоит в следующем. Если амплитуда сиг­нала, поступающего на 2-й вход, не меньше заданного порогового значения, то на выход блока передается сигнал с 1-го входа, в противном случае — сигнал с 3-го входа. Блок имеет единственный параметр настройки — Threshold (Порог). Он может задаваться либо как числовая константа, либо как вычисляемое выра­жение. Периодичность срабатывания блока Switch определяется значением па­раметра Sample time блока, подсоединенного к его управляющему входу.

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

Блок Manual Switch не имеет параметров настройки и позволяет «вручную» выбирать один из двух входных портов, сигнал с которого будет передаваться на выход блока. Для перемещения «перемычки», соединяющей выходной порт блока Manual Switch с входным, необходимо дважды щелкнуть на изображении блока (предварительно, конечно, блок должен быть помещен в поле блок-диаграммы разрабатываемой модели).

Блок Multiport Switch обеспечивает передачу на выход сигнала, поступающего на один из информационных входов. Номер коммутируемого входа равен значению сигнала, подаваемого на управляющий вход блока. Если это значение является дробным числом, то оно округляется до целого по стандартным арифметическим правилам. Исключение составляют 2 случая: если значение управляющего сигнала меньше 1, то оно считается равным 1; если значение управляющего сигнала превышает число информационных входов, то оно принимается явным наибольшему номеру (входы нумеруются сверху вниз). Блок имеет один параметр настройки — Number of inputs (Число входов), который устанавливает число информационных входов. Значение параметра может вводиться в форме числовой константы или в форме вычисляемого выражения.

Блок Relay работает по аналогии с обычным реле: если входной сигнал превы­шает некоторое пороговое значение, то на выходе блока формируется «разрешаю­щий» сигнал.

Блок имеет 4 параметра настройки:     '

Switch on point (Точка включения) — задает пороговое значение, при превыше­нии которого происходит «включение» реле;

Switch off point (Точка выключения) — задает уровень сигнала, при котором реле «выключается»;

Outputwhen on (Выход при включенном состоянии) — определяет значение ам­плитуды «разрешающего» сигнала;

Outputwhen off (Выход при выключенном состоянии) — уровень сигнала на выходе реле, когда оно находится в состоянии «выключено».

Значения всех параметров блока могут вводиться либо в форме числовых кон­стант, либо в форме вычисляемых выражений.

 

Раздел Connections (Соединительные узлы)                                       Большинство блоков данного раздела предназначено для разработки S-моделей, содержащих модели более низкого уровня (подсистемы).

1. Блоки In (Входной порт) и Out (Выходной порт) обеспечивают «линейную» связь между подсистемами модели по информации.

2. Блоки Goto Tag Visibility (Признак видимости), From (принять) и Goto (передать) используются совместно и предназначены для обмена данными между различными компонентами S-модели с учетом доступности (видимос­ти) этих данных.

3. Блоки Data Store Memory (Память данных), Data Store Read (чтение дан­ных) и Data Store Write (Запись данных) также используются совместно и обеспе­чивают не только передачу данных, но и их хранение на интервале моделирования.

4. Блоки Enable (Разрешить) и Trigger (в данном случае уместен буквальный перевод этого слова — защелка) предназначены для логического управления рабо­той подсистем ^-модели.

5. Блок Subsystem (Подсистема) представляет собой «заготовку» для созда­ния подсистемы. Подсистема — это достаточно самостоятельная S-модель более низкого уровня, которая, в свою очередь, может содержать подсистемы произволь­ного уровня вложенности.

Наряду с перечисленными выше, раздел Connections содержит еще несколько элементов, которые имеют самостоятельное значение и могут оказаться весьма по­лезными при создании многих практических приложений:

Блок Mux — выполняет объединение входных величин в один линейный век­тор. При этом входные величины могут быть как скалярными, так и векторными. Размерность результирующего вектора равна суммарному количеству элементов, поступающих на входные порты блока. Блок Mux имеет один параметр настройки — Number of inputs (Число входов). Блок Demux (Разделитель) выполняет функции, противоположные функциям блока Mux: разделяет входной вектор на заданное число компонентов. Данный блок также имеет единственный параметр настройки, который называется Number of outputs (Число выходов). Поскольку соотношение между размерностью входного вектора и числом выходов блока может быть различным, то размерность компонен­тов выходного вектора разработчику модели необходимо определять заранее само­му. При этом следует учитывать следующие особенности работы блока Demux. Если размерность входного вектора (М) равна значению параметра Number of outputs, т. е. числу выходов блока (N), то на всех выходах блока формируются ска­лярные величины — входной вектор просто распадается на отдельные элементы. Если размерность входного вектора превышает число выходов блока (M>N), то на первых (п-1 )-ом выходах формируются векторы, размерность которых рав­на целой части отношения M/N, а размерность вектора на последнем выходе рав­на остатку от деления. Если M<N, то при запуске модели выдается сообщение об ошибке («несоответ­ствие размерности портов»).

Блоки Ground (Земля) и Terminator (Ограничитель) могут использоваться в каче­стве «заглушек» для тех портов, которые по какой-либо причине оказались не подклю­ченными к другим блокам S-модели (например, на этане отладки модели). Блок Ground используется как «заглушка» для входных портов, а блок Terminator — для выходных. Применение указанных блоков позволяет избежать выдачи интерпретатором MATLAB предупреждения о том, что в S-модели имеются неподключенные порты.

Блок IC (Initial Condition — начальное состояние) позволяет устанавливать произ­вольное начальное состояние входного сигнала. Длительность пребывания системы в этом состоянии равна длительности шага моделирования. Параметром настройки блока является величина Initial Value (Значение сигнала на момент входа в блок).

Блок Width (Размер) вычисляет размерность сигнала, поступающего на его вход. Вычисленное значение выводится непосредственно на изображении блока. Параметров настройки он не имеет.

Блок Selector (Селектор) выбирает во входном векторе и передает на выход только те элементы, номера которых указаны в параметрах настройки блока.

Блок имеет два параметра настройки:

Elements (Элементы) — список номеров элементов входного вектора, подле­жащих отбору;

luput port width (Размерность входного порта) — размерность входного век­тора, который может быть «просеян» с помощью данного блока; значение этого параметра обязательно должно совпадать с числом элементов входного вектора. Если на вход блока подается матрица, то в списке Elements используется сквоз­ная нумерация элементов, причем индекс изменяется построчно. Существенным достоинством блока является то, что значения его параметров настройки отображаются в графическом виде на иконке блока.

Блок Merge (Слияние) выполняет объединение поступающих на его входы сиг­налов в один. Блок имеет два параметра настройки:

Number of inputs (Количество входов), определяющий число входных сигна­лов, которое может быть подано на входы блока; для корректной работы блока все входные сигналы должны иметь одинаковую размерность (хотя при несоблюде­нии этого правила сообщение об ошибке не выдается);

Initial output (Инициализация выхода) — задает сигнал, на основе которого дол­жно выполняться объединение; если значение параметра не задано, то на выход блока просто выдается один из входных сигналов.

 

Дополнительные разделы библиотеки (Blocksets & Toolboxes)               Раздел Blocksets &Toolboxes является единственным раз­делом, содержимое которого изменяется в зависимости от установленной на ва­шем компьютере конфигурации пакета MATLAB.

Если из инструментальных средств пакета в рабочую конфигурацию включен только SIMULINK, то данный раздел содержит единственный подраздел — Simuhnk Extras (Дополнения к Simulink).

Этот подраздел, в свою очередь, разбит на шесть частей:

Additional Sinks (Дополнение к разделу Sinks) — включает дополнительные гра­фические «смотровые окна»; четыре из них обеспечивают визуализацию спект­рального анализа сигналов, другие два — отображение корреляционных характеристик сигналов. Для использования двух последних блоков требуется включить в состав конфигурации пакета инструментальные средства обработки сигналов (Signal Processing Toolbox);

Additional Linear (Дополнение к разделу Linear) — блоки, входящие в эту часть библиотеки, предназначены для расчета характеристик линейных систем автома­тического управления;

Transformations (Преобразования) — содержит блоки, выполняющие различ­ные преобразования числовых величин:

• координат — из прямоугольной системы в полярную либо сферическую и обратно;

• температуры — из шкалы Фаренгейта в шкалу Цельсия и обратно;

• углов — из градусов в радианы и обратно. Flip Flop (Триггеры) — содержит блоки, моделирующие работу основных ти­пов триггеров:

• D-триггера,

• 5-R-Tpnrrepa,

• J-K-триггера;

Кроме того, в эту часть библиотеки включен блок Clock (Часы), генерирую­щий дискретный временной сигнал. Параметром настройки этого блока является величина периода сигнала;

Linearization (Линеаризация) — раздел содержит единственный блок, позво­ляющий вычислить производную входного сигнала по

времени.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Доп. план 2004г., поз. 11

 

 

 

Лида Куандыковна Ибраева

 

 

 

 

 

 

 

 

 

 

 

 

ОСНОВНЫЕ ПРИЕМЫ РАБОТЫ В СРЕДЕ MATLAB

Методический практикум

 

 

 

 

 

 

 

 

Редактор В.В. Шилина

 

 

 

 

 

 

 

 

Подписано в печать 9.04.04.                                   Формат 60х84 1/16

Тираж 50 экз.                                                            Бумага типографическая № 1

Объем 3,0 уч.-изд.л.                                                 Заказ 193. Цена 98 тг.

 

 

 

Копировально-множительное бюро

Алматинского института энергетики и связи

480013 Алматы, Байтурсынова, 126



[1] Мустафин М.А., Жусипов С.С. . Специальный курс электрических машин. Исследование асинхронного двигателя в схеме асинхронного вентильного каскада на компьютерной модели. Методические указания к лабораторным работам (для студентов всех форм обучения по специальностям 330140, 330840) – Алматы: АИСЭ, 2003. – 16 с.

[2] Богатырев А.Ф., Панченко С.В.,Стояк В.В. Моделирование и оптимизация теплотехнических процессов: Учебное  пособие. – Алма-Ата:КазПТИ, 1989.