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

📄 pid_za_tune.m

📁 很优良的PID控制器设计仿真程序与模型,经过严格检验
💻 M
字号:
function [Kp,Ti,Td,key,lb]=pid_za_tune(G,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<=1   
                    switch id 
                        case 1
                            Kp=1.279*(T/L)^0.945/K; 
                            Ti=T*(L/T)^0.586/0.535;
                        case 2
                            Kp=1.015*(T/L)^0.957/K; 
                            Ti=T*(L/T)^0.552/0.667;
                        case 3
                            Kp=1.021*(T/L)^0.953/K; 
                            Ti=T*(L/T)^0.546/0.629;
                    end
                    key=1;
                elseif L/T<=2.0
                    switch id
                        case 1
                            Kp=1.346*(T/L)^0.675/K; 
                            Ti=T*(L/T)^0.438/0.552; 
                        case 2
                            Kp=1.065*(T/L)^0.673/K; 
                            Ti=T*(L/T)^0.427/0.687; 
                        case 3
                            Kp=1.076*(T/L)^0.648/K; 
                            Ti=T*(L/T)^0.442/0.650; 
                    end
                    key=1;
                else
                    switch id
                        case 1
                            Kp=1.346*(T/L)^0.675/K; 
                            Ti=T*(L/T)^0.438/0.552; 
                        case 2
                            Kp=1.065*(T/L)^0.673/K; 
                            Ti=T*(L/T)^0.427/0.687; 
                        case 3
                            Kp=1.076*(T/L)^0.648/K; 
                            Ti=T*(L/T)^0.442/0.650;
                    end
                    key=2;lb=2.0;
                end
            case 3
                if L/T<=1   
                    switch id 
                        case 1
                            Kp=0.980*(T/L)^0.892/K; 
                            Ti=T/(0.690-0.155*L/T);
                        case 2
                            Kp=0.712*(T/L)^0.921/K; 
                            Ti=T/(0.968-0.247*L/T);
                        case 3
                            Kp=0.569*(T/L)^0.951/K; 
                            Ti=T/(1.023-0.179*L/T);
                    end
                    key=1;
                elseif L/T<=2.0
                    switch id
                        case 1
                            Kp=1.072*(T/L)^0.560/K; 
                            Ti=T/(0.648-0.114*L/T); 
                        case 2
                            Kp=0.786*(T/L)^0.559/K; 
                            Ti=T/(0.883-0.158*L/T); 
                        case 3
                            Kp=0.628*(T/L)^0.583/K; 
                            Ti=T/(1.007-0.167*L/T); 
                    end
                    key=1;
                else
                     switch id
                        case 1
                            Kp=1.072*(T/L)^0.560/K; 
                            Ti=T/(0.648-0.114*L/T); 
                        case 2
                            Kp=0.786*(T/L)^0.559/K; 
                            Ti=T/(0.883-0.158*L/T); 
                        case 3
                            Kp=0.628*(T/L)^0.583/K; 
                            Ti=T/(1.007-0.167*L/T); 
                    end
                    key=2;lb=2.0;
                end
            case 6    %%%%%%%%%%%%%%%%
                switch id
                    case 1
                            [Gm,Pm,Wcg,Wcp]=margin(G);
                            Ku=1/abs(Gm);
                            Tu=2*3.1416/Wcg;
                            Kp=0.361*Ku;Ti=0.083*(1.935*K*Ku+1)*Tu;
                      if  L/T<0.1
                            key=3;lb=0.1;
                      elseif L/T>2.0
                            key=2;lb=2.0;
                      else
                            key=1;
                      end
                    case 2
                            [Gm,Pm,Wcg,Wcp]=margin(G);
                            Ku=1/abs(Gm);
                            Tu=2*3.1416/Wcg;
                            Kp=(1.892*K*Ku+0.244)*Ku/(3.249*K*Ku+2.097);
                            Ti=Ku*(0.706*K*Ku-0.227)/(0.7229*K*Ku+1.2736);
                        if  L/T<0.1
                            key=3;lb=0.1;
                        elseif L/T>2.0
                            key=2;lb=2.0;
                        else
                            key=1;
                        end
                end
        end
    case 2
        switch key2
            case 2
                if L/T<=1   
                    switch id 
                        case 1
                            Kp=1.473*(T/L)^0.970/K; Ti=T*(T/L)^0.753/1.115;
                            Td=T*(L/T)^0.948*0.55;
                        case 2
                            Kp=1.468*(T/L)^0.970/K; Ti=T*(T/L)^0.725/0.942;
                            Td=T*(L/T)^0.939*0.443;
                        case 3
                            Kp=1.531*(T/L)^0.960/K; Ti=T*(T/L)^0.746/0.971;
                            Td=T*(L/T)^0.933*0.413;
                    end
                    key=1;
                elseif L/T<=2.0
                    switch id
                        case 1
                            Kp=1.524*(T/L)^0.735/K; Ti=T*(T/L)^0.641/1.130;
                            Td=T*(L/T)^0.851*0.552;
                        case 2
                            Kp=1.515*(T/L)^0.730/K; Ti=T*(T/L)^0.598/0.957;
                            Td=T*(L/T)^0.847*0.444;
                        case 3
                            Kp=1.592*(T/L)^0.705/K; Ti=T*(T/L)^0.597/0.957;
                            Td=T*(L/T)^0.850*0.414;
                    end
                    key=1;
                else
                     switch id
                        case 1
                            Kp=1.524*(T/L)^0.735/K; Ti=T*(T/L)^0.641/1.130;
                            Td=T*(L/T)^0.851*0.552;
                        case 2
                            Kp=1.515*(T/L)^0.730/K; Ti=T*(T/L)^0.598/0.957;
                            Td=T*(L/T)^0.847*0.444;
                        case 3
                            Kp=1.592*(T/L)^0.705/K; Ti=T*(T/L)^0.597/0.957;
                            Td=T*(L/T)^0.850*0.414;
                    end
                    key=2;lb=2.0;
                end
            case 3
                if L/T<=1   
                    switch id 
                        case 1
                            Kp=1.048*(T/L)^0.897/K; Ti=T/(1.195-0.368*L/T);
                            Td=T*(L/T)^0.888*0.489;
                        case 2
                            Kp=1.042*(T/L)^0.897/K; Ti=T/(0.987-0.238*L/T);
                            Td=T*(L/T)^0.906*0.385;
                        case 3
                            Kp=0.968*(T/L)^0.904/K; Ti=T/(0.977-0.253*L/T);
                            Td=T*(L/T)^0.892*0.316;
                    end
                    key=1;
                elseif L/T<=2.0
                    switch id
                        case 1
                            Kp=1.154*(T/L)^0.567/K; Ti=T/(1.047-0.220*L/T);
                            Td=T*(L/T)^0.708*0.490;
                        case 2
                            Kp=1.142*(T/L)^0.579/K; Ti=T/(0.919-0.172*L/T);
                            Td=T*(L/T)^0.839*0.384;
                        case 3
                            Kp=1.061*(T/L)^0.583/K; Ti=T/(0.892-0.165*L/T);
                            Td=T*(L/T)^0.832*0.315;
                    end
                    key=1;
                else
                    switch id
                        case 1
                            Kp=1.154*(T/L)^0.567/K; Ti=T/(1.047-0.220*L/T);
                            Td=T*(L/T)^0.708*0.490;
                        case 2
                            Kp=1.142*(T/L)^0.579/K; Ti=T/(0.919-0.172*L/T);
                            Td=T*(L/T)^0.839*0.384;
                        case 3
                            Kp=1.061*(T/L)^0.583/K; Ti=T/(0.892-0.165*L/T);
                            Td=T*(L/T)^0.832*0.315;
                    end
                    key=2;lb=2.0;
                 end
            case 4
                  [Gm,Pm,Wcg,Wcp]=margin(G);
                  Ku=1/abs(Gm);
                  Tu=2*3.1416/Wcg;
                  m=0.614*(1-0.233*exp(-0.347*K*Ku));fem=(33.8*3.1416/180)*(1-0.97*exp(-0.45*K*Ku));
                  Kp=m*Ku*cos(fem);
                  a=0.413*(3.302*K*Ku+1);
                  Ti=a*(tan(fem)+(4/a+tan(fem)*tan(fem))^0.5)/(2*Wcg);   %%%%%problem!
                  Td=Ti/a;
              if L/T>=0.1&L/T<=2.0
                  key=1;
              elseif L/T>2.0
                  key=2;lb=2.0;
              else
                  key=3;lb=0.1;
              end
            case 6
                 switch id
                     case 1
                        [Gm,Pm,Wcg,Wcp]=margin(G);
                        Ku=1/abs(Gm);
                        Tu=2*3.1416/Wcg;
                        Kp=0.509*Ku;Ti=0.051*(3.302*K*Ku+1)*Tu;Td=0.125*Tu;
                     case 2
                        [Gm,Pm,Wcg,Wcp]=margin(G);
                        Ku=1/abs(Gm);
                        Tu=2*3.1416/Wcg;
                        Kp=Ku*(4.434*K*Ku-0.966)/(5.12*K*Ku+1.734);Ti=Tu*(1.751*K*Ku-0.612)/(3.776*K*Ku+1.388);Td=0.144*Tu
                 end
                 if L/T>=0.1&L/T<=2.0
                     key=1;
                 elseif L/T>2.0
                     key=2;lb=2.0;
                 else
                     key=3;lb=0.1;
                 end
         end
end





⌨️ 快捷键说明

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