📄 pid_za_tune.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 + -