Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
імто / лр6-7 .docx
Скачиваний:
20
Добавлен:
12.06.2021
Размер:
486.64 Кб
Скачать

Лабораторна робота № 6

Тема: Ознайомлення з пакетом CurveFittingToolbox в програмному середовищі MATLAB.

Мета: Навчитися застосовувати функції пакету CurveFittingToolbox для обробки експериментальних даних.

Для цього завантажимо файл set19.mat даного файлу я не знайшов у себе на пк, можливо він був створений додатково, тому вставив деякі графіки з прикладу

Натиснувши на кнопку Data… відкриється вікно для завантаження даних: 18 6 6 Введемо змінні наступним чином (x, f1), (x, f2), (x, f3), (x, f4). В полі Datasetname задамо наступні імена відповідно: f1 vs. x, f2(x), speed(time), f4 vs. x. Кожного разу натискати кнопку Create dataset. Закривши вікно Data головне вікно матиме наступний вигляд: Рис. 3.2. Вікно відображення завантажених даних Отримані графіки занести до протоколу. Далі ознайомимося з методами обробки даними. Натиснувши на кнопку Exclude… з’явиться вікно де можливо відсортувати дані, задавши певні правила: 19 6 Рис. 3.3. Вікно обробки даних Задамо ім’я правила – rule1 в полі Exclusion rule name. Виберемо дані f1 vs. x в полі Select data set. Виділимо дані по осі Yв діапазоні [1; 6] тастворимо правило натиснувши на кнопку Create execlusion rule. Результати роботи правила можливо подивитися натиснувши на кнопку View. Результат занести до протоколу. Для перегляду в головному вікні певних графіків натискуємо кнопку Plotting, висвічується вікно де можливо вибрати певні графік для перегляду. Рис. 3.4. Вікно вибору відображення графіків 20 6 6 Далі відфільтруємо дані. Для цього натиснути на кнопку Data… та в вікні, що з’явилося вибрати вкладку Smooth: Рис. 3.5. Вікно вибору методу фільтрації даних Всписку Method вибрати по-черзі всі методи та натискати кнопку Create smoothed data set фільтруючі дані f4 vs. x. Порівняти отримані відфільтровані дані з орігінальними. Для цього в меню вікна Curve Fitting Tool вибрати File->Print to Figure. 21 6 З’явиться вікно в ньому натиснути клавішу : Рис. 3.6. Вікно відображення реузьтатів фільтрування З’явиться розширене вікно редагування графіків, де можливо змінювати вигляд графіків, а початковий вектор – точками. 22 6 Рис. 3.7. Вікно задання парааметрів редагування відображення графіків Наступний етап знаходження апроксимація даних поліномами певної степені. Для цього натискаємо кнопку Fitting… в з’явившомуся вікні натискаямо кнопку Newfit, активуються дані для вибору типу апроксимації: 23 6 Рис. 3.8. Вікно вибору методів апроксимації даних В списку Dataset вибираємо дані f2(x) в списку Type off it Polynomial тип поліному: 2-ї, 3-ї та 6-ї степені та натискуємо кнопку Apply. Після створення поліному певної степені для створення полінома іншої степені необхідно натискувати кнопку Newfit.

Результати фільтрування

Контрольні запитання

  1. Які існують методи обробки даних?

2.З якою метою відбувається фільтрація даних?

З метою відкидання непотрібних значень

Лабораторна робота № 7

Тема: Моделювання рівня рідини з використанням C MEX –File неперервної SISO системи.

Мета: Навчитись виконувати моделювання IDNLGREY, заснованого на файлах моделювання C MEX.

Завдання та порядок виконання роботи

Завдання полягає в моделюванні рівня рідини нижнього бака, що входить у склад двох резервуарів,

