控制系统仿真matlab第六章习题答案
自动控制原理习题全解及MATLAB实验 第6章习题解答

系统开环传递函数为 G0 s
s0.1s
K
10.2s
1
,要求:
(1)系统响应斜坡信号 r(t)=t 时,稳态误差 ess 0.01 ;
(2) 系统相位裕量 ' 40 。
试用分析法设计一个串联滞后-超前校正装置。
解:(1)系统为Ⅰ型系统,在单位斜坡信号下
分稳态误差为
essr
1 k
令 essr
稳态性能与动态性能? 答:PID 兼有 PI、PD 控制的特点,它相当于提供了一个积分环节与两个一阶微分环节。
积分环节改善稳态性能,两个一阶微分环节改善动态性能。 试分别叙述利用比例负反馈和微分负反馈包围振荡环节所起到的作用。
答:二阶振荡环节的频率特性为
1
T 2S 2 2 S 1
用比例负反馈 H(s)=h
0.2s 1 0.0143s 1
(5) Gc (s)
s 1 14s 1
0.2s 1 0.0143s
(6)
G
k
(s)
s(14s
100(s 1) 1)(0.1s 1)(0.0143s
1)
' 180 [90 arctan 7 arctan(14 7) arctan(0.1 7) arctan(0.0143 7)] 41.9 40
10lg( 12)
6dB
,
最后得出 c' m 4.47rad/s>4.4rad/s
(4) 确定校正装置的转折频率
1 m
2.2rad/s ,2 m
8.8rad/s ,T 1 0.45s , 1
G(s)=
s
2.2 s
1 1
0.45s 0.11s
1 1
控制系统的MATLAB仿真与设计课后答案

控制系统的MATLAB 仿真与设计课后答案第二章1>>x=[15 22 33 94 85 77 60]>>x(6)>>x([1 3 5])>>x(4:end)>>x(find(x>70))2>>T=[1 -2 3 -4 2 -3] ;>>n=length(T);>>TT=T';>>for k=n-1:-1:0>>B(:,n-k)=TT.^k;>>end>>B>>test=vander(T)3>>A=zeros(2,5);>>A(:)=-4:5>>L=abs(A)>3>>islogical(L)>>X=A(L)4>>A=[4,15,-45,10,6;56,0,17,-45,0] >>find(A>=10&A<=20)5>>p1=conv([1,0,2],conv([1,4],[1,1]));>>p2=[1 0 1 1];>>[q,r]=deconv(p1,p2);>>cq='商多项式为 '; cr='余多项式为 ';>>disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')]) 6>>A=[11 12 13;14 15 16;17 18 19];>>PA=poly(A)>>PPA=poly2str(PA,'s')第三章1>>n=(-10:10)';>>y=abs(n);>>plot(n,y,'r.','MarkerSize',20)>>axis equal>>grid on>>xlabel('n')2>>x=0:pi/100:2*pi;>>y=2*exp(-0.5*x).*sin(2*pi*x);>>plot(x,y),grid on;3>>t=0:pi/50:2*pi;>>x=8*cos(t);>>y=4*sqrt(2)*sin(t);>>z=-4*sqrt(2)*sin(t);>>plot3(x,y,z,'p');>>title('Line in 3-D Space');>>text(0,0,0,'origin');>>xlabel('X'),ylable('Y'),zlable('Z');grid;4>>theta=0:0.01:2*pi;>>rho=sin(2*theta).*cos(2*theta); >>polar(theta,rho,'k');5>>[x,y,z]=sphere(20);>>z1=z;>>z1(:,1:4)=NaN;>>c1=ones(size(z1));>>surf(3*x,3*y,3*z1,c1);>>hold on>>z2=z;>>c2=2*ones(size(z2));>>c2(:,1:4)=3*ones(size(c2(:,1:4))); >>surf(1.5*x,1.5*y,1.5*z2,c2);>>colormap([0,1,0;0.5,0,0;1,0,0]); >>grid on>>hold off第四章1>>for m=100:999m1=fix(m/100);m2=rem(fix(m/10),10);m3=rem(m,10);if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m)endend2M文件:function[s,p]=fcircle(r)s=pi*r*r;p=2*pi*r;主程序:[s,p]=fcircle(10)3>>y=0;n=100;for i=1:ny=y+1/i/i;end>>y4 M文件:function f=factor(n)if n<=1f=1;elsef=factor(n-1)*n; end主程序:>>s=0;for i=1:5s=s+factor(i);end>>s5>>sum=0;i=1;while sum<sum=sum+i;i=i+1;end;>>n=i-26for循环M文件:function k=jcsum(n) k=0;for i=0:nk=k+2^i;end主程序:>>jcsum(63)While循环M文件:function k=jcsum1(n)k=0;i=0;while i<=nk=k+2^i;i=i+1;end主程序:>>jcsum1(63)第五章1>>A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; >>b=[13,-9,6,0]';>>x=A\b2M文件:function f=fxyz(u)x=u(1);y=u(2);z=u(3);f=x+y.^2./x/4+z.^2./y+2./z;主程序:[U,fmin]=fminsearch('fxyz',[0.5,0.5,0.5]) 3>>X=linspace(0,2*pi,50);。
控制系统计算机仿真课后答案

控制系统计算机仿真课后答案参考答案说明:1( 对于可以用文字或数字给出的情况,直接给出参考答案。
2( 对于难以用文字或数字给出的情况,将提供MATLAB程序或Simulink模型。
第 1 章1.1 系统是被研究的对象,模型是对系统的描述,仿真是通过模型研究系统的一种工具或手段。
1.2 数学仿真的基本工具是数字计算机,因此也称为计算机仿真或数字仿真。
将数学模型通过一定的方式转变成能在计算机上实现和运行的数学模型,称之为仿真模型。
1.3 因为仿真是在模型上做试验,是一种广义的试验。
因此,仿真基本上是一种通过试验来研究系统的综合试验技术,具有一般试验的性质。
而进行试验研究通常是需要进行试验设计。
1.4 解析法又称为分析法,它是应用数学推导、演绎去求解数学模型的方法。
仿真法是通过在模型上进行一系列试验来研究问题的方法。
利用解析法求解模型可以得出对问题的一般性答案,而仿真法的每一次运行则只能给出在特定条件下的数值解。
,解析法常常是围绕着使问题易于求解,而不是使研究方法更适合于问题,常常因为存在诸多困难而不能适用。
从原则上讲,仿真法对系统数学模型的形式及复杂程度没有限制,是广泛适用的,但当模型的复杂程度增大时,试验次数就会迅速增加,从而影响使用效率。
1.5 仿真可以应用于系统分析、系统设计、理论验证和训练仿真器等方面。
1.6,8,20,71,,,,,,,,,x,100x,0u,,,, ,,,,0100,,,,y,,,002x注:本题答案是用MATLAB中tf2ss()函数给出的,是所谓“第二能控标准型”(下同)。
11.7,3,3,11,,,,,,,,,x,100x,0u,,,, ,,,,0100,,,,y,,,013x1.82s,3s,3G(s), 32s,4s,5s,21.91.368,0.36801,,,,,,,,x(k,1),100x(k),0u(k),,,, ,,,,0100,,,,y(k),,,00.3680.264x(k)1.10 仿真模型见praxis1_10_1.mdl;MATLAB程序见praxis1_10_2.m。
MATLAB基础及其应用教程-周开利-邓春晖课后答案 第六章

第6章习题解答1. 在命令窗口中输入,一次只能执行一行命令,脚本文件是命令的集中,只需输入脚本文件名,就可以按顺序一次执行所有命令。
2.脚本文件是命令的集中,只需输入脚本文件名,就可以一次执行所有命令,没有输入参数,没有输出参数。
文件名可任意取,只需符合变量的定义要求即可。
脚本文件中生成的变量是全局变量。
函数文件可以接受参数,也可以返回参数,一般需要由其他语句调用。
首行语句必须以function开始,有函数名,文件名必须与函数名一致。
函数空间中生成的变量是局部变量。
3.function result=project1(year)if mod(year,400)==0 || (mod(year,4)==0 && mod(year,100)~=0)result='是闰年';elseresult='不是闰年';end4.function min=comp(x1,x2)min=x1;if x1>x2min=x2;end5.(1)在命令窗口输入:k=0;for i=-1000:1000;k=k+1;end;k 即可得出:2001步。
(2)方法同上,10步6.(1)循环进行的条件是var不是10的倍数,循环结束时,var必是10的倍数,即10(2)每次循环的结果是:4,16,256,此时,不满足循环条件而退出循环,即var为256(3)循环条件是var>100,而var的值为3,不满足条件,循环不执行,所以var值不变。
7.方法1:clear;A=[1 2 3;4 5 6];fid=fopen('c:\a1.txt','wt');fprintf(fid,'%d ',A(1,:));fprintf(fid,'\n');fprintf(fid,'%d ',A(2,:));fclose(fid);方法2:clear;a=[1 2];A=[1 2 3 4 5 6]B=reshape(A,2,2) dlmwrite('c:\a2.txt',B)。
Matlab第六章作业答案

第六章
6.2 如何进行一下操作:
(1)翻转模块
(2)给模型窗口加标题
(3)指定仿真时间
(4)设置示波器的显示刻度
解:(1)点击模型窗口的Format ,在下拉菜单中中有两个选项:Flip block 和Rotate block 。
Flip block 可使模块旋转180度(快捷键Ctrl+I ),Rotate block 可以模块顺时针旋转90度(快捷键Ctrl+R )。
(2)在模型窗口的上方双击鼠标左键,会出现的一个文本输入框,编辑输入标题。
(3)单击Simulation ,在下拉菜单中选择configuration parameters ,打开仿真环境参数对话框,在Solver 选项的start time 设置仿真起止时间。
(4)双击示波器Scope 调出显示屏幕,选择Axes properties 选项,改变Y-min 和Y-max 可改变显示刻度。
6.3用Simulink 建立如下控制系统的仿真模型,并对系统进行阶跃响应仿真模型:
22()48
G s s s =++ 解:
6.4在Simulink 环境下,设计一个PID 控制器,实现下面被控制对象的控制,并观察选择不同的PID 参数时对控制效果的影响:
220()212G s s s =++ 其中,系统输入信号分别选择阶跃信号和正弦信号。
解:当输入信号为阶跃信号时:
当输入信号为正弦信号时:。
中南大学matlab课后答案-第六章

实验指导二1,(1)>> A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6];B=[,,]';x=A\B (2)>> A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6];B=[,,]';x=A\B (3)>> cond(A)2,(1)建立函数文件,命令如下;Function fx=funx(x)fx=x^41+x^3+1;$调用fzero函数求根,命令如下;>> z=fzero(@funx,-1)(2) 建立函数文件,命令如下;Function fx=sin(x)fx=x-(sin(x))/x;调用fzero函数求根,命令如下;>> z=fzero(@sin,(3) 建立函数文件,命令如下;function q=myfun(p)x=p(1);、y=p(2);z=p(3);q(1)=sin(x)+y^2+log(z)-7;q(2)=3*x+2^y-z^3+1;q(3)=x+y+z-5;调用fsolve函数求根,命令如下;>> options=optimset('Display','off');x=fsolve(@myfun,[1,1,1]',options) 3,(1) 建立函数文件,命令如下;function yp=funt(t,y)>yp=-y*+sin(10*t));求微分方程,程序如下:>> t0=0;tf=5;y0=1;[t,y]=ode23(@funt,[t0,tf],y0)(2) 建立函数文件,命令如下;function yp=funr(t,y)yp=cos(t)-(y)/(1+t^2);求微分方程,程序如下:>> t0=0;tf=5;y0=1;[t,y]=ode23(@funr,[t0,tf],y0)4,建立函数文件命令如下:{function fx=mymax(x)fx=-1*(1+x^2)/(1+x^4);求最大值,程序如下:>> [x,y]=fminbnd(@mymax,0,2)5,编写目标函数M文件,命令如下:function f=fop(x)f=-1*(x(1)^(1/2)+x(2)^(1/2)+x(3)^(1/2)+x(4)^(1/2));设定约束条件,并调用fmincon函数求解此约束最优化问题,程序如下:>>x0=[200,200,200,200];%A=[1,0,0,0;,1,0,0;,,1,0;,,,1];b=[400,440,484,];Ib=[0,0,0,0];options=optimset('Display','off');[x,y]=fmincon(@fop,x0,A,b,[],[],Ib,[],[],options)思考练习1,(1)矩阵求逆:>> A=[2,3,5;3,7,4;1,-7,1];b=[10,3,5]';x=inv(A)*b矩阵除法:>> A=[2,3,5;3,7,4;1,-7,1];b=[10,3,5]';x=A\b!矩阵分解:>> A=[2,3,5;3,7,4;1,-7,1];b=[10,3,5]';[L,U]=lu(A);x=U\(L\b) (2)矩阵求逆:>>A=[6,5,-2,5;9,-1,4,-1;3,4,2,-2;3,-9,0,2];b=[-4,13,1,11]';x=inv(A)*b矩阵除法:>>A=[6,5,-2,5;9,-1,4,-1;3,4,2,-2;3,-9,0,2];b=[-4,13,1,11]';x=A\b矩阵分解:>> A=[6,5,-2,5;9,-1,4,-1;3,4,2,-2;3,-9,0,2];b=[-4,13,1,11]'; [L,U]=lu(A);x=U\(L\b)2,(1)建立函数文件,命令如下:function fx=fun1(x)fx=3*x+sin(x)-exp(x);调用fzero函数求根,命令如下;>> y=fzero(@fun1,、(2) 建立函数文件,命令如下:function fx=fun2(x)fx=1-(1/x)+5;调用fzero函数求根,命令如下;>> y=fzero(@fun2,1)(3) 建立函数文件,命令如下;function q=fun3(p)x=p(1);y=p(2);q(1)=x^2+y^2-9;'q(2)=x+y-1;调用fsolve函数求根,命令如下;>> options=optimset('Display','off');x=fsolve(@fun3,[1,1]',options) 3,(1)建立函数文件,命令如下:function ydot=fun5(t,y)ydot(1)=(2-3*y(2)-2*t*y(1))/(1+t^2);ydot(2)=y(1);ydot=ydot';求解微分方程,命令如下:'>> t0=0;tf=5;x0=[0,1];[t,y]=ode45(@fun5,[t0,tf],x0);[t,y](2) (1)建立函数文件,命令如下:function ydot=fun6(t,y)ydot(1)=cos(t)+(5*y(1)*cos(2*t))/(t+1)^2-y(2)-y(3)/(3+sin(t)); ydot(2)=y(1);ydot(3)=y(2);ydot=ydot';求解微分方程,命令如下:>> t0=0;tf=5;x0=[0,1];[t,y]=ode45(@fun5,[t0,tf],x0);[t,y]4,】建立函数文件命令如下:function fx=max(x)fx=-1*(sin(x)+cos(x^2));求最大值,程序如下:>> [x,y]=fminbnd(@mymax,0,pi)5,编写目标函数M文件,命令如下:function f=topm(x)f=-1*x*(3-2*x)^2;设定约束条件,并调用fmincon函数求解此约束最优化问题,程序如下:>>x0=[0];A=[1];b=[];Ib=[0];options=optimset('Display','off');[x,y]=fminco n(@top,x0,A,b,[],[],Ib,[],[],options)。
matlab简明教程第六章答案

m a t l a b简明教程第六章答案本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March第6章习题参考答案1. 假设x = [-3, 0, 0, 2, 5, 8]且y = [-5, -2,0, 3, 4, 10]。
通过手算得到以下运算的结果,并使用MATLAB检验计算的结果。
(1) z = y<~x(2)z = x&y(3) z = x|y(4) z = xor(x,y)参考答案: (1) z = [1, 1, 1, 0, 0, 0];(2) z = [1, 0, 0, 1, 1, 1];(3) z = [1, 1, 0, 1, 1, 1];(4) z = [0, 1, 0, 0, 0, 0]2. 在MATLAB中使用一个循环确定:如果用户最初在一个银行帐户中存储$10000,并且在每年的年终再存储$10000(银行每年支付6%的利息),那么账户上要积累$1000000要需要多长时间。
参考答案: 33年。
3.某个特定的公司生产和销售高尔夫手推车。
每周周末,公司都将那一周所生产的手推车转移到仓库(库存)之中。
卖出的所有手推车都是从库存中提取。
这个过程的一个简单模型为:I (k + 1) = P(k) + I (k) - S(k)其中:P(k) = 第k周所生产的手推车数量;I (k) = 第k周库存中的手推车数量;S(k) = 第k周所卖出的手推车数量;以下为10周计划中的每周销售额;假设每周的产量都基于前一周的销售额,所以有P(k) = S(k - 1)。
假设第一周的产量为50辆手推车:即,P(1) = 50。
编写一个MATLAB程序计算:10周之内每周库存之中的手推车数量或者计算手推车库存数量减少到0为止的时间,并同时绘制图形。
针对以下两种情况运行该程序:(1)初始库存为50辆手推车,所以I(1)= 50;(2)初始库存为30辆手推车,所以I (1) = 30。
matlab仿真课后习题

第一章习题3.请指出以下的变量名(函数名、M文件名)中,哪些是合法的Abc 2004x lil-1 wu_2004 a&b _xyz 解:合法的变量名有:Abc wu_20044.指令窗操作(1)求[12+2×(7-4)]÷32的运算结果解:>> [12+2*(7-4)]/3^2ans =2(2)输入矩阵A=[1,2,3;4,5,6;7,8,9],观察输出。
解:>> A=[1,2,3;4,5,6;7,8,9]A =1 2 34 5 67 8 9(3)输入以下指令,观察运算结果;clear;x=-8::8;y=x';X=ones(size(y))*x;Y=y*ones(size(x));R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;mesh(X,Y,Z);colormap(hot)xlabel('x'),ylabel('y'),zlabel('z')解:7.指令行编辑(1)依次键入以下字符并运行:y1=2*sin*pi)/(1+sqrt(5))解:>>y1=2*sin*pi)/(1+sqrt(5))y1 =(2)通过反复按键盘的箭头键,实现指令回调和编辑,进行新的计算;y2=2*cos*pi)/(1+sqrt(5))解:>>y2=2*cos*pi)/(1+sqrt(5))y2 =11.编写题4中(3)的M脚本文件,并运行之。
解:第二章习题1.在指令窗中键入x=1::2和y=2::1,观察所生成的数组。
解:>> x=1::2 x =>> y=2::1 y =Empty matrix: 1-by-02.要求在[0,2π]上产生50个等距采样数据的一维数组,试用两种不同的指令实现。
解: y1=0:2*pi/49:2*pi y2=linspace(0,2*pi,50)3.计算e -2t sint ,其中t 为[0,2π]上生成的10个等距采样的数组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制系统仿真第六章课后题作业6.1在图6.1中,已知单位负反馈系统被控对象的传递函数为)1001.0)(11.0()(++=s s s K s G 试编写matlab 程序,设计系统的超前矫正器Gc(s),要求:1)在斜坡信号r (t)=2t 作用下,系统的稳态误差ess<=0.002;2)校正后系统的相位裕度Pm 范围为:45~55;3)绘制系统校正后的bode 图和阶跃响应曲线。
程序:>> s=tf('s');>> G=1000/(s*(0.1*s+1)*(0.001*s+1));>> margin(G) % 绘制校正前的bode 图>> figure(2)>> sys=feedback(G,1);>> step(sys) %绘制校正前的单位阶跃响应曲线>> [Gm,Pm]=margin(G); %该句值计算bode图的增益裕量Gm和相位裕量Pm >> [mag,phase,w]=bode(G); %该句只计算bode图上多个频率点w对应的幅值和相位>> QWPm=50; %取矫正后的相位为50>> FIm=QWPm-Pm+5;>> FIm=FIm*pi/180;>> alfa=(1-sin(FIm))/(1+sin(FIm));>> adb=20*log10(mag);>> am=10*log10(alfa);>> wc=spline(adb,w,am);>> T=1/(wc*sqrt(alfa));>> alfat=alfa*T;>> Gc=tf([T 1],[alfat 1]) %校正器的传递函数Transfer function:0.01794 s + 1-------------0.00179 s + 1>> figure(3)>> margin(Gc*G) % 系统矫正后的bode图>> figure(4)>> step(feedback(Gc*G,1)) % 校正后的单位阶跃响应曲线作业6.2在图6.1中,已知单位负反馈系统被控对象的传递函数为)102.0)(11.0()(++=s s s K s G 试编写matlab 程序,设计系统的滞后校正器Gc (s ),要求:1) 在斜坡信号r(t)=t 作用下,系统的稳态误差ess 01.0≤;2) 校正后系统的相位裕度Pm 范围为:40~50;3) 绘制系统矫正前后的bode 图和阶跃响应曲线。
计算K ess=1/K<=0.01 K>=100 取K=100程序如下:>> s=tf('s');>> G=100/(s*(0.1*s+1)*(0.02*s+1));>> margin(G) %绘制校正前的bode 图如下图示,这是一个不稳定的系统。
>> figure(2)>> step(feedback(G ,1))可以看出系统的动态响应不稳定,处于震荡发散的状态。
>> P0=45;>> fic=-180+P0+5;>> [mu,pu,w]=bode(G);>> wc2=spline(pu,w,fic);>> d1=conv(conv([1 0],[0.1 1]),[0.02 1]);>> na=polyval(100,j*wc2);>> da=polyval(d1,j*wc2); %该句是用j*wc2代替多项式中的s >> G1=na/da;>> g1=abs(G1); %abs()函数是取绝对值,这里表示求复数G1的模>> L=20*log10(g1);>> beta=10^(L/20); T=1/(0.1*wc2);>> betat=beta*T;>> Gc=tf([T 1],[betat 1])Transfer function:1.558 s + 1-----------20.27 s + 1>> figure(3)>> margin(Gc*G)>> figure(4)>> step(feedback(Gc*G,1))作业6.3在图6.1中,已知单位负反馈系统被控对象的传递函数为)2)(1()(++=s s s K s G 试编写matlab 程序,设计系统的滞后-超前校正器Gc(s),要求:1) 在单位斜坡信号r(t)=t 作用下,系统的速度误差系数Kv=20s-1;2) 校正后系统的实际相位裕量Pm 范围为:42~58;3) 校正后系统的实际剪切频率wc2>=1.3rad/s;4) 绘制系统校正前后的bode 图和阶跃响应曲线。
由题知 202)2)(1(lim )(lim 00==++==→→K s s s K s s sG Kv s s K=40 程序如下:先绘制校正前的bode 图和单位阶跃响应曲线,再绘制校正后的 第一种>> s=tf('s');>> G0=40/(s*(s+1)*(s+2));>> figure(1)>> margin(G0)>> figure(2)>> step(feedback(G0,1))校正前系统的增益裕量Gm=-16.5,相位裕量Pm=-40.4都是负值,系统不稳定 剪切频率wc1=3.19rad/s,阶跃响应曲线是发散的。
>> wc2=4;>> [Gm,Pm,wc1]=margin(G0);>> beta=9;T1=1/(0.1*wc1);>> betat=beta*T1;>> Gc1=tf([T1 1],[betat 1]) %计算并显示滞后校正器传递函数Transfer function:7.071 s + 1-----------63.64 s + 1>> sope=G0*Gc1; %计算原系统与滞后校正器串联后的传递函数>> num=sope.num{1};den=sope.den{1};>> na=polyval(num,j*wc2);>> da=polyval(den,j*wc2);>> G=na/da;>> g1=abs(G);>> L=20*log10(g1);>> alfa=10^(L/20);>> T=1/(wc2*(alfa)^(1/2));>> alfat=alfa*T;>> Gc2=tf([T 1],[alfat 1])Transfer function:1.018 s + 1-------------0.06139 s + 1>> G=G0*Gc1*Gc2; >> sys=feedback(G,1); >> figure(3)>> margin(G)>> figure(4)>> step(sys)第二种:改进后>> s=tf('s');>> G0=40/(s*(s+1)*(s+2));>> figure(1)>> margin(G0)>> figure(2)>> step(feedback(G0,1))>> wc2=10;>> [Gm,Pm,wc1]=margin(G0);>> beta=9;T1=1/(0.1*wc1);>> betat=beta*T1;>> Gc1=tf([T1 1],[betat 1]); %¼ÆËã²¢ÏÔʾÖͺóУÕýÆ÷´«µÝº¯Êý>> n1=conv([T1 1],[0 40]);>> d1=conv(conv(conv([1 0],[1 1]),[1 2]),[betat 1]);>> na=polyval(n1,1i*wc2);>> da=polyval(d1,1i*wc2);>> G=na/da;>> g1=abs(G);>> L=20*log10(g1);>> alfa=10^(L/20);>> T=1/(wc2*(alfa)^(1/2)); >> alfat=alfa*T;>> Gc2=tf([T 1],[alfat 1]); >> G=G0*Gc1*Gc2;>> sys=feedback(G,1);>> figure(3)>> margin(G)>> figure(4)>> step(sys)作业6-4在图6.1中,已知受控对象为一个带延迟的惯性环节,其传递函数为 e s s s G 71176)(-+= 试编写matlab 程序,用Ziegler-Nichols 经验整定公式中的两种方法,分别计算P ,PI ,PID 控制器的参数,并进行阶跃响应仿真。
由传递函数知:比例系数K=6,惯性时间常数T=17.纯延迟时间常数t=7.可采用Ziegler-Nichols 经验整定公式中阶跃响应整定法。
ττττττ5.0,2,2.1,3,9.0,======PIDTd PIDTi K T PIDKp PITi K T PIKp K T PKp >> K=6;T=17;tau=7;>> s=tf('s');>> Gz=K/(T*s+1);>> [np,dp]=pade(tau,2);>> G1=tf(np,dp);>> G=Gz*G1;>> Pkp=T/(K*tau) % 计算比例控制器的KpPkp =0.4048>> step(feedback(Pkp*G,1)),hold on>> PIKp=0.9*T/(K*tau);>> PITi=3*tau; %计算比例积分控制器的Kp和Ti >> PIGc=PIKp*(1+1/(PITi*s))Transfer function:7.65 s + 0.3643---------------21 s>> step(feedback(PIGc*G,1)),hold on>> PIDKp=1.2*T/(K*tau);>> PIDTI=2*tau;>> PIDTd=0.5*tau;>> PIDGc=PIDKp*(1+1/(PIDTI*s)+PIDTd*s/((PIDTd/10)*s+1))Transfer function:26.18 s^2 + 6.97 s + 0.4857---------------------------4.9 s^2 + 14 s>> step(feedback(PIDGc*G,1)),hold on>> [PIDKp,PIDTI,PIDTd]ans =0.4857 14.0000 3.5000>> gtext('p'); %在曲线上打印文字>> gtext('PI');>> gtext('PID');。