?? rlocus_jiaozheng.m
字號:
function rlocus_jiaozheng(num,den,OF,P_O_,T_s,K,Zeata_)
switch OF
case 1%超前校正
%算出主導(dǎo)極點R_m1和R_m2
z_ta=log(P_O_)^2/(log(P_O_)^2+pi*pi);
z_ta=z_ta^(0.5);z_ta=abs(z_ta);
Wn_=(4/T_s)/z_ta;
R_m1=-z_ta*Wn_+j*Wn_*((1-z_ta*z_ta)^0.5); R_m2=conj(R_m1);
root_tu_( R_m1,1 )
rlocus(num,den)
disp('根據(jù)應(yīng)滿足的超調(diào)量P.O.和調(diào)節(jié)時間Ts得出的主導(dǎo)極點區(qū)已用虛線框出'),pause(1.5)
disp('觀察根軌跡是否有處于主導(dǎo)區(qū)的點,如果有,表示動態(tài)特性滿足,驗證主導(dǎo)極點的主導(dǎo)性即可') ,pause(1.5)
disp('如果沒有,那么應(yīng)該把根軌跡往左邊拉,拉到主導(dǎo)區(qū),使用超前校正')
disp(' ')
disp('press any key to be continue '),pause
Choose_=menu(['是否繼續(xù)校正'],'否','是');
if Choose_==1
disp('結(jié)束 ')
return
else
%求出超前校正的參數(shù)
disp('首先把主導(dǎo)極點帶入原來的開環(huán)傳函GH(s)|s=s1,得到一個虛數(shù)'),pause(1.6)
disp('由數(shù)學知識可知,得到的虛數(shù)的相角?就是各零點到該主導(dǎo)極點的角度和 減去 到各極點到該主導(dǎo)極點的角度和'),pause(1.6)
disp('由根軌跡的角條件可知,校正網(wǎng)絡(luò)需要提供的相角Φ=-180-?'),pause(1.6)
c_ta=input('按照上述要求進行計算,算出Φ=');disp('由作圖法得出校正網(wǎng)絡(luò)的零、極點'),pause(1.6)
Z_=input('得出零點為:');P_=input('得出極點為:');
disp('由幅值條件串入校正網(wǎng)絡(luò)后,系統(tǒng)變?yōu)?Gc(s)*GH(s),為滿足幅值條件,| {Gc(s)*GH(s)|s=s主導(dǎo)} |還應(yīng)等于1')
disp('如不等于1 就應(yīng)在Gc(s)前乘Kc使 | {Kc*Gc(s)*GH(s)|s=s主導(dǎo)} |=1')
Kc=input('算出的Kc為: ');
%屏幕上顯示校正網(wǎng)絡(luò)
disp('得出串入網(wǎng)絡(luò)(S-Z)/(S-P)為:'),pause(1)
disp(''),pause(1)
if Z_>=0
disp([num2str(Kc),'*(S-',num2str(Z_),')']),pause(1)
else
disp([num2str(Kc),'*(S+',num2str(-Z_),')']),pause(1)
end
disp('------------------------')
if P_>=0
disp(['S-',num2str(P_)]),pause(1)
else
disp(['S+',num2str(-P_)]),pause(1)
end
disp(''),disp(''),disp(''),pause(1)
%
end
disp(''),disp('')
%屏幕上顯示校正后的系統(tǒng)
disp('校正后的系統(tǒng)GH(s)為:'),pause(1)
tt_num=shuzhu2zifu(num);tt_den=shuzhu2zifu(den);%原系統(tǒng)分子,分母的字符表示
if Z_>=0%校正網(wǎng)絡(luò)分子
qq_num=strcat(num2str(Kc),'*(','S-',num2str(Z_),')'); ,pause(1)
else
qq_num=strcat(num2str(Kc),'*(','S+',num2str(-Z_),')'); ,pause(1)
end
%
disp([qq_num,'*(',tt_num,')']) ,pause(1)
disp('----------------------------------') ,pause(1)
if Z_>=0%校正網(wǎng)絡(luò)分母
qq_den=strcat('(','S-',num2str(P_),')'); ,pause(1)
else
qq_den=strcat('(','S+',num2str(-P_),')'); ,pause(1)
end,pause(1.6),pause(1.6)
%
disp([qq_den,'*(',tt_den,')']) ,pause(1)
%
num1=conv([1 -Z_],num);den1=conv([1 -P_],den);%校正后的系統(tǒng)
disp('畫出校正后系統(tǒng)的根軌跡'),figure(2)
root_tu_( R_m1,1 ),rlocus(num1,den1)
disp('驗證主導(dǎo)極點的主導(dǎo)性:如得出的根軌跡上滿足動態(tài)特性的一對共軛極點是主導(dǎo)的,那么要求的動態(tài)特性就滿足了'),pause(2.1)
disp('求出該主導(dǎo)極點在根軌跡上對應(yīng)的K值,驗證誤差系數(shù),如不滿足,重新校正'),pause(1.8)
disp('注意:不可以直接通過加大K值來滿足誤差系數(shù),這樣會改變主導(dǎo)極點在根軌跡上的位置'),pause(2.1)
disp('如果K的增大使主導(dǎo)極點失去了主導(dǎo)性或跑出了主導(dǎo)區(qū),就錯了!!!!'),pause(1.6)
disp('結(jié)束')
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
otherwise%滯后校正
disp('串入網(wǎng)絡(luò)Kc’*(S-Z)/(S-P)'),pause(1)
if Zeata_~=0
root_tu_(R_m1,type)
rlocus(num,den)
disp('通過ζ的直線與根軌跡的交點 確定待校正的系統(tǒng)的常數(shù)項的取值'),pause(1.5)
disp('基于這個重新取得的常數(shù)項的值與原來常數(shù)項的比值就是要串入的網(wǎng)絡(luò)的Kc’'),pause(1.6)
Kc=input('Kc= ');
end
Kc=1;
disp('基于根軌跡的滯后校正是在原系統(tǒng)的動態(tài)特性滿足需要已不需修改,但穩(wěn)態(tài)特性不好要提高誤差系數(shù)的情形下校正'),pause(2.1)
K1=input('給出未校正前誤差系數(shù)K1= '); disp('與要求得誤差系數(shù)相比較得出a');a=K/K1;
disp(['所以a=K/K1= ',num2str(a)]);
disp('所以為防止串入的網(wǎng)絡(luò)移動主導(dǎo)極點,影響動態(tài)特性,令Kc’=1'),pause(1.6)
disp('為保證加入的滯后網(wǎng)絡(luò)帶來的滯后的相角不會嚴重的影響原來系統(tǒng)的穩(wěn)定性(即降低了相角裕量)'),pause(1.6)
disp('通常使零點Z的值取的比原系統(tǒng)GH(s)中分子、分母各環(huán)節(jié)時間常數(shù)的最大值Tmax的10倍的倒數(shù)') ,pause(1.6)
disp('即Z=1/(10*Tmax). 這樣零點Z會非常的靠近原點'),pause(1.6)
Z_=input('給出Z= ');
disp('零點Z除以極點P的值就是要提高的位置誤差系數(shù)的倍數(shù)a '),pause(2.1)
disp('因為limit((S+Z)/(S+P),s,0)=Z/P 所以令校正網(wǎng)絡(luò)所能提供的誤差系數(shù)放大倍數(shù)Z/P=a就可以達到校正的目的'),pause(2.1)
disp('因此P=Z/a,由于Z非常的靠近原點而a是大于1的,所以P更加的靠近原點,P,Z間的距離就很近'),pause(1.6)
disp('校正網(wǎng)絡(luò)提供的相角,通常就會很小,這是可以也應(yīng)該進行驗證的'),pause(1.6)
P_=input('現(xiàn)在,給出P= ');
%屏幕上顯示校正網(wǎng)絡(luò)
disp('得出串入網(wǎng)絡(luò)(S-Z)/(S-P)為:'),pause(1)
disp(''),pause(1)
disp([num2str(Kc),'*(','S+',num2str(-Z_),')']),pause(1)
disp('------------------------')
disp(['S+',num2str(-P_)]),pause(1)
disp(''),disp(''),disp(''),pause(1)
%
%屏幕上顯示校正后的系統(tǒng)
disp('校正后的系統(tǒng)GH(s)為:'),pause(1)
tt_num=shuzhu2zifu(num);tt_den=shuzhu2zifu(den);%原系統(tǒng)分子,分母的字符表示
qq_num=strcat('(','S+',num2str(-Z_),')'); ,pause(1)
%
disp([num2str(Kc),'*(', qq_num,'*(',tt_num,'))']) ,pause(1)
disp('----------------------------------') ,pause(1)
qq_den=strcat('(','S+',num2str(-P_),')'); ,pause(1)
%
disp([qq_den,'*(',tt_den,')']) ,pause(1)
disp(''),disp(''),disp('')
%
num1=conv([1 -Z_],num);den1=conv([1 -P_],den);%校正后的系統(tǒng)
disp('畫出校正后系統(tǒng)的根軌跡'),pause(1.6),figure(2)
rlocus(num1,den1)
disp('比較校正前后的根軌跡 '),pause(1.6)
disp('press any key to be continue'),pause
disp('驗證系統(tǒng)的誤差系數(shù),是否滿足') ,pause(1)
% YY_ss =shuzhu2fuhao( num1, den1);
% ess=limt(s*YY__SS,s,0);
disp('結(jié)束')
end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -