📄 pid_derinimas_itae.m
字号:
function main
clc
clear
%--- Simulinke modeliuojame objekto reakcijos i vienetini suoli kreive
sim('obj_3')
get_indexes = 1:10:1200;
sim_char = out_per(get_indexes);
sim_t = tout(get_indexes);
plot(sim_t,sim_char)
%--- Prideriname modelio reakcijos kreive prie proceso reakcijos kreives
%--- tasku. Gauname pirmos eiles perdavimo funkcija su velavimu.
k_a=0.4;
min_err=inf;
T_a_min_err = inf;
tau_a_min_err = inf;
t = sim_t;
for T_a=10:0.01:20
for tau_a = 0:0.01:20
calc_char = calc_perein_char(t,k_a,T_a,tau_a);
err = sum((sim_char-calc_char).^2);
if err < min_err
min_err = err;
T_a_min_err = T_a;
tau_a_min_err = tau_a;
end
end
end
calc_char = calc_perein_char(t, k_a, T_a_min_err, tau_a_min_err);
plot(t, sim_char,'-', t, calc_char,'*')
disp('%--- Objekto parametrai');
K_obj = k_a
tau_obj = tau_a_min_err
T_obj = T_a_min_err
disp('%--- Derinimo formules ITAE kriterijui');
disp('%--- PID, Reakcijos tipas - Nuostatas');
K_r = 0.965/K_obj*(T_obj/tau_obj)^0.855
T_i = T_obj/(0.796-0.147*(tau_obj/T_obj))
T_d = 0.308*T_obj*(tau_obj/T_obj)^0.929
disp('%--- Derinimo formules ITAE kriterijui');
disp('%--- PID, Reakcijos tipas - Trikdys');
K_r = 1.357/K_obj*(T_obj/tau_obj)^0.947
T_i = T_obj/0.842*(tau_obj/T_obj)^0.738
T_d = 0.381*T_obj*(tau_obj/T_obj)^0.995
disp('%--- Derinimo formules ITAE kriterijui');
disp('%--- PI, Reakcijos tipas - Nuostatas');
K_r = 0.586/K_obj*(T_obj/tau_obj)^0.916
T_i = T_obj/(1.03-0.165*(tau_obj/T_obj))
disp('%--- Derinimo formules ITAE kriterijui');
disp('%--- PI, Reakcijos tipas - Trikdys');
K_r = 0.859/K_obj*(T_obj/tau_obj)^0.977
T_i = T_obj/0.674*(tau_obj/T_obj)^0.68
function h = calc_perein_char(t,k_a,T_a,tau_a)
h = k_a * (1-exp(-(t-tau_a)/T_a)) .* (t > tau_a);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -