pid_sc_tune.m

来自「控制系统计算机辅助设计——MATLAB语言与应用(源代码)」· M 代码 · 共 68 行

M
68
字号
function [Kp,Ti,Td,key,lb]=pid_sc_tune(key1,key2,vars)  
key=0; Kp=[]; Ti=[]; Td=[]; lb=[];
K=vars(1); L=vars(2); T=vars(3); id=vars(4);
switch key1
    case 1
        switch key2
            case 2
                  if L/T<0.1
                      Kp=T/(K*L);Ti=T;
                      key=3;lb=0.1;
                  elseif  L/T>0.5
                      Kp=T/(K*L);Ti=T;
                      key=2;lb=0.5;
                  else 
                      Kp=T/(K*L);Ti=T;
                      key=1;
                   end
             case 3
                 switch id
                     case 1
                        if L/T<0.1
                             Kp=3*T/(5*K*L);Ti=T;
                             key=3;lb=0.1;
                        elseif  L/T>0.5
                             Kp=3*T/(5*K*L);Ti=T;
                             key=2;lb=0.5;
                        else 
                             Kp=3*T/(5*K*L);Ti=T;
                             key=1;
                        end
                    case 2
                        Kp=T/(2*K*L);Ti=T;
                        key=1;
                 end
          end
    case 2
        switch key2
            case 4
                 switch id
                    case 1
                        if L/T<0.1
                          Kp=T/(K*L);Ti=T;Td=0.5*L;
                          key=3;lb=0.1;
                        elseif  L/T>1.5
                          Kp=T/(K*L);Ti=T;Td=0.5*L;
                          key=2;lb=1.5;
                        else 
                          Kp=T/(K*L);Ti=T;Td=0.5*L;
                          key=1;
                        end
                    case 2
                        if L/T<0.1
                          Kp=5*T/(6*K*L);Ti=T;Td=0.5*L;
                          key=3;lb=0.1;
                        elseif  L/T>1.5
                          Kp=5*T/(6*K*L);Ti=T;Td=0.5*L;
                          key=2;lb=1.5;
                        else 
                          Kp=5*T/(6*K*L);Ti=T;Td=0.5*L;
                          key=1;
                        end
                    case 3
                        Kp=T/(2*K*L);Ti=T;Td=0.5*L;
                        key=1;
                end
        end
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?