Схематичне зображення системи в два танка Ми починаємо роботу моделювання шляхом завантаження доступних введення-виведення даних, які були змодельовані з використанням наведеної нижче структури IDNLGREY моделі, з додаванням шуму на виході. Файл twotankdata.mat містить один набір даних з 3000 введенням-висновком зразків, сформованих з використанням частоти дискретизації (Ts) 0,2 секунди. Вхід u(t) є напруга [V], застосовується до насоса, який генерує приплив в верхньому резервуарі. Досить невеликий отвір в нижній частині цього верхнього резервуара призводить до відтоку, який виходить в нижній бак, а вихідний сигнал y(t) системи з двох танків є рівень рідини [м] нижнього бака. Ми створюємо об'єкт IDDATA z для зберігання даних резервуара.

>> load(fullfile(matlabroot,'toolbox', 'ident','iddemos','data','twotankdata'));

>> z=iddata(y,u,0.2, 'Name', 'Two tanks');

>> set(z, 'InputName', 'Pump voltage', 'InputUnit', 'V', ...

'OutputName','Lower tank water level', 'OutputUnit', 'm', ...

'Tstart', 0, 'TimeUnit', 's');

>> figure ('Name', [z.Name ': input-output data']);

>> plot (z);

>>

>> FileName = 'twotanks_c' ;

>> Order = [1 1 2];

>> Parameters = {0.5; 0.0035; 0.019;...

9.81; 0.25; 0.016};

>> InitialStates = [0; 0.1];

>> Ts= 0;

>> nlgr = idnlgrey(FileName, Order, Parameters, InitialStates, Ts,...

'Name','Two tanks');

>> set (nlgr, 'InputName', 'Pump voltage', 'InputUnit','V',...

'OutputName', 'Lower tank water level', 'OutputUnit','m',...

'OutputUnit', {'rad' 'rad/s'},...

'TimeUnit', 's');

Error using idnlmodel/set (line 88)

The value of the "OutputUnit" property must be a string

vector with as many entries as outputs. Type "help

DynamicSystem.OutputUnit" for more information.

>> nlgr = idnlgrey(FileName, Order, Parameters, InitialStates, Ts,...

'Name','Two tanks');

set (nlgr, 'InputName', 'Pump voltage', 'InputUnit','V',...

'OutputName', 'Lower tank water level', 'OutputUnit','m',...

'OutputUnit', {'rad' 'rad/s'},...

'TimeUnit', 's');

Error using idnlmodel/set (line 88)

The value of the "OutputUnit" property must be a string

vector with as many entries as outputs. Type "help

DynamicSystem.OutputUnit" for more information.

>> setinit(nlgr, 'Name', {'Upper tank water level' 'Lower tank water level'});

>> setinit(nlgr, 'Unit', {'m' 'm'});

>> setinit(nlgr, 'Minimum' , {0 0});

>> setpar(nlgr, 'Name', {'Upper tank area' ...

'Pump constant' ...

'Upper tank outlet area' ...

'Grevity constant' ...

'Lower tank area' ...

'Lower tank outlet area'});

>> setpar(nlgr, 'Unit', {'m^2' 'm^3/(s*V)' 'm^2' 'm/(s^2)' 'm^2' 'm^2'});

>> setpar(nlgr,'Minimum', num2cell(eps(0)*ones(6,1)));

>> nlgr.Parameters(1).Fixed = true

nlgr =

Continuous-time nonlinear grey-box model defined by 'twotanks_c' (MEX-file):

dx/dt = F(t, u(t), x(t), p1, ..., p6)

y(t) = H(t, u(t), x(t), p1, ..., p6) + e(t)

with 1 input, 2 states, 1 output, and 5 free parameters (out of 6).

Name: Two tanks

Status:

Created by direct construction or transformation. Not estimated.

>> nlgr.Parameters(4).Fixed = true

nlgr =

Continuous-time nonlinear grey-box model defined by 'twotanks_c' (MEX-file):

dx/dt = F(t, u(t), x(t), p1, ..., p6)

y(t) = H(t, u(t), x(t), p1, ..., p6) + e(t)

with 1 input, 2 states, 1 output, and 4 free parameters (out of 6).

Name: Two tanks

Status:

