Смекни!
smekni.com

Идентификация и моделирование систем управления (стр. 3 из 3)

После выполнения сеанса работы (сессии) в окне команд Command Window появятся результаты решения системы (1) в виде массивов аргумента t и искомых функций x, которые можно сохранить в папке work под именем rech1. mat.

Для отображения графика исходной системы дифференциальных уравнений (2.3) необходимо в режиме командной строки выполнить команду plot:

>> plot(t,x(:,1),'r',t,x(:,2),'k--')

Рис 5

На рис. 5 приведена экранная форма графика решения заданной системы уравнений (2. 3) x1(t), x2(t).

Графики интерпретируют изменение во времени величины функции:

x1(t)=-16621/400*(-3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200+1/200*275686441^(1/2))*t)-1/400*(-3260759/82705932300*275686441^(1/2)+179/300)*275686441^(1/2)*exp((-16979/200+1/200*275686441^(1/2))*t)-16621/400*(3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200-1/200*275686441^(1/2))*t)+1/400*(3260759/82705932300*275686441^(1/2)+179/300)*275686441^(1/2)*exp((-16979/200-1/200*275686441^(1/2))*t)-119/25 и

x2(t)=(-3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200+1/200*275686441^(1/2))*t)+(3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200-1/200*275686441^(1/2))*t)-179/150, соответственно.

Как видно из графиков временных зависимостей, процесс асимптотически приближается к установившемуся состоянию с принужденной составляющей x1(t)= x1 =-4.7 и x2(t)= x2 = -1.2.

Сравнение полученных графиков с ранее построенными x1(t) x2(t) (Рис. 5 ) при моделировании в режиме командной строки свидетельствует о идентичности результатов, полученных при использовании различных способов взаимодействия с программой при реализации ее широких возможностей.

2.4. Моделирование с использованием пакета расширения Symbolic Math Tolbox

Возможности пакета расширения Symbolic Math Tolbox позволяют в рамках системы MATLAB осуществлять аналитические вычисления и аналитические преобразования выражений. Помимо выполнения аналитических преобразований, пакет Symbolic Math Tolbox позволяет выполнять арифметические вычисления с контролируемой точностью, которую можно задать заранее. Этот пакет осуществляет алгебраические операции над объектами нового типа – sym – объектами. Такие объекты получаются после вызова одноименной функции конструктора таких объектов. Над объектами типа sym производятся манипуляции в соответствии с правилами алгебры и математического анализа.

Для решения дифференциальных уравнений в форме Коши MATLAB имеет следующую функцию:

dsolve(‘eqn1’,’eqn2’,….) – возвращает аналитическое решение системы дифференциальных уравнений с начальными условиями. Сначала задаются уравнения, затем начальные условия (равенствами eqn).

По умолчанию в качестве независимой переменной задается переменная ‘t’. Можно использовать и другую переменную, добавив ее в конце списка параметров функции dsolve. Символ D обозначает производную по независимой переменной, D2 означает вторую производную и т. д.

Начальные условия задаются в виде равенств ‘y(a)=b’, ‘Dy(a)=b’ , где y – независимая переменная, a и b – константы. Если число начальных условий меньше, чем число дифференциальных уравнений, то в решении будут присутствовать произвольные постоянные С1, С2,…и т. д.

Выполним функцию dsolve для системы (1):

S=dsolve('Df=-1.79*f+7.14*g','Dg=-2*f-168*g-210','f(0)=0','g(0)=0')

S = f: [1x1 sym]

g: [1x1 sym]

>> S.f

ans =-16621/400*(-3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200+1/200*275686441^(1/2))*t)-1/400*(-3260759/82705932300*275686441^(1/2)+179/300)*275686441^(1/2)*exp((-16979/200+1/200*275686441^(1/2))*t)-16621/400*(3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200-1/200*275686441^(1/2))*t)+1/400*(3260759/82705932300*275686441^(1/2)+179/300)*275686441^(1/2)*exp((-16979/200-1/200*275686441^(1/2))*t)-119/25

>> S.g

ans = (-3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200+1/200*275686441^(1/2))*t)+(3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200-1/200*275686441^(1/2))*t)-179/150

Окончательно будем иметь следующее решение:

x1(t) = -16621/400*(-3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200+1/200*275686441^(1/2))*t)-1/400*(-3260759/82705932300*275686441^(1/2)+179/300)*275686441^(1/2)*exp((-16979/200+1/200*275686441^(1/2))*t)-16621/400*(3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200-1/200*275686441^(1/2))*t)+1/400*(3260759/82705932300*275686441^(1/2)+179/300)*275686441^(1/2)*exp((-16979/200-1/200*275686441^(1/2))*t)-119/25

x2(t)=(-3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200+1/200*275686441^(1/2))*t)+(3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200-1/200*275686441^(1/2))*t)-179/150

Для построения графиков функций x1(t) и x2(t) выполним команду plot в режиме командной строки (рис. 6, 7)

