控制系统数字仿真实验报告班级:机械1304姓名:***学号: **********实验一数字仿真方法验证1一、实验目的1.掌握基于数值积分法的系统仿真、了解各仿真参数的影响;2.掌握基于离散相似法的系统仿真、了解各仿真参数的影响;3.熟悉MATLAB语言及应用环境。
二、实验环境网络计算机系统(新校区机电大楼D520),MATLAB语言环境三实验内容(一)试将示例1的问题改为调用ode45函数求解,并比较结果。
实验程序如下;function dy = vdp(t,y)dy=[y-2*t/y];end[t,y]=ode45('vdp',[0 1],1);plot(t,y);xlabel('t');ylabel('y');(二)试用四阶RK 法编程求解下列微分方程初值问题。
仿真时间2s ,取步长h=0.1。
⎪⎩⎪⎨⎧=-=1)0(2y t y dt dy 实验程序如下:cleart0=0;y0=1;h=0.1;n=2/h;y(1)=1;t(1)=0;for i=0:n-1k1=y0-t0^2;k2=(y0+h*k1/2)-(t0+h/2)^2;k3=(y0+h*k2/2)-(t0+h/2)^2;k4=(y0+h*k3)-(t0+h)^2;y1=y0+h*(k1+2*k2+2*k3+k4)/6;t1=t0+h;y0=y1;t0=t1;y(i+2)=y1;t(i+2)=t1;endy1t1figure(1)plot(t,y,'r');xlabel('t');ylabel('y');(三)试求示例3分别在周期为5s的方波信号和脉冲信号下的响应,仿真时间20s,采样周期Ts=0.1。
实验程序如下:clear% Create system modelA=[-0.5572 -0.7814 ;0.7814 0];B=[1;0];C=[1.9691 6.4493];D=0;sys=ss(A,B,C,D);% Pulse response of the system subplot(221)[u,t]=gensig('pulse',5,20,0.1)plot(t,u);hold onlsim(sys,u,t);xlabel('t');ylabel('Y');title('Pulse response of the system'); hold offgrid% Square response of the system subplot(222)[u,t]=gensig('square',5,20,0.1)plot(t,u);hold onlsim(sys,u,t);xlabel('t');ylabel('Y');title('Square response of the system'); hold offgrid四实验体会这是第一次做matlab实验,通过实验,基本熟悉了matlab的基本操作,同时,也可以仿照所给例子来利用数值积分的函数进行解常值系统微分方程,在误差允许范围内,相对于elur法来说,代码更简单点。
实验二SIMULINK动态仿真一、实验目的1. 掌握SIMULINK动态仿真;2. 熟悉MATLAB语言及应用环境二、实验环境网络计算机系统,MATLAB语言环境三、实验内容(一)Simulink的基本操作(1)运行Simulink(2)常用的标准模块(3)模块的操作(二)系统仿真及参数设置(1)算法设置(Solver)(2)工作空间设置(Workspace I/O)某系统框图如图所示,试用SIMULINK进行仿真,并比较在无饱和非线性环节下系统仿真结果。
四、实验体会通过本次实验,我体会到了simlink强大的仿真建模功能,通过仿真实验,我们可以观测到部分模块对系统整体的影响,从而可以更好的调节系统,使其工作在最佳状态。
同时,本次实验也让我对matlab的使用进一步熟悉起来。
实验三PID控制器设计一实验目的1.了解PID控制原理,掌握相应PID控制器设计仿真程序的应用;2.掌握计算机辅助系统瞬态性能指标的计算;3.掌握计算机辅助系统频率性能分析;二实验环境网络计算机系统(新校区机电大楼D520),MATLAB语言环境三实验内容已知如图所示单位反馈系统要求:1.绘制系统的开环Nyquist图和Bode图,并判断该闭环系统是否稳定。
2.应用Ziegler—Nichols方法设计P控制器、PI控制器和PID控制器。
3.计算比较原系统与P控制系统、PI控制系统、PID控制系统的瞬态性能指标。
实验程序:clear clcsys=tf([500 5000],[1 33 337 1775 4950 5000]);figure(1)nyquist(sys)[Re,Im,w1]=nyquist(sys);grid on figure(2)bode(sys)[mag,phase,w2]=bode(sys);grid onsysclose=feedback(sys,1);[z,p,k]=zpkdata(sysclose,'v')实验二function [sysc,Kp,Ti,Td]=pidmargin(sys,type) margin(sys)[Gm,Pm,Wg,Wc]=margin(sys);Kcr=Gm;Wcr=Wg;Tcr=2*pi/Wcr;switch typecase 1disp('P Controler')Kp=0.5*KcrTi='No Design'Td='No Design'sysc=Kp;case 2disp('PI Controler')Kp=0.4*KcrTi=0.8*TcrTd='No Design'sysc=Kp*(1+tf(1,[Ti,0]));case 3disp('PID Controler')Kp=0.6*Kcr;Ti=0.5*TcrTd=0.12*Tcrsysc=Kp*(1+tf(1,[Ti,0])+tf([Td,0],1)); end实验三clfnum=[500 5000];den=[1 33 337 1775 4950 5000]sys=tf(num,den);sysgroup=feedback(sys,1);%Design P-PI -PIDControlerfor i=1:3type=i;[sysc,Kp,Ti,Td]=pidmargin(sys,type);sysopen=sysc*sys;sysclose=feedback(sysopen,1);sysgroup=append(sysgroup,sysclose);endclffor i=1:4subplot(2,2,i)step(sysgroup(i,i))step(sysgroup(i,i))[num,den]=tfdata(sysgroup(i,i),'v')Finalvalue=polyval(num,0)/polyval(den,0)% Compute overshoot[y,t]=step(sysgroup(i,i));[Ymax,k]=max(y);Peaktime=t(k)OvershootPercent=100*(Ymax-Finalvalue)/Finalvaluen=1;while y(n)<0.1*Finalvalue,n=n+1;endm=1;while y(m)<0.9*Finalvalue,m=m+1;endRiseTime=t(m)-t(n)% Compute settling timer=length(t);while (y(r)>0.98*Finalvalue & y(r)<1.02*Finalvalue) r=r-1;endSettlingTime=t(r)end123400.20.40.60.8Step ResponseTime (seconds)A m p l i t u d e024680.51Step ResponseTime (seconds)A m p l i t u d e24680.511.5Step ResponseTime (seconds)A m p l i t u d e0123450.511.5Step ResponseTime (seconds)A m p l i t u d e实验心得体会在第二个实验中主程序通过调用函数m 文件pidmargin.m ,实现了PID 控制器的设计,并在单位阶跃函数作用下的系统输出,列于同一张表,便于分析;第三个实验在第二个实验的基础上,将系统在阶跃函数作用下的状态参数返回,从而实现经PID 控制器修正后的系统与原系统进行量化对比,显示校正效果。
本次实验,我学会了如何运用matlab 画系统的Bode 图和Nyquist 图,很大程度上简化了系统稳定性、动态特性等相关问题的求解。
实验四 模糊逻辑控制器设计一、实验目的4.了解模糊逻辑控制原理;5.掌握MATLAB 辅助模糊逻辑控制器设计流程;二、实验环境网络计算机系统,MATLAB 语言环境三、实验内容、要求设有前后两车(目标车与本车),其速度y 与油门控制输入u 间的传递函数均为427.024)()(2+**+=s s s U s Y 现要求设计一模糊控制器,使得1) 控制汽车(本车)由静止启动,追赶200m 外时速90km 的汽车(目标车)并与其保持30m 距离。
2) 目标车速度改为时速110km 时,仍与其保持30m 距离。
3) 目标车速度改为时速70km 时,仍与其保持30m 距离。
四、实验步骤第一步 利用simulink 构造系统仿真模型。
根据题意,可做出系统结构图如图1所示。
图中,为了控制系统设计方便,将两车的距离相减后再减掉30,用模糊控制使其趋于0。
图1 系统结构图进一步,利用simulink构造了系统仿真模型,如图2所示。
考虑到实际的汽车速度存在极限,系统模型中加入了饱和非线性模块进行模拟。
图中的e和u除以20 是为了使输出量限定在10左右。
然后,将系统模型以文件f-car.mdl保存。
图2 系统simulink仿真模型第二步设计模糊逻辑规则(参考下文,不要自己再设计)。
以误差量(两车距离)及误差对时间的变化量作为输入进行模糊规则设计。