Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.практ..doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
5 Мб
Скачать
☆
  1. Определение параметров колебательного звена по частотным характеристикам

disp('Лабораторная работа №2')

clear all;

close all;

disp('Определение параметров коллебательного звена по частотным характеристикам ')

for i = 1:100

%вводим начальные данные

R = input('enter resistance, kOm: R = ');

L = input('enter inductance, Gn: L = ');

C = input('enter capacity, mkF: C = ');

%считаем постоянную времени и показатель коллебательности

T=(L*C*0.001)^1/2;

ksi=R*1000/2*(C*0.001/L)^1/2;

%передаточная функция

W = tf([1],[T^2 2*T*ksi 1])

%открываем файл в Simulink

open kolleb.mdl

%строим АФХ

figure(1);

nyquist(W);

grid on;

hold all;

title('АФХ коллебательных звеньев с разными постоянными времени');

%выводим легенду

r(i,1) = R;

c(i,1) = C;

l(i,1) = L;

L1(i,:)=['R ='];

L2(i,:)=['C ='];

L3(i,:)=['L ='];

Legen = [L1, num2str(r),repmat(';', size(L1,1), 1),L2, num2str(c),repmat(';', size(L1,1), 1),L3, num2str(l)];

legend(Legen);

%строим ЛАЧХ и ФЧХ

figure(2);

bodeplot(W);

grid on;

hold all;

title('ЛАЧХ и ФЧХ коллебательных звеньев с разными постоянными времени');

%выводим легенду

r(i,1) = R;

c(i,1) = C;

l(i,1) = L;

L1(i,:)=['R ='];

L2(i,:)=['C ='];

L3(i,:)=['L ='];

Legen = [L1, num2str(r),repmat(';', size(L1,1), 1),L2, num2str(c),repmat(';', size(L1,1), 1),L3, num2str(l)];

legend(Legen);

%запрос о продолжении

k = input('Хотите продолжить? Y/N:', 's');

if (k == 'n') || (k == 'N'), break; end;

end

ПРИЛОЖЕНИЕ 3

ИСЛЕДОВАНИЕ УСТОЙЧИВОСТИИ КАЧЕСТВА ЛИНЕЙНОЙ СИСТЕМЫ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ

clear all; % очищаем рабочую область

close all;

clc; % очищаем командное окно

% Задаем постоянные времени объекта управления

T1=1;

T2=1;

g0 = 0.5; % амплитуда ступеньки

kp = 1; % пропорциональный коэффициент

%% 1. Собранная схема САУ

open Regs;

%% Данные для регуляторов

%% Для П–регулятора:

% kp =0,05-1; ku=0; k0=10

%% Для И–регулятора

% kp =1; ku=0.05-10; k0=1

%% Для ПИ–регулятора

% kp =1; ku=0.05-10; k0=1

% Передаточная функция объекта управления без коэффициента усиления

Wob = tf(1,[T1 1])*tf(1,[T2 1]);

%% 2. Рассчитать область возможных значений суммарного коэффициента передачи

% интегрирующего блока ku=Tu^(-1)

% для ПИ–регулятора:

k0 = 1;

Tu1 = k0*T1*T2/(T1+T2)/(1+kp*k0);

ki1 = 1/Tu1;

disp(['Для ПИ–регулятора область возможных значений Kи_sum < ', num2str(ki1)]);

% для И–регулятора:

Tu2 = k0*T1*T2/(T1+T2);

ki2 = 1/Tu2;

disp(['Для И–регулятора область возможных значений Kи_sum < ', num2str(ki2)]);

%% 3. Для САУ с П–регулятором рассчитать установившуюся ошибку и построить

% график e=f(kp)

cp = 0.05:0.05:1;

Kp = cp*kp;

k01 = 10; % Для П–регулятора

Eust = g0./(1+Kp*k01); % Расчет установившейся ошибки

figure

plot(Kp,Eust,'-o');

grid; xlim([Kp(1) Kp(end)]);

title('Установившаяся ошибка системы с П–регулятором при входной ступеньке g_0=0.5');

xlabel('\fontsize{10} Kp_\Sigma'); ylabel('\fontsize{16} е_у_с_т');

Kp = [0.05,0.5,1];

Wp = k01*Wob*Kp; % Передаточные функции разомкнутой системы

% Передаточные функции замкнутой системы

WPloop1 = feedback(Wp(1),1);

WPloop2 = feedback(Wp(2),1);

WPloop3 = feedback(Wp(3),1);

figure

step(WPloop1);

title('Переходной процесс системы с П–регулятором');

grid;

hold on

step(WPloop2); step(WPloop3);

legend(['Kп_\Sigma = ', num2str(Kp(1))],['Kп_\Sigma = ', num2str(Kp(2))],...

['Kп_\Sigma = ', num2str(Kp(3))]);

hold off

%% 4. Для САУ с И– и ПИ–регуляторами пронаблюдать величину установившейся ошибки

% Для САУ с ПИ–регулятором построим переходные процессы для трех

% коэффициентов ku

wpi1 = tf([kp ki1],[1 0]);

