最新范文 方案 计划 总结 报告 体会 事迹 讲话 倡议书 反思 制度 入党

实验二典型系统的时域响应分析实验仿真报告答案分析解析

日期:2020-06-05  类别:最新范文  编辑:学科吧  【下载本文Word版

实验二典型系统的时域响应分析实验仿真报告答案分析解析 本文关键词:实验,时域,分析,仿真,响应

实验二典型系统的时域响应分析实验仿真报告答案分析解析 本文简介:实验二典型系统的时域响应分析1.实验目的1)通过用MATLAB及SIMULINK对控制系统的时域分析有感性认识。2)明确对于一阶系统,单位阶跃信号、单位斜坡信号以及单位脉冲信号的响应曲线图。3)对于二阶系统阶跃信号的响应曲线图以及不同阻尼比、不同自然角频率取值范围的二阶系统曲线比较图。4)利用MAT

实验二典型系统的时域响应分析实验仿真报告答案分析解析 本文内容:

实验二

典型系统的时域响应分析

1.

实验目的

1)

通过用MATLAB

及SIMULINK

对控制系统的时域分析有感性认识。

2)

明确对于一阶系统,单位阶跃信号、单位斜坡信号以及单位脉冲信号的响应曲线图。

3)

对于二阶系统阶跃信号的响应曲线图以及不同阻尼比、不同自然角频率取值范围的二阶系统曲线比较图。

4)

利用MATLAB

软件来绘制高阶控制系统的零极点分布图,判断此系统是否有主导极点,能否用低阶系统来近似,并将高阶系统与低阶系统的阶跃响应特性进行比较

5)编制简单的M文件程序。

2.

实验仪器

PC计算机一台,MATLAB软件1套

3.

实验内容

1)一阶系统的响应

(1)

一阶系统的单位阶跃响应

在SIMULINK

环境下搭建图1的模型,进行仿真,得出仿真曲线图。

理论分析:C(s)=1/[s(0.8s+1)]由拉氏反变换得h(t)=1-e^(-t/0.8)

(t>=0)

由此得知,图形是一条单调上升的指数曲线,与理论分析相符。

(2)

一阶系统的单位斜坡响应

在SIMULINK环境下搭建图2的模型,将示波器横轴终值修改为12进行仿真,得出仿真曲线图。

理论分析:C(s)=1/[s^2(4s+1)]可求的一阶系统的单位斜坡响应为c(t)=(t-4)+4e^(-t/4)

e(t)=r(t)-c(t)=4-4e^(-t/4)

当t=0时,e(t)=0,当趋于无穷时,误差趋于常值4.

3)

一阶系统的单位脉冲响应

在medit

环境下,编译一个.m

文件,利用impulse()函数可以得出仿真曲线图。此处注意分析在SIMULINK

环境中可否得到该曲线图。

理论分析:C(s)=5/(0.8s+2)=(5/2)/(0.4s+1)可求的g(t)=6.25e^(-t/0.4),是一个单调递减的函数。

两种环境下得到的曲线图不一致。

2)

二阶系统的单位阶跃响应

二阶系统的闭环传递函数标准形式为

其阶跃响应可以分以下情况解出

①当时,系统阶跃响应为

②当时,系统阶跃响应为

其中,

③当时,系统阶跃响应为

④当时,系统阶跃响应为

其中,

(1)自然角频率

选取不同阻尼比0,0.2,0.4,0.6,0.8,1.0,2.0,用MATLAB得到二阶系统阶跃响应曲线。

2.00

0.8

0.6

=0.4

=0.2

=0

二阶系统对系统响应的影响

阻尼比

0

系统状态

无阻尼状态

欠阻尼状态

临界阻尼状态

过阻尼状态

对系统响应的影响

系统的暂态响应是恒定振幅的周期函数

系统的暂态响应是振幅随时间按指数规律衰减的周期函数,阻尼比越大,振幅衰减的越快

