您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > matlab结业作业
《Matlab/Simulink与控制系统仿真》结业作业一、必做题Matlab学习心得体会:本学期我们新开了一门MATLAB/Simulink与控制系统仿真的课程,虽说是这个学期才开始学习,但是我们却对MATLAB这个软件的基本使用一点都不陌生。而本学期的专门学习,更让我获益匪浅。第一部分是利用MATLAB函数来对控制系统进行分析。①例如要求取一个系统的阶跃响应时,我就可以调用MATLAB中的step函数②MATLAB在稳定性分析应用时,通过直接求根函数roots来判定系统的稳定性③在利用MATLAB分析系统的根轨迹时,使用rlocus函数来求取根轨迹图,使用pzmap函数求取系统的传递函数零极点④计算给定一组根的根轨迹增益函数[k,poles]=rlocufind(sys);[k,poles]=rlocfind(sys,p)⑤MATLAB在稳定性分析应用时,也常通过使用用于计算系统稳定裕度的margin函数来完成,它可以从频率响应数据中计算出幅值裕度、相角裕度以及对应的频率⑥对于使用MATLAB来对系统进行频域响应的分析,又往往提供了绘制函数nyguist和bode来绘制系统的奈奎斯特曲线图和伯德图⑦其他:grid%添加栅格holdon%保持,继续在原图绘画title%添加标题legend(x,y)%添加文字标注gyext('TEXT')%在任意可选位置添加文字信息xlabel(x,y);ylabel(x,y)%添加坐标轴分割图形窗口subplot(1,2,1)%分割为一行两列,并即将绘制第一个第二部分是利用MATLAB的Simulink模块来对控制系统进行建模仿真。Simulink是一个对动态系统(包括连续系统、离散系统和混合系统)进行建模、仿真和综合分析的集成软件包,是MATLAB的一个附加组件,其特点是模块化操作、易学易用,而且能够使用MATLAB提供的丰富的仿真资源。对于一个给定的控制系统结构图,需要通过Simulink模块来建立该系统的动态模型。下面我就阐述一下,我在实验过程中常使用的一些模块。Continuous(连续模块):Derivative对输入信号微分Integrator对输入信号积分TransferFcn分子分母以多项式表示的传递函数Discontinuous(非连续模块):DeadZone设定死区范围Saturation设置输入信号的正负限幅值模拟环节的饱和非线性特性MathOperations(数学运算模块库):Sum求和Add可加减标量,向量和矩阵Gain增益(输入信号乘以常数)Ports&Subsystems(端口和子系统模块库):In1输入端口Out1输出端口Sinks(接收器模块):ToWorkspace将输出写入工作空间Scope示波器Sources(输入源模块库):Ramp产生一个常数增加或减小的信号(斜坡函数信号)Step产生幅值和起始时间可调的阶跃信号第三部分是MATLAB中常用的工具。根轨迹分析与设计工具rltool:rltool是图形化的交互式工具,可以打开工作空间的单输入单输出(SISO)系统模型,分析其根轨迹,并且允许用户在根轨迹图上直接放置零极点,完成对系统的校正设计。操作:(1)在MATLAB工作空间中建立好控制系统的数学模型sys;(2)在MATLAB命令窗口中输入“rltool(sys)”,得到控制系统sys的根轨迹设计GUI窗口,对系统进行分析。线性时不变系统分析的图形用户界面LTIViewer:在MATLAB的commandWindow中,建立LTI对象,之后使用LTIViewer可以绘制LTI对象的单位阶跃响应曲线(Step)、单位脉冲响应曲线(Impulse)、波特图(Bode)、奈奎斯特图(Nyquist)以及零极点图(Pole/Zero)等。操作:(1)在MATLAB工作空间中建立好控制系统的数学模型;(2)在命令窗口中输入“LTIView”,调出LTIView窗口,对系统进行分析。总结:通过本学期Matlab/Simulink与控制系统仿真这门课程的学习,我真正体会到应用MATLAB软件对控制系统分析的方便性、有效性;虽然我可能仅仅是简单地入了个门,但即使是这样我也感觉已经收获了不少东西。当然仅凭短时间的学习不可能掌握得很熟,所以在今后的时间里,我也会多查阅资料、多去实践,争取掌握更多更全的操作技能。二、选做题1、一单位负反馈控制系统的开环传递函数为sssks177)(G23(1)绘制k=10、100时闭环系统的阶跃响应曲线,并计算稳态误差、上升时间、超调量和调节时间;(2)绘制k=1000时闭环系统的阶跃响应曲线,并与k=10、100所得结果相比较,分析增益系数与系统稳定性的关系;(3)利用roots命令确定使系统稳定时k的取值范围。程序:K=10时:clc;clearall;num=[10];den=[171710];sys=tf(num,den);roots(den)pzmap(sys);[y,t,x]=step(num,den);plot(x,y);gridon;%计算系统的超调量y_stable=1;max_response=max(y);sigma=(max_response-y_stable)/y_stable%计算系统上升时间fori=1:length(y)ify(i)y_stablebreak;endendtr=x(i)%计算系统的调整时间fori=1:length(y)ifmax(y(i:length(y)))=1.02*y_stableifmin(y(i:length(y)))=0.98*y_stablebreak;endendendts=x(i)ans=-3.0755+1.5228i-3.0755-1.5228i-0.8491+0.0000isigma=-5.8847e-05tr=12.0391ts=5.18100246810121400.10.20.30.40.50.60.70.80.91K=100时:clc;clearall;num=[10];den=[171710];sys=tf(num,den);roots(den)pzmap(sys);[y,t,x]=step(num,den);plot(x,y);gridon;%计算系统的超调量y_stable=1;max_response=max(y);sigma=(max_response-y_stable)/y_stable%计算系统上升时间fori=1:length(y)ify(i)y_stablebreak;endendtr=x(i)%计算系统的调整时间fori=1:length(y)ifmax(y(i:length(y)))=1.02*y_stableifmin(y(i:length(y)))=0.98*y_stablebreak;endendendts=x(i)ans=-6.6925+0.0000i-0.1537+3.8624i-0.1537-3.8624isigma=0.7608tr=0.5642ts=24.59300510152025303500.20.40.60.811.21.41.61.8K=1000:clc;clearall;num=[1000];den=[17171000];[y,t,x]=step(num,den);plot(x,y);gridon;0510152025-8-6-4-2024x1024在使系统稳定的条件下,k值越大,则系统越稳定。取k=120时:clc;clearall;num=[120];den=[1717120];sys=tf(num,den);roots(den)pzmap(sys);[y,t,x]=step(num,den);plot(x,y);gridon;010002000300040005000600070008000-2-10123456x1024此时系统不稳定。取k=119时:clc;clearall;num=[119];den=[1717119];sys=tf(num,den);roots(den)pzmap(sys);[y,t,x]=step(num,den);plot(x,y);gridon;010203040506000.511.52此时系统处于临界稳定,固K119。2、2、一单位负反馈控制系统的开环传递函数为sssksG17723。(1)利用MATLAB建立上述控制系统的3类数学模型;(2)利用MATLAB绘制系统的单位阶跃响应曲线和单位冲激响应曲线;(3)利用LTIViewer工具绘制系统的单位阶跃响应曲线和单位冲激响应曲线。解:(1)由题建立系统模型,代码如下:clearall;num=[1.53];den=[0.251.2510];sys_tf=tf(num,den)[z,p,k]=tf2zp(num,den)sys_zpk=zpk(z,p,k)[A,B,C,D]=zp2ss(z,p,k);sys_ss=ss(A,B,C,D)程序运行结果如下:sys_tf=1.5s+3-----------------------0.25s^3+1.25s^2+sContinuous-timetransferfunction.%%%%%传递函数模型%%sys_zpk=6(s+2)-------------s(s+4)(s+1)Continuous-timezero/pole/gainmodel.%%%%%系统的零极点增益模型%%sys_ss=a=x1x2x3x1000x22-5-2x3020b=u1x11x21x30c=x1x2x3y1003d=u1y10Continuous-timestate-spacemodel.%%%%%%系统的状态空间模型%%(2)由题阶跃函数MATLAB程序代码如下:figure(1)step(sys_tf);gridonfigure(2)impulse(sys_tf);gridon程序运行结果如下图:调用LTIview函数,运行函数PlotTypes选项,选择Step,impulse。运行结果如下图:3.一单位负反馈控制系统的开环传递函数为G(s)=k/(0.1s^2+s)。(1)若系统的阻尼系数ζ为0.5,计算此时的系统增益k;(2)当k=5时,绘制闭环系统的单位阶跃响应曲线,并计算上升时间、调节时间、超调量以及静态误差。(1)已知开环传递函数G(s)=k/(0.1s^2+s),对比二阶系统的典型传递函数G(s)=C(s)/R(s)=(k/T)/(s^2+s/T+k/T)得ζ=1/2√kT所以由ζ为0.5得到k=10;(2)k=5时:程序编写如下:clc;clear;%%求阶跃响应曲线num=[5];den=[0.1,1,5];[y,t,x]=step(num,den)plot(x,y);gridon;00.20.40.60.811.21.400.20.40.60.811.21.4阶跃响应曲线%%计算上升时间fori=1:length(y)ify(i)y_stablebreak;endendtr=x(i)%%计算系统的调节时间------取误差带为2fori=1:length(y)ifmax(y(i:length(y)))=1.02*y_stableifmin(y(i:length(y)))=0.98*y_stableendendendts=x(i)运行结果:上升时间tr=0.4748调节时间ts=1.1926%%计算超调量y_stable=1;max_response=max(y);sigma=(max_response-y_stable)/y_stable运行结果:sigma=0.0432求静态误差:利用simulink建模得error50.1s+s2TransferFcnStepScopeAdd5、某单位负反馈控制系统的动态结构图如下:试完成如下任务:(1)在MATLAB中建立上述控制系统的数学模型;(2)绘制系统的根轨迹曲线;(3)
本文标题:matlab结业作业
链接地址:https://www.777doc.com/doc-2887762 .html