wpi2 = tf([kp ki1-1],[1 0]);

wpi3 = tf([kp ki1-2],[1 0]);

Wpi1 = wpi1*k0*Wob;

Wpi2 = wpi2*k0*Wob;

Wpi3 = wpi3*k0*Wob;

WPIloop1 = feedback(Wpi1,1);

WPIloop2 = feedback(Wpi2,1);

WPIloop3 = feedback(Wpi3,1);

figure

stepplot(WPIloop1);

hold on

stepplot(WPIloop2);

stepplot(WPIloop3);

grid;

title('Переходной процесс системы с ПИ–регулятором');

legend(['Kи_\Sigma = ', num2str(ki1)],['Kи_\Sigma = ', num2str(ki1-1)],...

['Kи_\Sigma = ', num2str(ki1-2)]);

hold off

% Для САУ с И–регулятором построим переходные процессы для трех

% коэффициентов ku

wi1 = tf(ki2,[1 0]);

wi2 = tf(ki2-1,[1 0]);

wi3 = tf(ki2-1.5,[1 0]);

Wi1 = wi1*k0*Wob;

Wi2 = wi2*k0*Wob;

Wi3 = wi3*k0*Wob;

WIloop1 = feedback(Wi1,1);

WIloop2 = feedback(Wi2,1);

WIloop3 = feedback(Wi3,1);

figure

stepplot(WIloop1);

hold on

stepplot(WIloop2);

stepplot(WIloop3);

grid;

title('Переходной процесс системы с И–регулятором');

legend(['Kи_\Sigma = ', num2str(ki2)],['Kи_\Sigma = ', num2str(ki2-1)],...

['Kи_\Sigma = ', num2str(ki2-1.5)]);

hold off

%% 5.Для САУ с И– и ПИ–регуляторами построить перходные характеристики и

% проверить выполнение условий устойчивости

% см. п.4

%% 6. Рассчитать оптимальные значения ku для И– и ПИ–регуляторов

% для ПИ–регулятора:

ku_opt1=2*(1+kp*k0)/kp/T1/(3+kp*k0);

disp('Оптимальное значение суммарного коэффициента передачи интегрирующего блока');

disp( ['для ПИ–регулятора kи_опт = ', num2str(ku_opt1)]);

wpi = tf([kp ku_opt1],[1 0]);

Wpi = wpi*k0*Wob;

WPIloop = feedback(Wpi,1);

% для И–регулятора:

ku_opt2=0.67/k0*T1;

disp( ['для И–регулятора kи_опт = ', num2str(ku_opt2)]);

wi = tf([kp ku_opt2],[1 0]);

Wi = wi*k0*Wob;

WIloop = feedback(Wi,1);

figure

step(WPIloop);

hold on

step(WIloop);

title('Переходной процесс системы с оптимальным значением kи_\Sigma');

grid; legend('ПИ–регулятор','И–регулятор');

%% 7.Построить график J0 от ku/kuопт

ki = 0.05:0.05:10;

Ti = 1./ki;

% Для ПИ–регулятора

J1 = Ti.*(2*Ti+(3+kp*k0)*k0*T1)/2/k0./(2*Ti*(1+kp*k0)-k0*T1);

% Для И–регулятора

J2 = Ti.*(2*Ti+3*k0*T1)/2/k0./(2*Ti-k0*T1);

figure

subplot(1,2,1)

plot(ki./ku_opt1, J1,'-d');

grid;

title('Интегральная оценка САУ с ПИ–регулятором');

xlabel('k_и_\Sigma/k_и_\Sigma_о_п_т '); ylabel('J_0');

subplot(1,2,2)

plot(ki./ku_opt2, J2,'-d');

grid;

title('Интегральная оценка САУ с И–регулятором');

xlabel('k_и_\Sigma/k_и_\Sigma_о_п_т '); ylabel('J_0');

%% 8. Построить переходные характеристики и определить перерегулирование при

%ku=0.2kuопт, ku=kuопт, ku=2kuопт

%Для ПИ–регулятора

kpu1 = 0.2*ku_opt1;

kpu2 = ku_opt1;

kpu3 = 2*ku_opt1;

wpi1 = tf([kp kpu1],[1 0]);

wpi2 = tf([kp kpu2],[1 0]);

wpi3 = tf([kp kpu3],[1 0]);

Wpi1 = wpi1*k0*Wob;

Wpi2 = wpi2*k0*Wob;

Wpi3 = wpi3*k0*Wob;

WPIloop1 = feedback(Wpi1,1);

WPIloop2 = feedback(Wpi2,1);

WPIloop3 = feedback(Wpi3,1);

disp('Показатели качества переходного процесса системы с ПИ–регулятором:');

[ypi1 tpi1] = step(WPIloop1,200);

SigmaPI1 = (max(ypi1)-dcgain(WPIloop1))/dcgain(WPIloop1)*100;

TrPI1 = tpi1((ypi1>=1.05*dcgain(WPIloop1))|(ypi1<=0.95*dcgain(WPIloop1)));

Tpi1 = TrPI1(end);