系统的单位阶跃响应随时间的推移单调增长,在时间趋于无穷大时,系统响应的最大超调量为0

暂态响应随时间按指数规律单调衰减。系统无超调,但过程缓慢。

分析:当wn一定时,?越小,振荡越厉害,当?增大到1以后,曲线变为单调上升。

(2)阻尼比

选取不同自然角频率0.2,0.4,0.6,0.8,1.0,用MATLAB得到二阶系统阶跃响应曲线,并分析比较不同自然角频率对应的系统输出的情况。

本题采用第三种,在SIMULINK

环境下搭建图1的模型,进行仿真,二阶系统阶跃响应曲线。

0.2

0.4

0.6

0.8

1.0

分析:当?一定时,且处于欠阻尼状态时,wn越大,则系统达到稳定时,所需要的时间越短。

(3)

系统动态性能分析

对于表示的二阶系统

上升时间(s)

峰值时间(s)

最大超调量

调整时间(s)

曲线图

0.586

0.829

12%

1.57

公式计算

0.577

0.85

12%

1.60

解:wn==2,?=/4可知系统处于欠阻尼状态,由课本上的计算公式可得tr=0.577s,tp=0.85s,Mp=0.12*100%,因为0〈?〈0.8,所以ts=1.60s.

结论:通过比较得知,tp,Mp,ts,的理论值与图片中的值基本一致。

3)高阶系统的单位阶跃响应

已知高阶系统的闭环传递函数为

用下式低阶系统近似原系统

解:p1=-5,p2=-1.5+2.5j,p3=-1.5-2.5j,p4=-0.3+j,p5=-0.3-j.由于闭环极点与系统的原闭环极点传递函数之极点相同,零点则不同。

对于高阶系统,极点均为负实数,而且无零点,则系统的暂态响应一定是非振荡的,响应主要取决于据虚轴最近的极点,。若其他极点比最近极点的最大距离大5倍以上,则可以忽略前者对系统暂态过程的影响。P1距p2没有5倍以上,而p3和p2不能看成一对偶极子,由于p4和p5离原点很近,所以影响也不能忽略。所以不能被低阶系统代替。

(2)利用单位阶跃响应step(

)、figure(

)和hold

on(

)等函数和指令,在medit

环境下,编译一个.m

文件,能够将原系统和降阶系统的单位阶跃响应绘制在一个图中,记录它们的响应曲线和暂态性能指标(上升时间、峰值时间、超调量以及调整时间),进行比较分析。

num=[45];

den=[1,8.6,29.8,67.4,51,45];

G=tf(num,den);

step(G);

figure(1)

hold

on

num1=[1];

den1=[1,0.6,1];

G1=tf(num1,den1);

step(G1);

hold

off

篇2:天津大学金属材料专业本科实验

天津大学金属材料专业本科实验 本文关键词:天津大学,金属材料,专业本科,实验

天津大学金属材料专业本科实验 本文简介:我系承建了本科生教学平台实验室的材料微观结构实验室,承担本专业及高分子、陶瓷、材料加工和全校有关机械类专业的实验课。每学年开出30个实验,100学时,1000余人次。同时还承担本科生和研究生毕业论文的实验任务。所开设的实验课程如下:第一部分金属学实验一金相显微试样的制备及显微镜的使用实验二金属的宏观

天津大学金属材料专业本科实验 本文内容:

我系承建了本科生教学平台实验室的材料微观结构实验室,承担本专业及高分子、陶瓷、材料加工和全校有关机械类专业的实验课。每学年开出30个实验,100学时,1000余人次。同时还承担本科生和研究生毕业论文的实验任务。

所开设的实验课程如下:

第一部分

金属学

实验一

金相显微试样的制备及显微镜的使用

实验二

金属的宏观分析

实验三

浇注条件对金属铸锭组织的影响

实验四

用热分析法建立二元合金相图

实验五

二元合金显微组织

实验六

铁碳合金在平衡状态下的显微组织

实验七

三元合金显微组织

实验八

显微照相和暗室技术

