📄 calcul_pidanalogique.m
字号:
%b
Regulation(2).ise = -0.9308;
Regulation(2).iae = -0.8826;
Regulation(2).itae = -0.7937;
%c
Regulation(3).ise = 1.6585;
Regulation(3).iae = 1.2587;
Regulation(3).itae = 1.12499;
%d
Regulation(4).ise = -1.25738;
Regulation(4).iae = -1.3756;
Regulation(4).itae = -1.42609;
%e
Regulation(5).ise = 0.79715;
Regulation(5).iae = 0.5655;
Regulation(5).itae = 0.49547;
%f
Regulation(6).ise = 0.41941;
Regulation(6).iae = 0.476;
Regulation(6).itae = 0.41932;
if get(handles.ise, 'Value')
%ise
kp_reg = Regulation(1).ise*((data.theta/data.t)^Regulation(2).ise)/data.k;
Ti_reg = kp_reg*data.t/(Regulation(3).ise*(data.theta/data.t)^Regulation(4).ise);
Td_reg = (data.t/kp_reg)*Regulation(5).ise*(data.theta/data.t)^Regulation(6).ise;
set(handles.kc, 'String', kp_reg);
set(handles.ti, 'String', Ti_reg);
set(handles.td, 'String', Td_reg);
elseif get(handles.iae, 'Value')
%iae
kp_reg = Regulation(1).iae*((data.theta/data.t)^Regulation(2).iae)/data.k;
Ti_reg = kp_reg*data.t/(Regulation(3).iae*(data.theta/data.t)^Regulation(4).iae);
Td_reg = (data.t/kp_reg)*Regulation(5).iae*(data.theta/data.t)^Regulation(6).iae;
set(handles.kc, 'String', kp_reg);
set(handles.ti, 'String', Ti_reg);
set(handles.td, 'String', Td_reg);
elseif get(handles.itae, 'Value')
%itae
kp_reg = Regulation(1).itae*((data.theta/data.t)^Regulation(2).itae)/data.k;
Ti_reg = kp_reg*data.t/(Regulation(3).itae*(data.theta/data.t)^Regulation(4).itae);
Td_reg = (data.t/kp_reg)*Regulation(5).itae*(data.theta/data.t)^Regulation(6).itae;
set(handles.kc, 'String', kp_reg);
set(handles.ti, 'String', Ti_reg);
set(handles.td, 'String', Td_reg);
end
end
end
%*******************************
%**IMC
%**************
if get(handles.imc, 'Value')
kp_imc = (data.t+data.theta/2)/(data.k*data.tc+data.k*data.theta/2);
Ti_imc = data.t+data.theta/2;
Td_imc = data.theta*data.t/(2*data.t+data.theta);
set(handles.kc, 'String', kp_imc);
set(handles.ti, 'String', Ti_imc);
set(handles.td, 'String', Td_imc);
end
if (get(handles.pid1, 'Value') | get(handles.pid2, 'Value'))
sys = tf(data.k,[data.t 1]);
sys.inputd = data.theta;
sysz = c2d(sys,data.te,'zoh');
[B,A] = tfdata(sysz,'z^-1');
H_d = tf(1,[1/data.w0^2 2*data.xi/data.w0^2 1]);
H_d.inputd = data.theta;;% 2 sec input delay
H_dz = c2d(H_d,data.te,'zoh');
set(H_dz,'variable','z^-1');
[N,P] = tfdata(H_dz,'z^-1');
D = (A(2)-1)*B(2)*B(3)^2-B(3)^3-(A(3)-A(2))*B(2)^2*B(3)-A(3)*B(2)^3;
r0 = ((P(2)*(A(2)-1)-P(3)+A(2)-1-A(2)^2+A(3))*B(3)^2+A(3)*(A(2)-1-P(2))*B(2)^2+(P(2)*(A(2)-A(3))+A(2)-A(2)^2+A(2)*A(3))*B(2)*B(3))/D;
r1 = (P(3)*(A(2)-A(3))+P(2)*A(3)+(A(2)-A(3))^2)*B(2)*B(3)/D;
r2 = (B(2)*B(3)*A(3)*(A(2)+P(3)-A(2))+A(3)*B(2)^2*(A(2)-P(2)-1)-(A(3)*B(1))^2)/D;
s1 = ((P(3)+A(2)-A(3))*B(1)*B(2)^2-(1+P(2)-A(2))*B(2)^3+A(3)*B(1)*B(2))/D;
if get(handles.pid1, 'Value')
k_pid = (r0*s1-r1-(2+s1)*r2)/(1+s1)^2;
Ti_pid = data.te*data.k*(1+s1)/(r0+r1+r2);
Td_pid = data.te*(s1^2*r0-s1*r1+r2)/(data.k*(1+s1)^3);
tdn1 = -s1*data.te/(1+s1);
elseif get(handles.pid2, 'Value')
k_pid = -(r1+2*r2)/(1+s1);
Ti_pid = -data.te*(r1+2*r2)/(r1+r0+r2);
Td_pid= data.te*(s1*r1+(s1-1)*r2)/((r1+2*r2)*(1+s1));
tdn2 = -s1*data.te/(1+s1);
end
set(handles.kc, 'String', k_pid);
set(handles.ti, 'String', Ti_pid);
set(handles.td, 'String', Td_pid);
end
% --- Executes on button press in ziegler.function ziegler_Callback(hObject, eventdata, handles)% hObject handle to ziegler (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of zieglerset(handles.ziegler, 'Value', 1);
set(handles.cohen, 'Value', 0);
set(handles.reglab, 'Value', 0);
set(handles.optim, 'Value', 0);
set(handles.imc, 'Value', 0);
set(handles.pid1, 'Value', 0);
set(handles.pid2, 'Value', 0);
set(handles.itae, 'visible','off');
set(handles.iae, 'visible','off');
set(handles.ise, 'visible','off');
set(handles.cadreop1, 'visible','off');
set(handles.cadreop2, 'visible','off');
set(handles.cadreop3, 'visible','off');
set(handles.mode, 'visible','off');
set(handles.critere, 'visible','off');
set(handles.opt, 'visible','off');
set(handles.regu, 'visible','off');
set(handles.ass, 'visible','off');
set(handles.tc, 'visible','off');
set(handles.filtre, 'visible','off');
set(handles.cpd, 'visible','off');
set(handles.txi, 'visible','off');
set(handles.tw0, 'visible','off');
set(handles.xi, 'visible','off');
set(handles.w0, 'visible','off');
set(handles.tte, 'visible','off');
set(handles.te, 'visible','off');
set(handles.tpd, 'visible','off');
% --- Executes on button press in cohen.function cohen_Callback(hObject, eventdata, handles)% hObject handle to cohen (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of cohenset(handles.ziegler, 'Value', 0);
set(handles.cohen, 'Value', 1);
set(handles.reglab, 'Value', 0);
set(handles.optim, 'Value', 0);
set(handles.imc, 'Value', 0);
set(handles.pid1, 'Value', 0);
set(handles.pid2, 'Value', 0);
set(handles.itae, 'visible','off');
set(handles.iae, 'visible','off');
set(handles.ise, 'visible','off');
set(handles.cadreop1, 'visible','off');
set(handles.cadreop2, 'visible','off');
set(handles.cadreop3, 'visible','off');
set(handles.mode, 'visible','off');
set(handles.critere, 'visible','off');
set(handles.opt, 'visible','off');
set(handles.regu, 'visible','off');
set(handles.ass, 'visible','off');
set(handles.tc, 'visible','off');
set(handles.filtre, 'visible','off');
set(handles.cpd, 'visible','off');
set(handles.txi, 'visible','off');
set(handles.tw0, 'visible','off');
set(handles.xi, 'visible','off');
set(handles.w0, 'visible','off');
set(handles.tte, 'visible','off');
set(handles.te, 'visible','off');
set(handles.tpd, 'visible','off');
% --- Executes on button press in reglab.function reglab_Callback(hObject, eventdata, handles)% hObject handle to reglab (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of reglab set(handles.itae, 'visible','off');
set(handles.iae, 'visible','off');
set(handles.ise, 'visible','off');
set(handles.cadreop1, 'visible','off');
set(handles.cadreop2, 'visible','off');
set(handles.cadreop3, 'visible','off');
set(handles.mode, 'visible','off');
set(handles.critere, 'visible','off');
set(handles.opt, 'visible','off');
set(handles.regu, 'visible','off');
set(handles.ass, 'visible','off');
set(handles.ziegler, 'Value', 0);
set(handles.tc, 'visible','off');
set(handles.filtre, 'visible','off');
set(handles.cohen, 'Value', 0);
set(handles.reglab, 'Value', 1);
set(handles.optim, 'Value', 0);
set(handles.imc, 'Value', 0);
set(handles.pid1, 'Value', 0);
set(handles.pid2, 'Value', 0);
set(handles.cpd, 'visible','off');
set(handles.txi, 'visible','off');
set(handles.tw0, 'visible','off');
set(handles.xi, 'visible','off');
set(handles.w0, 'visible','off');
set(handles.tte, 'visible','off');
set(handles.te, 'visible','off');
set(handles.tpd, 'visible','off');
% --- Executes on button press in optim.function optim_Callback(hObject, eventdata, handles)% hObject handle to optim (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of optim set(handles.ziegler, 'Value', 0);
set(handles.cohen, 'Value', 0);
set(handles.reglab, 'Value', 0);
set(handles.optim, 'Value', 1);
set(handles.imc, 'Value', 0);
set(handles.pid1, 'Value', 0);
set(handles.pid2, 'Value', 0);
set(handles.itae, 'visible','on');
set(handles.iae, 'visible','on');
set(handles.ise, 'visible','on');
set(handles.cadreop1, 'visible','on');
set(handles.cadreop2, 'visible','on');
set(handles.cadreop3, 'visible','on');
set(handles.mode, 'visible','on');
set(handles.critere, 'visible','on');
set(handles.opt, 'visible','on');
set(handles.regu, 'visible','on');
set(handles.ass, 'visible','on');
set(handles.tc, 'visible','off');
set(handles.filtre, 'visible','off');
set(handles.cpd, 'visible','off');
set(handles.txi, 'visible','off');
set(handles.tw0, 'visible','off');
set(handles.xi, 'visible','off');
set(handles.w0, 'visible','off');
set(handles.tte, 'visible','off');
set(handles.te, 'visible','off');
set(handles.tpd, 'visible','off');
% --- Executes on button press in imc.function imc_Callback(hObject, eventdata, handles)% hObject handle to imc (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of imcset(handles.ziegler, 'Value', 0);
set(handles.cohen, 'Value', 0);
set(handles.reglab, 'Value', 0);
set(handles.optim, 'Value', 0);
set(handles.imc, 'Value', 1);
set(handles.pid1, 'Value', 0);
set(handles.pid2, 'Value', 0);
set(handles.itae, 'visible','off');
set(handles.iae, 'visible','off');
set(handles.ise, 'visible','off');
set(handles.cadreop1, 'visible','off');
set(handles.cadreop2, 'visible','off');
set(handles.cadreop3, 'visible','off');
set(handles.mode, 'visible','off');
set(handles.critere, 'visible','off');
set(handles.opt, 'visible','off');
set(handles.regu, 'visible','off');
set(handles.ass, 'visible','off');
set(handles.tc, 'visible','on');
set(handles.filtre, 'visible','on');
set(handles.cpd, 'visible','off');
set(handles.txi, 'visible','off');
set(handles.tw0, 'visible','off');
set(handles.xi, 'visible','off');
set(handles.w0, 'visible','off');
set(handles.tte, 'visible','off');
set(handles.te, 'visible','off');
set(handles.tpd, 'visible','off');
% --- Executes on button press in ass.function ass_Callback(hObject, eventdata, handles)% hObject handle to ass (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.ass, 'Value', 1);
set(handles.regu, 'Value', 0);% Hint: get(hObject,'Value') returns toggle state of ass% --- Executes on button press in regu.function regu_Callback(hObject, eventdata, handles)% hObject handle to regu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.ass, 'Value', 0);
set(handles.regu, 'Value', 1);
% Hint: get(hObject,'Value') returns toggle state of regu% --- Executes on button press in ise.function ise_Callback(hObject, eventdata, handles)% hObject handle to ise (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of iseset(handles.ise, 'Value',1);
set(handles.iae, 'Value', 0);
set(handles.itae, 'Value', 0);% --- Executes on button press in iae.function iae_Callback(hObject, eventdata, handles)% hObject handle to iae (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -