11春MATLAB仿真期末大作业

更新时间:2024-04-03 17:20:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATLAB仿真

期末大作业

姓 名: 宋乐心 班 级: 12 学 号: 03081208 指导教师: 李绍武

2011春期末大作业

题目:设单位负反馈控制系统前向通道传递函数由G1(s)和G2(s)串联,其中:

G1(s)?KsG2(s)?A?1(s?1)

A表示自己学号最后一位数(可以是零),K为开环增益。要求:

(1)设K=1时,建立控制系统模型,并绘制阶跃响应曲线(用红色虚线,并标注坐标和标题);求取时域性能指标,包括上升时间、超调量、调节时间、峰值时间;

(2)在第(1)问中,如果是在命令窗口绘制阶跃响应曲线,用in1或者from workspace模块将命令窗口的阶跃响应数据导入Simulink模型窗口,用示波器显示阶跃响应曲线;如果是在Simulink模型窗口绘制阶跃响应曲线,用out1或者to workspace模块将Simulink模型窗口的阶跃响应数据导入命令窗口并绘制阶跃响应曲线。

(3)用编程法或者rltool法设计串联超前校正网络,要求系统在单位斜坡输入信号作用时,位置稳态误差小于等于0.1rad,开环系统截止频率?c''?4.4rad/s,

相角裕度大于等于45度,幅值裕度大于等于10dB。 格式要求:正文内容一律用小四字、宋体(英文或数字用Time New Roman)、1.25倍行距;要求有详细建模过程、分析过程和相应结论;截图的大小和位置应适当讲究美观和排版。 (1)Simulink模型

程序:

G=zpk([],[0 -1],9) C=dcgain(G) [y,t]=step(G) plot(t,y) grid

[Y,k]=max(y); timetopeak=t(k)

percentovershoot=100*(Y-C)/C n=1;

while y(n)>C n=n+1; end

risetime=t(n) i=length(t)

while(y(i)>0.98*C)&(y(i)<1.02*C) i=i-1 end

settlingtime=t(i)

运算结果:

峰值时间:timetopeak = 10

超调量:percentovershoot = NaN 上升时间:risetime =0

调节时间:settlingtime = 10 阶跃响应曲线:

(3)

解:设计时,首先调整开环增益。因为

ess(∞)=1/K≤0.1

故取K=10(rad)ˉ1, 则待校正系统开环传递函数

G0(s)=10/s(s+1)

上式代表最小相位系统,因此只需画出对数幅频渐进特性。令幅值为0可以算出Wc`=3.1rad/s,算出待校正系统的相角欲度为

γ=180°-90°-arctanwc`=17.9°

而二阶系统的幅值欲度为+∞.相角欲度小的原因,是因为待校正系统的对数幅频特性中频区的斜率为-40dB/dec。由于截止频率和相角欲度均低于指标要求,故采用串联超前校正是合适的。

下面计算超前网络参数。Wm=Wc``=4.4rad/s,将Wm代入幅值函数可以算得L`(wc``)=-6dB,根据公式- L`(wc``)=10lga,可以算得a=4,T=0.114s。因此,超前网络传递函数为

4Gc(s)=(1+0.456s)/(1+0.114s)

为了补偿无源超前网络产生的增益衰减,放大器的增益需提高4倍,否则不能保证稳态误差要求。

超前网络参数确定后,已校正系统的开环传递函数为

Gc(s)G0(s)=10(1+0.456s)/s(1+0.114s)(1+s) 校正系统Wc``=4.4rad/s,算得待校正系统的

γ(Wc``)=180°-90°-arctanwc`=12.8°,而由式

φm=arcsin(a-1)/(a+1)可以算出φm=36.9°,故已校正系统的相角欲度

γ``=φm+γ(Wc``)=49.7°>45° 子程序:

function Gc=cqjz_root(G,s1,kc) numG=G.num{1};denG=G.den{1}

ngv=polyval(numG,s1);dgv=polyval(denG,s1) g=ngv/dgv

theta_G=angle(g);theta_s=angle(s1) MG=abs(g);Ms=abs(s1)

Tz=(sin(theta_s)-kc*MG*sin(theta_G-theta_s))/(kc*MG*Ms*sin(theta_G)) Tp=-(kc*MG*sin(theta_s)+sin(theta_G+theta_s))/(Ms*sin(theta_G)) Gc=tf([Tz,1],[Tp,1])

function [Gc,kc]=zhjz_root(G,zeta,wc,Tz) G=tf(G);[r,k]=rlocus(G) za=zeta/sqrt(1-zeta^2) ri=r(1,find(imag(r(1,:))>0)) ra=imag(ri)./real(ri)

kc=spline(ra,k(find(imag(r(1,:))>0)),1/za) syms x;syms ng;syms dg

ng=poly2sym(G.num{1});dg=poly2sym(G.den{1}) ess=limit(ng*kc/dg*x)

beta=round(100/sym2poly(ess)/wc);Tp=Tz/beta Gc=tf([1,Tz],[1,Tp])

主程序:

z=[];p=[0,-1];k=9 Gz=zpk(z,p,k);G=tf(Gz) zeta=0.2;wn=4.4 kc=1;Tz=0.1;dPm=45+5

ng=G.num{1};dg=G.den{1} [num,den]=ord2(wn,zeta) s=roots(den) s1=s(1)

Gc1=cqjz_root(G,s1,kc) G1=G*Gc1*kc

[Gc2,Kc2]=zhjz_root(G,zeta,wn,Tz) GGc=G1*Gc2*Kc2 Gy_close=feedback(G,1) Gx_close=feedback(GGc,1)

figure(2);impulse(Gx_close,'b');hold on impulse(Gy_close,'r');grid gtext('校正前的');gtext('校正后的') figure(3);rlocus(G,GGc);grid gtext('校正前的');gtext('校正后的')

结果;

k = 9 Transfer function: 9/(s^2 + s)

wn = 4.4000 dPm = 50 Transfer function:(1.494 s + 1)/(0.7041 s + 1) 串联校正函数与校正后的函数

本文来源:https://www.bwwdw.com/article/222r.html

Top