实验一Matlab使用方法和程序设计
二、实验内容
6、基本程序设计
(1)编写命令文件:计算1+2+…+n<2000时的最大n值;
n=0;s=0;
while s<2000
n=n+1;
s=s+n;
end
n=n-1
(2)编写函数文件:分别用for和while循环结构编写程序,求2的0到n 次幂的和。
(2.1)function [sum]=mi(n)
sum=0;
for m=0:n
sum=sum+2^m;
end
(2.2)function [sum]=miwhile(n)
sum=0;m=0;
while m<=n
sum=sum+2^m;
m=m+1;
end
(3)如果想对一个变量x自动赋值。当从键盘输入y或Y时(表示是),x 自动赋为1;当从键盘输入n或N时(表示否),x自动赋为0;输入
其他字符时终止程序。
s=input('please input a key:','s')
while(s=='n'||s='N'||s=='y'||s='Y')
if(s=='y'||s='Y')
clc;
x=1;
disp('x=');
disp(x);
else(s=='n'||s='N')
clc;
x=0;
disp('x=');
disp(x);
end
s=input('please input a key','s')
clc;
end
实验二控制系统分析(一)
二、实验内容
1、时域分析
(1)根据下面传递函数模型:绘制其单位阶跃响应曲线并从图上读取最大超调量,绘制系统的单位脉冲响应、零输入响应曲线。
num=5*[1 ,5 ,6];
den=[1, 6 ,10, 8];
sys=tf(num,den);
step(sys)
figure(2)
sys1=ss(sys);
x0=[1;0;0];
initial(sys1,x0)
(2)典型二阶系统传递函数为:
当ζ=0.7,ωn取2、4、6、8、10、12的单位阶跃响应。
zet=0.7;wn=[2,4,6,8,10,12];
hold on
for i=1:length(wn)
sys=tf(wn(i)^2,[1,2*zet*wn(i),wn(i)^2]);
step(sys)
end
(3)典型二阶系统传递函数为:
当ωn =6,ζ取0.2、0.4、0.6、0.8、1.0、1.5、2.0的单位阶跃响应。
wn=6;zet=[0.2,0.4,0.6,0.8,1.0,1.5,2.0];
hold on
for i=1:length(zet)
sys=tf(wn^2,[1,2*zet(i)*wn,wn^2]);
step(sys)
end
2、频域分析
(1)典型二阶系统传递函数为:
当ζ=0.7,ωn取2、4、6、8、10、12的伯德图。
zet=0.7;wn=[2,4,6,8,10,12];
hold on
for i=1:length(wn)
sys=tf(wn(i)^2,[1,2*zet*wn(i),wn(i)^2]);
bode(sys)
end
(2)典型二阶系统传递函数为:
当ωn =6,ζ取0.2、0.4、0.6、0.8、1.0、1.5、2.0的伯德图。
wn=6;zet=[0.2,0.4,0.6,0.8,1.0,1.5,2.0];
hold on
for i=1:length(zet)
sys=tf(wn^2,[1,2*zet(i)*wn,wn^2]);
bode(sys)
end
3、根轨迹分析
根据下面负反馈系统的开环传递函数,绘制系统根轨迹,并分析系统稳定的K值范围。
sys=tf(1,[1, 3, 2 ,0])
rlocus(sys)
[x,y]=ginput(1)
p=x+y*i
k=rlocfind(sys,p)
实验三控制系统分析(二)
二、实验内容
1、系统稳定性分析
(1)代数法稳定性判据:(用求分母多项式的根和routh函数两种方法来判定)
已知系统的开环传递函数为:
试对系统闭环判别其稳定性
k=100;
p=[0,-1,-20];
z=-2;
sys=zpk(z,p,k)
sys=tf(sys)
G_c=feedback(sys,1);%转换为闭环传递函数
roots(G_c.den{1})%求闭环特征方程的根
[rtab,msg]=routh(G_c.den{1})
(2)根轨迹法判断系统稳定性:
已知一个单位负反馈系统开环传递函数为:
试在系统的闭环根轨迹图上选择一点,求出该点的增益及其系
统的闭环极点位置,并判断在该点系统闭环的稳定性。
sys=tf([1,3],conv(conv([1,0],[1,5]),conv([1,6],[1,2,2])))
rlocus(sys)
[K,poles]=rlocfind(sys)
(3)Bode图法判断系统稳定性:
已知两个单位负反馈系统的开环传递函数分别为:
用Bode图法判断系统闭环的稳定性。
sys1=tf(2.7,[1 5 4 0])
margin(sys1);%画出波特图
[Gm,Pm,Wcg,Wcp]=margin(sys1)
G_c=feedback(sys,1)
step(G_c)%验证阶跃响应是否稳定
grid
2、系统能控性、能观性分析
已知连续系统的传递函数模型,
当α分别取-1,0,+1时,判别系统的能控性与能观性[A,B,C,D]=tf2ss([1,-1],[1,10,27,18])%取0,1时同理
Tc=ctrb(A,B)
rank(Tc)
To=obsv(A,C)
rank(To)
实验四古典控制系统设计---根轨迹法
二、实验内容
1、根据二阶系统如图所示,其中ζ=0.6,ωn=5rad/s,当有一阶
跃信号作用于系统时,试计算特征量 tr、tp、ts、σp。
sys=tf([25],[1,6,0]);
G=feedback(sys,1)
[pos,tr,ts,tp]=stepchar(G,0.02)
2、设单位负反馈系统的开环传递函数为:
试确定带惯的PD控制器的串联超前校正参数,使之满足:(1)阶跃响应的超调量:σ≤30%;
(2)阶跃响应的超调时间:ts≤0.8 s(Δ=0.02)。
KK=5;bp=0.30;ts=0.8;delta=0.02;
ng0=[256];dg0=conv([1,0],conv([1,8],[1,16]));
g0=tf(ng0,dg0);%原系统开环传递函数
s=bpts2s(bp,ts,delta);%转换成闭环主导极点
[ngc,dgc]=rg_lead(ng0,dg0,s);%计算出校正系统的传递函数
gc=tf(ngc,dgc)
g0c=tf(g0*gc);%校正后系统
b1=feedback(g0,1);
b2=feedback(KK*g0c,1);%给校正后的闭环系统增加开环增益figure(4);
step(b1,'r--',b2,'b');grid on
[pos,tr,ts,tp]=stepchar(b2,delta) %计算性能指标,如果不满足,修改KK值