实验九

金属的塑性变形与再结晶

实验十

钢中非金属夹杂物的金相鉴定

第二部分

固态相变

实验一

奥氏体晶粒度的测定

实验二

65Mn钢奥氏体等温转变曲线的测定

实验三

碳钢的热处理与组织观察与分析

实验四

碳钢的回火与回火组织观察与分析

实验五

钢的淬透性测定

实验六

钢在热处理后的非正常组织观察

实验七

渗碳及热处理后的组织观察

实验八

各种化学热处理的组织观察

第三部分

金属物理性能

实验一

用膨胀法测定钢的相变点

实验二

用双电桥研究热处理对钢的电阻率的影响

第四部分

腐蚀电化学

实验一

恒电位仪性能测试

实验二

不同极化阻力测试方法比较

实验三

循环伏安法研究缓冲济性能

实验四

动电位扫描测定孔蚀的特征电位

实验五

腐蚀体系电化学参数的电化学阻抗谱测试

实验六

微机算计实时测试金属腐蚀速度

实验七

钝化曲线的测定

实验八

电偶腐蚀测试

实验九

阴极极化曲线的测定

实验十

钢铁表面防护涂层性能测定

第五部分

金属力学性能

实验一

金属拉伸试验

实验二

金属硬度试验

实验三

低温系列冲击试验

实验四

金属平面应变断裂韧度Klc实验

第六部分

材料现代研究方法

实验一

宏观应力的测定

实验二

立方晶体物质粉末诠释

实验三

利用X射线衍射仪进行多相物质的相分析

实验四

透射电镜结构、操作及倍率标定

实验五

金属薄膜制备方法及典型组织观察

实验六

选区电子衍射及相机常数和磁转角测定

第七部分

炉温仪表与热控制

实验一

工业用热电偶的检定

实验二

动圈仪表的安装与调校

实验三

电子电位差计的安装调校和电炉温度控制线路

实验四

“PID“炉温自动调节器的安装使用及演示

第八部分

金属材料学

实验一、二

高速钢的热处理及显微组织

实验三

铸铁的显微组织

实验四

铝合金的热处理

实验五

有色金属及合金的显微组织

篇3:Java程序设计实验报告2(弹球游戏)1

Java程序设计实验报告2(弹球游戏)1 本文关键词:弹球,程序设计,实验,报告,游戏

Java程序设计实验报告2(弹球游戏)1 本文简介:《Java语言程序设计》课程设计实习报告题目:班级:学号:姓名:同组人员:指导老师:张彬一、实验目的1、掌握Swing图形用户界面编程以及事件处理等,掌握java绘图技术。2、掌握多线程编程的基本原理,能使用Runnable、ExecutorService等接口进行线程的创建、启动等工作。3、培养独

Java程序设计实验报告2(弹球游戏)1 本文内容:

《Java语言程序设计》课程设计

实习报告

题目:

班级:

学号:

姓名:

同组人员:

指导老师:张彬

一、实验目的

1、

掌握Swing图形用户界面编程以及事件处理等,掌握java绘图技术。

2、

掌握多线程编程的基本原理,能使用Runnable、ExecutorService等接口进行线程的创建、启动等工作。

3、

培养独立查找资料,并解决问题的能力。

二、实验任务

1、

设计并编程实现弹球游戏:

用户能通过GUI组件指定生成小球的数量,每个小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力只改变小球的运动方向,小球仍按照初始速度匀速运动,且不考虑小球之间的碰撞)。

鼠标在界面中显示为方块状,玩家需按住鼠标来回移动以避开运动的小球及屏幕四周,如果鼠标碰到任一小球或者窗口四周,则游戏结束。

程序需提供计时功能,并最终显示玩家能坚持多少秒。

2、

程序要求:

(1)

具备相应界面,并通过事件编程,实现相应的GUI组件功能。

(2)

使用多线程技术,在程序窗口区域绘制小球,并以线程控制小球的移动,实现动画效果。