Created by direct construction or transformation. Not estimated.

>> nlgr.Parameters(5).Fixed = true;

>> nlgr.Parameters(1).Fixed = true;

>> nlgr.Parameters(4).Fixed = true;

>> nlgr.Parameters(5).Fixed = true;

>> getpar(nlgr, 'Fixed')

ans =

[1]

[0]

[0]

[1]

[1]

[0]

>> nlgr.Algorithm.SimulationOptions.AbsTol = 1e-6;

>> nlgr.Algorithm.SimulationOptions.RelTol = 1e-5;

>> figure;

>> compare(z, nlgr);

>> nlgr = pem(z,nlgr, 'Display', 'Full');

>> figure;

>> compare(z, nlgr);

>> nk = delayest(z);

>> arx22 = arx(z, [2 2 nk], 'cov', 'none');

>> arx33 = arx(z, [3 3 nk], 'cov', 'none');

>> arx44 = arx(z, [4 4 nk], 'cov', 'none');

>> oe22 = oe (z, [2 2 nk], 'cov', 'none');

>> oe33 = oe (z, [3 3 nk], 'cov', 'none');

>> oe44 = oe (z, [4 4 nk], 'cov', 'none');

>> disp(' True Estimated parameter vector');

True Estimated parameter vector

>> ptrue = [0.5; 0.005; 0.02; 9.81; 0.25; 0.015];

>> fprintf(' %1.4f %1.4f\n', [ptrue'; getpvec(nlgr)']);

0.5000 0.5000

0.0050 0.0049

0.0200 0.0200

9.8100 9.8100

0.2500 0.2500

0.0150 0.0147

>> figure;

>> figure('Name', [nlgr.Name ': step responses']);

t=(-50:0.1:50)';

step(nlgr, 'b', 'InputLevels', [5;6], t);

line(t, step(nlgr, 'ul', [5;7], t), 'color', 'g');

line(t, step(nlgr, 'ul', [5;8], t), 'color', 'r');

line(t, step(nlgr, 'ul', [5;9], t), 'color', 'm');

>> line(t, step(nlgr, 'ul', [5;10], t), 'color', 'k');

>> grid on;

>> legend('5-> 6V', '5-> 7V', '5->8V', '5->9V', '5->10V', ...

'Locetion', 'Best');

>> present(nlgr);

nlgr =

Continuous-time nonlinear grey-box model defined by 'twotanks_c' (MEX-file):

dx/dt = F(t, u(t), x(t), p1, ..., p6)

y(t) = H(t, u(t), x(t), p1, ..., p6) + e(t)

with 1 input, 2 states, 1 output, and 3 free parameters (out of 6).

Input:

u(1) Pump voltage(t) [V]

States: initial value

x(1) Upper tank water level(t) [m] xinit@exp1 0 (fix) in [0, Inf]

x(2) Lower tank water level(t) [m] xinit@exp1 0.1 (fix) in [0, Inf]

Output:

y(1) Lower tank water level(t) [m]

Parameters: value standard dev

p1 Upper tank area [m^2] 0.5 0 (fix) in ]0, Inf]

p2 Pump constant [m^3/(s*V)] 0.00488584 0.0259032 (est) in ]0, Inf]

p3 Upper tank outlet area [m^2] 0.0199719 0.0064682 (est) in ]0, Inf]

p4 Grevity constant [m/(s^2)] 9.81 0 (fix) in ]0, Inf]

p5 Lower tank area [m^2] 0.25 0 (fix) in ]0, Inf]

p6 Lower tank outlet area [m^2] 0.0146546 0.0776058 (est) in ]0, Inf]

Name: Two tanks

Status:

Termination condition: Change in cost was less than the specified tolerance.

Number of iterations: 8, Number of function evaluations: 9

Estimated using Solver: ode45; Search: lsqnonlin on time domain data "Two tanks".

Fit to estimation data: 97.35%

FPE: 2.419e-05, MSE: 2.414e-05

More information in model's "Report" property.

Графіки: