Смекни!
smekni.com

Исследование нелинейных систем (стр. 5 из 8)

Запишите комплексный передаточный коэффициент линейной части своего варианта Wл(jw), постройте (эскизно) ее ЛАЧХ и ФЧХ, после чего для каждого типа нелинейности приведите совместные характеристики линейной части (АФХ линейной части Wл(jw)) и нелинейности

.

Таблица 3.2 Значения параметров линейной части и нелинейных элементов

Номерварианта 1 2 3 4 5 6 7 8
Wл(р) Wл1 Wл2 Wл3 Wл4 Wл1 Wл2 Wл3 Wл4
Типы НЭ НЭ1,НЭ2 НЭ2,НЭ3 НЭ1,НЭ3 НЭ1,НЭ3 НЭ2,НЭ3 НЭ1,НЭ3 НЭ1,НЭ2 НЭ1,НЭ3
Параметры k 6 5 3 4 15 2 10 8
T1 0.1 0.2 10 0.4 0.5 0.6 9 0.8
T2 0.2 0.4 5 0.8 1.0 1.2 6 1.6
T3 1 - 0.1 - 5 - 0.2 -
b 0.1 0.2 0.25 0.25 0.3 0.35 0.4 0.5
c 1 1.5 2 2.5 3 3.5 4 4.5
Номер варианта 9 10 11 12 13 14 15 16
Wл(р) Wл1 Wл2 Wл3 Wл4 Wл1 Wл2 Wл3 Wл4
Типы НЭ НЭ1,НЭ3 НЭ1,НЭ2 НЭ1,НЭ2 НЭ1,НЭ3 НЭ1,НЭ2 НЭ2,НЭ3 НЭ1,НЭ3 НЭ1,НЭ3
Параметры k 15 10 9 6 7 8 5 7
T1 0.9 1.0 7 0.6 0.2 0.3 9 0.7
T2 1.8 2.0 5 1.2 0.3 0.5 4 1.5
T3 9 - 0.3 - 1.5 - 0.2 -
b 0.5 1.0 0.5 0.35 0.3 0.35 0.35 0.45
c 5 6 5.5 3 2 2.5 3 4

Проведите качественное исследование системы: оцените возможность возникновения периодических режимов и их устойчивость. Там, где это возможно, запишите выражения для критического коэффициента усиления ЛЧ, при котором в нелинейной системе возникают автоколебания.

Изучите текст программы (файл GB_prog.m) и структуру моделей (файлы GB_mod.mdl и R_Fourie.mdl).

Графический расчет параметров периодических режимов c использованием метода гармонического баланса производится по сценарию, записанному в файле GB_prog.m. Моделирование нелинейной системы осуществляется при помощи файлов GB_prog.m и GB_mod.mdl, а анализ спектрального состава периодического режима на выходе линейной части – при помощи файлов GB_prog.m и R_Fourie.mdl.

Cодержание файла GB_prog.m:

%Исследование нелинейных систем методом гармонического баланса

%Используемые файлы: GB_prog.m, GB_mod.mdl и R_Fourie.mdl.

%Используемые обозначениЯ: НЭ – нелинейный элемент, ЛЧ – линейнаЯ часть.

%Очистка всех переменных в памЯти

clear all

%закрытие всех предыдущих рисунков

set(0,'ShowHiddenHandles', 'on')

delete(get(0,'Children'))

%Задание значениЯ переменной, определЯющей положение переключателЯ

%конфигурации нелинейной части в файле GB_mod.mdl

%1 – НЭ-двухпозиционное реле с гистерезисом

%2 – НЭ-трехпозиционное реле без гистерезиса

%3 – НЭ-люфт

config_nlin = 2;

%Задание значениЯ переменной, определЯющей положение переключателЯ

%конфигурации линейной части в файле GB_mod.mdl

%1 – ЛЧ – Wл1 (p)=k/[(T1*p+1) (T2*p+1) (T3p+1)]

%2 – ЛЧ – Wл2 (p)=k/[(T1*p+1) (T2*p+1) p]

%3 – ЛЧ – Wл3 (p)=[k (T1*p+1)]/[(T2*p‑1)^2 (T3*p+1)^2]

%4 – ЛЧ – Wл4 (p)=[k (T1*p+1)]/[(T2*p‑1) p]

config_lin = 2;

k = 5;

T1 = 0.1;

T2 = 0.2;

T3 = 1;

b = 0.1;

c = 1;

%Графический расчет параметров периодических режимов c использованием

%метода гармонического баланса

%описание линейной части

switchconfig_lin

case 1,

%начальное значение, шаг и конечное значение частоты (в рад)

w = [0.02:0.01:100];

%комплексный передаточный коэффициент ЛЧ

W_lin = k./ ((T1*j*w+1).* (T2*j*w+1).*(T3*j*w+1));

%определение значениЯ строковой переменной lin

lin = 'Wл1 (p)';

case 2,

%начальное значение, шаг и конечное значение частоты (в рад)

w = [2:0.01:100];

%комплексный передаточный коэффициент ЛЧ

W_lin = k./ ((T1*j*w+1).* (T2*j*w+1).*(j*w));

%определение значениЯ строковой переменной lin

lin = 'Wл2 (p)';

case 3,

%начальное значение, шаг и конечное значение частоты (в рад)

w = [0.01:0.01:300];

%комплексный передаточный коэффициент ЛЧ

W_lin = (k*(T1*j*w+1))./ ((T2*j*w‑1).^2.*(T3*j*w+1).^2);

%определение значениЯ строковой переменной lin

lin = 'Wл3 (p)';

case 4,

%начальное значение, шаг и конечное значение частоты (в рад)

w = [1:0.01:100];

%комплексный передаточный коэффициент ЛЧ

W_lin = (k*(T1*j*w+1))./ ((T2*j*w‑1).*(j*w));

%определение значениЯ строковой переменной lin

lin = 'Wл4 (p)';

end

%описание ЛЧ как частотной характеристики через W_lin(jw)

SYSL = frd (W_lin, w);

%–

%Описание нелинейной части

switch config_nlin

case 1,

%начальное значение, шаг и конечное значение амплитуды на входе НЭ

A = [b:0.01:3.0];

%коэффициенты гармонической линеаризации

q = 2*c/(pi*b).* ((2*b./A).* sqrt (1 – (b./A).^2));

q1 = -2*c/(pi*b).* 2*(b./A).^2;

%определение значениЯ строковой переменной nlin

nlin = '2‑х поз. реле с гист.';

case 2,

%начальное значение, шаг и конечное значение амплитуды на входе НЭ

A = [b+0.0001:0.005:b*sqrt(2)];

A_ = [b*sqrt(2):0.005:3.0];

%коэффициенты гармонической линеаризации

q = (4*c./ (pi*A)).* sqrt (1 – (b./A).^2);

q1 = 0;

q_ = (4*c./ (pi*A_)).* sqrt (1 – (b./A_).^2);

q1_ = 0;

%эквивалентный комплексный передаточный коэффициент W_nlin(jA) НЭ

W_nlin_ = q_ + j*q1_;

%характеристика -1/W_nlin(jA)

S_ = -1./W_nlin_;

%описание НЭ как амплитудной характеристики через -1/W_nlin(jA)

SYSN_ = frd(S_, A_);

%определение значениЯ строковой переменной nlin

nlin = '3‑х поз. реле без гист.';

case 3,

%начальное значение, шаг и конечное значение амплитуды на входе НЭ

A = [b+0.001:0.01:100];

%коэффициенты гармонической линеаризации

alfa = asin(1–2*b./A);

q = (1/pi)*(pi/2+alfa+0.5*sin (2*alfa));

q1 = – (4*b).* (1‑b./A)./ (pi*A);

%определение значениЯ строковой переменной nlin

nlin = 'люфт';

end

%эквивалентный комплексный передаточный коэффициент W_nlin(jA) НЭ

W_nlin = q + j*q1;

%характеристика -1/W_nlin(jA)

S = -1./W_nlin;

%описание НЭ как амплитудной характеристики через -1/W_nlin(jA)

SYSN = frd(S, A);

%–

%ВизуализациЯ

%Построение W_lin(jw) и -1/W_nlin(jA) при помощи plot (общий вид)

figure(1)

gr_W_lin = plot (real(W_lin), imag (W_lin));

set (gr_W_lin, {'Color'}, {'r'});

hold on

gr_S = plot (real(S), imag(S));

set (gr_S, {'Color'}, {'b'});

