- •1. Задание:
- •2. Параметры системы:
- •3. Выполнение работы:
- •1. Исследование устойчивости разомкнутой и замкнутой системы
- •2. Построение областей устойчивости в плоскости параметров Kp и Tp
- •3. Построение линий равной степени устойчивости в плоскости параметров Kp и Tp
- •6. Моделирование нелинейной системы второго порядка в Simulink.
- •7. Исследование автоколебаний в системе при включении на входе регулятора нелинейного звена
- •4. Выводы:
4. Выводы:
Аналитическими методами было выяснено, что разомкнутая система устойчива, а замкнутая неустойчива. Границы области устойчивости были построены с помощью программы DCOM, осуществляющей D-разбиение. Построение линий равной степени устойчивости производилось в программе RTANALTI. Убедились, что области устойчивости о обоих случаях совпали, а значения линий равной степени устойчивости становились меньше при приближении к границе.
На полученных графиках были выбраны точки, для которых анализировались переходные процессы и рассчитывались их характеристики. Для оптимальных параметров переходный процесс имеет апериодический характер без перерегулирования.
С помощью аналитических методов были оценены характеристики и построены фазовый портрет нелинейной системы и примерный вид переходных процессов в ней.
Данная система была промоделирована в пакете Simulink, в результате чего были получены рассчитанные значения фазовых портретов и переходных процессов. Результаты оказались близкими к рассчитанным аналитическим способом. Было исследовано поведение системы при введении в ее состав обратной связи по скорости. На основании полученных результатов можно сделать вывод, что обратная связь по скорости в данном случае дает улучшение качества процесса – снижает колебательность, благодаря чему переходные процессы происходят без перерегулирования и с большим быстродействием.
Было исследовано возникновение автоколебаний в системе. На основании полученных данных был сделан вывод о том, что данной системе необходимо начальное возбуждение небольшой амплитуды, чтобы в ней возникли незатухающие колебания.
Приложение 1. Программа построения АФЧХ и ЛФХ.
% lax.m
function lax
K0 = 100;
T1 = 1;
T2 = 4;
Kp = 2;
Tp = 0.2;
num = [K0*Kp*Tp Kp*K0];
den = [T1*T2 T1+T1*T2+T2 T1+T2+1 1];
sys = tf(num, den);
figure(2)
nyquist(sys)
title('АФЧХ для схемы 1')
grid on
figure(3)
asymp(sys)
title('ЛАХ и ЛФХ для схемы 1')
Приложение 2. Программа кривой Михайлова.
% кривая Михайлова
K0 = 100;
T1 = 1;
T2 = 4;
Kp = 2;
Tp = 0.2;
% разомкнутая система
num=[T1 T1+T1*T2+T2 T1+T2+1 1];
den=[1];
w=0:0.01:3;
apk=freqs(num,den,w);
u=real(apk);
v=imag(apk);
plot(u,v)
xlabel('Re')
ylabel('Im')
grid on
hold on
% замкнутая система
figure(2)
num=[T1 2*T1+T2 T1+T2+1+K0*Kp*Tp 1+K0*Kp];
den=[1];
w=0:0.01:3;
apk=freqs(num,den,w);
u=real(apk);
v=imag(apk);
plot(u,v)
xlabel('Re')
ylabel('Im')
grid on
hold on
Приложение 3. Содержимое файла data_k.m:
function [R, Q, area] = DATA(a)
% a(a1, a2) - вектор варьируемых параметров системы
% R, Q - числитель и знаменатель передаточной функции
% Задание области вариации параметров a1,a2. Формат: [минимум, шаг, максимум]
area = [ 0 0.01 1; 0 0.001 0.2 ];
% Варьируемые параметры можно переобозначить
k=a(1);
T=a(2);
% Задание коэффициентов числителя и знаменателя п.ф., зависящих от параметров
% Записываются по убыванию степеней
R = [100*k*T, 100*k]; % Числитель передаточной функции
Q = [4, 9, 9+100*k*T, 1+100*k]; % Характеристический полином
Приложение 4. Matlab, Листинг. Программа построения фазовых траекторий и передаточных характеристик в среде.
% function_ode.m
function dXdt = fun_ode(t, X)
global T01;
global T02;
global K0;
x = X(1);
y = X(2);
dXdt(1) = y;
dXdt(2) = ( K0*Saturation( x ) - x - (T01+T02)*y )/(T01*T02);
dXdt = dXdt(:);
end
% main.m
global T01;
global T02;
global K0;
T01 = 2; T02 = 6; K0 = 10; Kos = 0.5;
t0 = 0; tf = 15;
figure(1)
X0 = [1; 1];
[t, X] = ode45('fun_ode', [t0 tf] , X0);
plot(X(:, 1), X(:, 2));
hold on
X0 = [-1; -1];
[t, X] = ode45('fun_ode', [t0 tf] , X0);
plot(X(:, 1), X(:, 2));
figure(2)
plot(t, X(:, 1));
% saturation.m
function z = Saturation( x )
x = -x;
if( x < -1 )
z = -2;
elseif( x > 1 )
z = 2;
else
z = 2*x;
end;
end