(3)

实现鼠标与屏幕四周,以及与小球的碰撞检测。

三、开发工具与平台

1.开发工具:Eclipse默认是一个和Jbuilder类似的Java开发工具,但它不仅仅只

是Java开发工具,只要装上相应的插件,eclipse也可作为其它语言的开发工具。如C/C++插件(CDT)。

2.开发平台:JDK1.5

四、设计思路

1.界面设计

(1)制作一个简单的面板JFrame,文件保存为bollFrame.java

其中为一public的类

bollFrame,其构造方法为:

bollFrame(int

n){

super();

setTitle(“我的弹球小游戏“);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Dimension

dimension

=

Toolkit.getDefaultToolkit().getScreenSize();//得到

电脑屏幕大小

setSize(450,450);

setLocation((dimension.width-game.getWidth())/2-250,(dimension.height-game.getHeight())/2-250);//设置面板显示基中;

this.n

=

n;

myBollPanel

=

new

bollPanel(n);//构造一个画板;

add(myBollPanel);//将画板放入JFrame

createMenu();//创建菜单;

setJMenuBar(bar);

}

(2)构造画板类,文件保存为bollPanel.java

其构造函数如下:

bollPanel(int

n){

this.n

=

n;

//

executorThread

=

Executors.newCachedThreadPool();//创建线程池;

mouse

=

new

mouseThread(mxNow,myNow,groupThread,this);//启动鼠标线程;

this.setIsOver(false);//游戏开始线程条件的判断;

for(int

i

=0

;i

myBollThread

=new

bollThread(this);

groupThread.add(myBollThread);

//executorThread.execute(myBollThread);//小球线程加入线程池;

}

addMouseListener(this);

addMouseMotionListener(this);

}

Paint()方法如下构造:

public

void

paint(Graphics

g){

if(!this.getIsOver())

//如果游戏还没结束;

{

super.paint(g);//清除原先的图像

g.setColor(Color.RED);

g.setFont(new

Font(“宋体“,Font.BOLD+Font.ITALIC,15));

g.drawString(“你已坚持:“+getT()+“S“,15,15);//计时器的显示;

for(int

i

=

0;i(getWidth()-23)||xNow(getHeight()-23)||yNow<0){//碰到上下边界;

groupThread.get(i).dy

=

-groupThread.get(i).dy;

}

groupThread.get(i).setxNow(xNow+groupThread.get(i).getdx());//

设置下一个位置;

groupThread.get(i).setyNow(yNow+groupThread.get(i).getdy());

}

}

if(isMouse){

g.drawImage(new

ImageIcon(“boll.gif“).getImage(),mxNow,myNow,40,40,this);//鼠标的图像;

}

}//end

paint();

总体界面如下:

2.逻辑设计

(1).首先,我们考虑到多个小球的运动,实质上是多线程的使用,n个小球我们就同时启动n个线程去控制每个小球的运动。因此我构造出一个类作为一个小球的线程,保存文件为bollThread.java,顾名思义,小球线程类。相关构造方法如下:

public

bollThread(bollPanel

my){

this.myPanel

=

my;

xStart

=

data.nextInt(200);//随机产生开始位置;

yStart

=

data.nextInt(200);

setxNow(xStart);////设置现在的位置;

setyNow(yStart);

setdx();//设置随机方向使用;注意:若不设置为随机,则所有小球将相同一个方向运动;

setdy();

}

(2)再次,小球的出现需要有载体,这就是画板,前面界面设置中已提到过,通过让多个小球共享一个画板,以及通过线程控制小球的重绘,最后通过画板显示给用户。

(3)在第(2)点中提到的画板上我们需要实现鼠标的监听,以下给出几个重要的鼠标事件监听:

public

void

mousePressed(MouseEvent

e)

