⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calcul_pidanalogique.m

📁 This simple program help you to calculate parameters for a pid controller for first order systems wi
💻 M
📖 第 1 页 / 共 3 页
字号:
         %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 + -