disp(['Для Kи_sum = 0.2*kи_o_п_т = ', num2str(0.2*ku_opt1)]);

disp(['Перерегулирование sigma = ', num2str(SigmaPI1),'%']);

disp(['Время переходного процесса Tr = ', num2str(Tpi1),'c']);

[ypi2 tpi2] = step(WPIloop2,100);

SigmaPI2 = (max(ypi2)-dcgain(WPIloop2))/dcgain(WPIloop2)*100;

TrPI2 = tpi2((ypi2>=1.05*dcgain(WPIloop2))|(ypi2<=0.95*dcgain(WPIloop2)));

Tpi2 = TrPI2(end);

disp(['Для Kи_sum = kи_o_п_т = ', num2str(ku_opt1)]);

disp(['Перерегулирование sigma = ', num2str(SigmaPI2),'%']);

disp(['Время переходного процесса Tr = ', num2str(Tpi2),'c']);

[ypi3 tpi3] = step(WPIloop3,100);

SigmaPI3 = (max(ypi3)-dcgain(WPIloop3))/dcgain(WPIloop3)*100;

TrPI3 = tpi3((ypi3>=1.05*dcgain(WPIloop3))|(ypi3<=0.95*dcgain(WPIloop3)));

Tpi3 = TrPI3(end);

disp(['Для Kи_sum = 2*kи_o_п_т = ', num2str(2*ku_opt1)]);

disp(['Перерегулирование sigma = ', num2str(SigmaPI3),'%']);

disp(['Время переходного процесса Tr = ', num2str(Tpi3),'c']);

figure

subplot(1,2,1)

stepplot(WPIloop1);

hold on

stepplot(WPIloop2);

stepplot(WPIloop3);

grid;

title('Переходной процесс системы с ПИ–регулятором');

legend(['Kи_\Sigma = 0.2*kи_o_п_т = ', num2str(0.2*ku_opt1)],...

['Kи_\Sigma = kи_o_п_т = ', num2str(ku_opt1)],...

['Kи_\Sigma = 2*kи_o_п_т = ', num2str(2*ku_opt1)]);

hold off

% Для И–регулятора

ku1 = 0.2*ku_opt2;

ku2 = ku_opt2;

ku3 = 2*ku_opt2;

wi1 = tf([kp ku1],[1 0]);

wi2 = tf([kp ku2],[1 0]);

wi3 = tf([kp ku3],[1 0]);

Wi1 = wi1*k0*Wob;

Wi2 = wi2*k0*Wob;

Wi3 = wi3*k0*Wob;

WIloop1 = feedback(Wi1,1);

WIloop2 = feedback(Wi2,1);

WIloop3 = feedback(Wi3,1);

disp('Показатели качества переходного процесса системы с И–регулятором:');

[yi1 ti1] = step(WIloop1,250);

SigmaI1 = (max(yi1)-dcgain(WIloop1))/dcgain(WIloop1)*100;

TrI1 = ti1((yi1>=1.05*dcgain(WIloop1))|(yi1<=0.95*dcgain(WIloop1)));

Ti1 = TrI1(end);

disp(['Для Kи_sum = 0.2*kи_o_п_т = ', num2str(0.2*ku_opt2)]);

disp(['Перерегулирование sigma = ', num2str(SigmaI1),'%']);

disp(['Время переходного процесса Tr = ', num2str(Ti1),'c']);

[yi2 ti2] = step(WIloop2,100);

SigmaI2 = (max(yi2)-dcgain(WIloop2))/dcgain(WIloop2)*100;

TrI2 = ti2((yi2>=1.05*dcgain(WIloop2))|(yi2<=0.95*dcgain(WIloop2)));

Ti2 = TrI2(end);

disp(['Для Kи_sum = kи_o_п_т = ', num2str(ku_opt2)]);

disp(['Перерегулирование sigma = ', num2str(SigmaI2),'%']);

disp(['Время переходного процесса Tr = ', num2str(Ti2),'c']);

[yi3 ti3] = step(WIloop3,100);

SigmaI3 = (max(yi3)-dcgain(WIloop3))/dcgain(WIloop3)*100;

TrI3 = ti3((yi3>=1.05*dcgain(WIloop3))|(yi3<=0.95*dcgain(WIloop3)));

Ti3 = TrI3(end);

disp(['Для Kи_sum = 2*kи_o_п_т = ', num2str(2*ku_opt2)]);

disp(['Перерегулирование sigma = ', num2str(SigmaI3),'%']);

disp(['Время переходного процесса Tr = ', num2str(Ti3),'c']);

subplot(1,2,2)

stepplot(WIloop1);

hold on

stepplot(WIloop2);

stepplot(WIloop3);

grid;

title('Переходной процесс системы с И–регулятором');

legend(['Kи_\Sigma = 0.2*kи_o_п_т = ', num2str(0.2*ku_opt2)],...

['Kи_\Sigma = kи_o_п_т = ', num2str(ku_opt2)],...

['Kи_\Sigma = 2*kи_o_п_т = ', num2str(2*ku_opt2)]);

hold off

42

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]