{//单击启动鼠标事件;

if(e.getButton()==MouseEvent.BUTTON1){

copy.schedule(new

task(),0,1000);//启动定时器;

for(int

i

=0

;i(this.getWidth()-30)||mxNow(this.getHeight()-30)||myNow<=0){//鼠标是否碰到边界;

//

executorThread.shutdown();

this.setIsOver(true);

copy.cancel();

JOptionPane.showMessageDialog(null,“你撞墙了,下次小心点。。。游戏结束“,“提示“,JOptionPane.OK_OPTION);

this.removeMouseListener(this);

this.removeMouseMotionListener(this);

}

for(int

i

=0

;i

int

xNow

=groupThread.get(i).getxNow();

int

yNow

=

groupThread.get(i).getyNow();

if(isPeng(xNow,yNow,mxNow,myNow)){

//

executorThread.shutdown();

this.setIsOver(true);

copy.cancel();

JOptionPane.showMessageDialog(null,“if(你撞球了){“+“/n“+“挑战失败,游戏结束.}“,“提示“,JOptionPane.OK_OPTION);

//System.exit(0);

this.removeMouseListener(this);

this.removeMouseMotionListener(this);

}

//鼠标的上下左右边和

球碰撞的情况,

}

}

(4)

如果游戏开始后我们突然松开鼠标,让我们控制的小球(或“眼睛“)停留在最后松开的点上,那么小球碰到它还会判断是否相撞吗?答案是可以的,我们可以通过编写一个鼠标线程类来实现,保存文件为mouseThread.java;让此线程在我们按下鼠标开始游戏时同时启动,在我们松开鼠标时启动判断相撞事件。

相关的构造方法如下:

mouseThread(int

mxNow,int

myNow,Listgroup,bollPanel

bollpane){

this.mxNow

=

mxNow;//传入鼠标现在位置;

this.myNow

=

myNow;

this.groupThread

=

group;//传入小球线程组;

this.bollpane

=

bollpane;//传入画板对象;

}

3.

程序测试

在程序测试中,先后测试出了,以下几个注意点:

A.

在判断小球与鼠标控制的小球(“眼睛”)相撞时,条件中用到两点之间的距离问题,发现条件不能是两点距离刚好等于两相撞物体半径和,此条件太苛刻,可能引起判断的失误(概率蛮高的呵呵),而应该是小于半径和。

B.

.在小球碰撞或控制的小球(”眼睛“)碰到边界游戏结束时,已经停止了线程,小球竟然还能动,而且是缓慢移动,但是判断是否碰撞及边界问题都能正常执行,与我所意料的完全相反,到现在也不知道是怎么回事,只能在paint()

里进行条件判断,只让bollPanel留下最后一次的个小球及“眼睛”位置。

C.这是最后才调试出来的,也是这个游戏中较难注意到的。

就是一些boolean变量的设置:

private

boolean

isTime;//定时器是否启动;

private

boolean

isGroupThread;//所有小球线程组是否启动;

private

boolean

isMouseThread;//鼠标线程是否启动;

private

boolean

isMouse;//鼠标事件是否启动;

private

boolean

isOver;//游戏是否结束;

刚开始时并没有注意到这些,如果我点击鼠标左键开始游戏时,启动了小球线程,这时要设置变量isGroupThread

=

true标志小球线程组已启动,释放鼠标启动鼠标线程时,isMouseThread

=

true让鼠标线程来控制与小球相撞的判断,定时器也在这时响应启动

isTime

=true开始计时,若不设置这些的话,将发生以下本质上的共同错误:

:等我释放鼠标后想再次控制小球,就必须在一次启动鼠标事件,这时将重新启动一次计时器,重新启动一次小球线程组,重新启动鼠标线程;这样的结果是导致游戏的结果不确定性,没碰到小球(实际上已碰撞)它就检测碰撞结束游戏。以及计时器的计时紊乱等。

具体调试后的相关代码实现见附录.。

五、实验总结

通过这次的程序设计,我更加明白了学以致用的道理,对线程的应用使得我更好更快的掌握了线程的本质,同时,在此次的程序设计中,经过不断地调试,是我明白了一个程序或项目要做到“精致”,是是需要花多大的精力和耐心,总之,学以致用,会将学到的知识应用到实际中才是学之根本。

此次实验也更了解到了线程的知识,比如:一个线程stop后,不能再用start启动,而应当重新实例化,在start()。也就是说线程的状态转换过程(新建-就绪-运行-阻塞-死忙)是不可逆的,这是个人理解,至少从本实验中可以得到验证。

最后,感谢老师的指导和同学们对我的帮助。

6、

附录

以下是调试后的相关算法实现:

A:

public

boolean

isPeng(int

xNow,int

yNow,int

mxNow,int

myNow){//利用两点之间的距离算法,判断是否撞球

int

x1

=

xNow+15,y1

=

yNow+15;

int

x2

=

mxNow+20,y2

=

myNow+20;

int

mulx

=

x1-x2,muly

=

y2

-y1;

double

sum

=

Math.pow(muly,2)+Math.pow(mulx,2);

if(sum

return

true;

else

return

false;

}

B:

public

void

paint(Graphics

g){

if(!this.getIsOver())

//在此判断游戏是否结束;

{

super.paint(g);//清除原先的图像

g.setColor(Color.RED);

g.setFont(new

Font(“宋体“,Font.BOLD+Font.ITALIC,15));

g.drawString(“你已坚持:“+getT()+“S“,15,15);

for(int

i

=

0;i(getWidth()-23)||xNow(getHeight()-23)||yNow<0){//碰到上下边界;

groupThread.get(i).dy

=

-groupThread.get(i).dy;

}

groupThread.get(i).setxNow(xNow+groupThread.get(i).getdx());

groupThread.get(i).setyNow(yNow+groupThread.get(i).getdy());

}

}

if(isMouse){

g.drawImage(new

ImageIcon(“boll.gif“).getImage(),mxNow,myNow,40,40,this);

}

}//end

paint();

C

:

(1)public

void

mousePressed(MouseEvent

e)

{//单击启动鼠标事件;

if(e.getButton()==MouseEvent.BUTTON1){

if(isMouseThread){//鼠标线程是否活着;

mouse.stop();

isMouseThread

=

false;

}

if(!isTime){

copy.schedule(new

task(),0,1000);//启动定时器;

isTime

=

true;

}

if(!isGroupThread){

for(int

i

=0

;i(this.getWidth()-30)||mxNow(this.getHeight()-30)||myNow<=0){//鼠标是否碰到边界;

//

executorThread.shutdown();

this.setIsOver(true);

copy.cancel();

JOptionPane.showMessageDialog(null,“你撞墙了,下次小心点。。。游戏结束“,“提示“,JOptionPane.OK_OPTION);

this.removeMouseListener(this);

this.removeMouseMotionListener(this);

}

for(int

i

=0

;i

int

xNow

=groupThread.get(i).getxNow();

int

yNow

=

groupThread.get(i).getyNow();

if(isPeng(xNow,yNow,mxNow,myNow)){

//

executorThread.shutdown();

this.setIsOver(true);

copy.cancel();

JOptionPane.showMessageDialog(null,“if(你撞球了){“+“/n“+“挑战失败,游戏结束.}“,“提示“,JOptionPane.OK_OPTION);

//System.exit(0);

this.removeMouseListener(this);

this.removeMouseMotionListener(this);

}

//鼠标的上下左右边和

球碰撞的情况,

}

}

    以上《实验二典型系统的时域响应分析实验仿真报告答案分析解析》范文由学科吧精心整理,如果您觉得有用,请收藏及关注我们,或向其它人分享我们。转载请注明出处 »学科吧»最新范文»实验二典型系统的时域响应分析实验仿真报告答案分析解析
‖大家正在看...
设为首页 - 加入收藏 - 关于范文吧 - 返回顶部 - 手机版
Copyright © 学科吧 如对《实验二典型系统的时域响应分析实验仿真报告答案分析解析》有疑问请及时反馈。All Rights Reserved