>> t=0:0.02:5;

>>x=-16621/400*(-3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200+1/200*275686441^(1/2))*t)-1/400*(-3260759/82705932300*275686441^(1/2)+179/300)*275686441^(1/2)*exp((-16979/200+1/200*275686441^(1/2))*t)-16621/400*(3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200-1/200*275686441^(1/2))*t)+1/400*(3260759/82705932300*275686441^(1/2)+179/300)*275686441^(1/2)*exp((-16979/200-1/200*275686441^(1/2))*t)-119/25;

>> plot(t,x)

Рис 6

>> t=0:0.02:5;

>>x=(-3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200+1/200*275686441^(1/2))*t)+(3260759/82705932300*275686441^(1/2)+179/300)*exp((-16979/200-1/200*275686441^(1/2))*t)-179/150;

>> plot(t,x)

Рис 7

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

2.5. Моделирование с использованием имитационного пакета моделирования динамических систем Simulink

Для построения Simulink-модели системы (2. 3) нам необходимы следующие библиотеки:

· Continuous, содержащую блок интегрирования Integrator;

· Math, содержащую блоки масштабирования и суммирования Gain и Sum;

· Sinks, содержащую блоки виртуальных регистраторов Scope (осциллограф для наблюдения временных и иных зависимостей).

· Sources, содержащую блоки единичного скачка Step.

В окне Simulink Library Browser на панели инструментов нажимаем кнопку Greate a new model (создание S-модели), и в открывшемся окне подготовки и редактирования функциональных схем выполняем построение структурной схемы (Рис. 8).

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

В окне установки параметров первого интегратора Integrator в поле начальных значений Initial condition устанавливаем начальное условие: x1 (0) =0. Остальные параметры принимают значения по умолчанию. В окне установки параметров второго интегратора Integrator 1 в поле начальных значений Initial condition устанавливаем начальное условие: x2 (0) = 0. Остальные параметры имеют значения по умолчанию.

В окне установки параметров первого и второго источника одиночного перепада Step устанавливаем следующие параметры:

· Step timeвремя появления перепада – устанавливаем 0;

· Initial valueначальное значение воздействия 0 (по умолчанию);

· Final valueконечное значение воздействия 1 (по умолчанию);

· Sample timeэталонное время 0 (по умолчанию).

Рис 8

Блоки масштабирования Gain служат для масштабирования данных, т. е. умножения их на заданную коэффициент – константу. В окнах установки параметров всех четырех блоков в поле численных значений Gain установить соответствующие множители -1,79; 7,14; -2; -168 . Значение параметра Gain выводится внутри блока. Если входной сигнал и множитель относятся к разным типам, то Simulink пытается преобразовать тип множителя к типу входного сигнала, а когда это сделать не удается, выдает сообщение об ошибке. Флажок Saturate on integer overflow (подавлять переполнение для целых) дает возможность задать необходимость «урезания» результата умножения, если он превышает диапазон, установленный для целочисленных значений. Остальные параметры принимают значения по умолчанию (в частности в поле Multiplication выводится Element-wise[K*u]).

Окно настройки блока сложения/вычитания предполагает вид представления блока round(круглый), rectangular(квадратный) и число входов с выполняемыми по ним операциями. Число входов и операций задаются шаблоном List of signs. Например, шаблон | + + означает, что блок имеет два суммирующих входа, а | + - + означает, что он имеет три входа, причем, средний вычитающий, а крайние суммирующие.

Окно параметров виртуального осциллографа с открытой вкладкой General содержит следующие параметры: Number of axes – количество каналов, позволяющий преобразовать одноканальный осциллограф в многоканальный; Time range – пределы временного интервала; Tick labels – вывод/скрытие отметок по осям; Samplingустановка временных соотношений (Decimation – в десятичных долях времени со значением по умолчанию 1 или Simple Time – в тактах эталонного времени, по умолчанию 0). Окно параметров виртуального осциллографа с открытой вкладкой Data history позволяет задать максимальное число точек осциллограмм для хранения и задать параметры хранения осциллограмм в рабочем пространстве системы MATLAB.

Назначение кнопок панели инструментов виртуального осциллографа представлено на рис. 9.


Рис 9

Удобной является кнопка «Автомасштабирование», которая позволяет установить такой масштаб, при котором изображение осциллограммы имеет максимально возможный размер по вертикали и отражает весь временной интервал моделирования.

После редактирования параметров блоков выполняется запуск процесса моделирования нажатие кнопки Start simulation на панели инструментов окна модели пакета Simulink. Результат моделирования, отражающий движение системы, представлен на рис. 10, 11.(изменения во времени переменных состояния системы x1(t) и x2(t)).

Рис 10 рис 11

Полученные графики полностью совпадают с графиками, полученными моделированием в режиме командной строки, с использованием встроенных средств и с использованием пакета расширения Symbolic Math Tolbox.