title(['Расчетгарм. баланса. НЭ– ', nlin, ', b=', num2str(b), ', c=', num2str(c), '; ЛЧ– ',…

lin, ', k=', num2str(k), ', T1=', num2str(T1), ', T2=', num2str(T2),…

', T3=', num2str(T3)])

xlabel ('re(W lin), re(S)');

ylabel ('im(W lin), im(S)');

legend ('W lin(jw)', 'S(jA)', 0);

grid on

%–

%построение W_lin(jw) и -1/W_nlin(jA) припомощи LTI Viewer

if config_nlin == 2

ltiview({'nyquist'}, SYSL, '-b', SYSN, '-r')

ltiview({'nyquist'}, SYSL, '-b', SYSN_, '-r')

else

ltiview({'nyquist'}, SYSL, '-b', SYSN, '-r')

end

%–

%Завершение графического расчета параметров периодических режимов

%c использованием метода гармонического баланса

%====================================================

%^^^^^^^^^^^^^^Моделирование нелинейной системы (НС)^^^^^^^^^^^^^^^^^^^^^

% с определением параметров автоколебаний

%задание времени моделированиЯ

t_end = 15;

%ограничение шага моделированиЯ сверху

step_max = 0.005;

%задание амплитуды сигнала на выходе ЛЧ в начальный момент времени

y0 = 0.5;

%вызовмодели

open_system ('GB_mod.mdl');

%запуск модели

sim ('GB_mod');

%считывание фактических параметров моделированиЯ

Max_Step_Size = get_param('GB_mod', 'MaxStep');

Stop_Time = get_param ('GB_mod', 'StopTime');

%извлечение последнего элемента из векторов vec_period и vec_amp

%(определение установившихсЯ значений периода и амплитуды автоколебаний

%с использованием данных, записанных в рабочую область памЯти)

clc % очисткакомандногоокна

period = vec_period (length(vec_period));

clear vec_period;

amp_kol = vec_amp (length(vec_amp))%выводвкомандноеокно

clearvec_amp;

%расчет частоты сигнала на выходе ЛЧ (используетсЯ длЯ последующего

%расчета амплитуды гармоник)

frequency = 1/period;

w_kol = 2*pi*frequency%вывод в командное окно

%Построение процесса во времени на выходе ЛЧ

figure(2)

gr = plot (t_and_y(:, 1), t_and_y(:, 2));

set (gr, {'Color'}, {'r'});

title(['Процесс y(t). НЭ– ', nlin, ', b=', num2str(b), ', c=', num2str(c), '; ЛЧ– ',…

lin, ', k=', num2str(k), ', T1=', num2str(T1), ', T2=', num2str(T2),…

', T3=', num2str(T3), ', y0=', num2str(y0)])

xlabel(['t, cекАмп.кол.=', num2str (amp_kol), ', Wкол=', num2str (w_kol), 'c^-1']);

ylabel('y');

gridon

%–

%закрытие модели

%close_system ('GB_mod', 1)

%=====================================================

%^^^^^^^^^^^^^^^^Анализ спектра автоколебательного процесса^^^^^^^^^^^^^^

%вызов программы, определЯющей амплитуды гармоник сигнала на выходе ЛЧ

open_system ('R_Fourie.mdl');

%транслЯциЯ параметров моделированиЯ НС 'GB_mod.mdl' в файл R_Fourie.mdl

set_param ('R_Fourie', 'MaxStep', Max_Step_Size);

set_param ('R_Fourie', 'StopTime', Stop_Time);

%запуск программы, вычислЯющей амплитуды гармоник

sim('R_Fourie');

%закрытие программы

%close_system ('R_Fourie', 1)

%извлечение последнего элемента из каждого вектора, содержащего амплитуды

%гармоник (определение установившихсЯ значений амплитуд гармоник с

%использованием данных, записанных в рабочую область памЯти)

magn_0=vec_magn_0 (length(vec_magn_0));

clear vec_magn_0;

magn_1=vec_magn_1 (length(vec_magn_1));

clear vec_magn_1;

magn_2=vec_magn_2 (length(vec_magn_2));

clear vec_magn_2;

magn_3=vec_magn_3 (length(vec_magn_3));

clear vec_magn_3;

magn_4=vec_magn_4 (length(vec_magn_4));

clear vec_magn_4;

magn_5=vec_magn_5 (length(vec_magn_5));