simulink蹦极仿真报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子信息系统仿真与设计
课程设计报告
设计课题: 蹦极跳系统的动态仿真姓名:
学院:
专业:
班级:
学号:
日期
指导教师:
蹦极跳系统的动态仿真
一、问题描述:
蹦极跳是一种挑战身体极限的运动,蹦极者系着一根弹性绳从高处的桥梁(或山崖等)向下跳。
在下落的过程中,蹦极者几乎处于失重状态。
应用Simulink 对蹦极跳系统进行仿真研究。
二、系统模型及建模分析:
按照牛顿运动规律,自由下落的物体由下式确定:
其中,m 为人体的质量,g 为重力加速度,x 为物体的位置,第二项和第三项表示空气的阻力。
其中位置 x 的基准为蹦极者开始跳下的位置(即选择桥梁作为位置的起点 x =0),低于桥梁的位置为正值,高于桥梁的位置为负值。
如果人体系在一个弹性常数为 k 的弹性绳索上,定义绳索下端的初始位置为 0,则其对落体位置的影响为:
因此整个蹦极系统的数学模型为:
从蹦极跳系统的数学描述中可得知,此系统为一典型的具有连续状态的非线性系统。
设桥梁距离地面为 50 m ,即 h2=50;
蹦极者的起始位置-30 m ,即 h1=x(0)=-30;
蹦极者起始速度为 0,即 ;
其余参数k =20,a2=a1=1;m =70 kg ,g =10 m/s2。
下面将建立蹦极跳系统的仿真模型,并在如上的参数下对系统进行仿真,分⎩⎨⎧≤>-=0 ,
00,)(x x kx x b 地面
x 桥梁基准面 0 梯子 h2 h1
析此蹦极跳系统对体重为 70 kg 的蹦极者而言是否安全。
三、建立蹦极跳系统的Simulink仿真模型
在蹦极跳系统模型中,主要使用的系统模块有:
Continuous 模块库中的 Integrator 模块:用来实现系统中的微分运算。
Functions&Tables 模块库中的Fcn模块:用来实现系统中空气阻力的函数关系。
Nonlinear模块库中的Switch模块:用来实现系统中弹力绳索的函数关系。
蹦极跳系统的模型框图如图 1 所示。
图 1
在蹦极跳系统模型中使用了两个Scope输出模块,上面的Scope模块用来显示蹦极者的相对位置,即相对于桥梁的位置;而下面的Scope1模块用来显示蹦极者的绝对位置,即相对于地面的位置。
系统模块参数设置:
(1)设置Integrator的初始条件为0;Integrator1的初始条件为-30;
(2)设置仿真时间 0~100s。
为了使曲线光滑,可设置最大仿真步长为0.1。
其它仿真参数采用系统默认取值( 变步长求解器、求解算法ode45、自动选择最大仿真步长、相对误差为l e-3)。
(3)在 MATLAB 环境下输入赋值语言:m=70; g=10; k=20; a1=1; a2=1; (4)运行仿真模型,Scope、Scope1分别显示仿真结果如下:
图(a)图(b)
四、实验过程中遇到的问题:
1.模型建立好后,进行仿真时,参数设置出了些问题;
2.仿真出波形后,观察到仿真曲线的波峰与波谷处曲线很不光滑,因此进行了仿真精度控制;
3.分析仿真结果时发现:蹦极者与地面之间的最小距离小于0,也就是说蹦极者在此过程中会触地。
所以对此系统在不同的弹性常数下进行了仿真分析,求出符合安全要求的弹性绳索的最小弹性常数。
五、仿真结果分析:
上图(b)为蹦极者与地面之间的距离。
从结果可看出,对于体重为 70 kg 的蹦极者,此系统是不安全的,因为蹦极者与地面之间的距离出现了负值(即蹦极者在下落的过程中会触地,而安全的蹦极跳系统要求二者之间的距离应该大于0)。
因此,必须使用弹性系数较大的弹性绳索,才能保证蹦极者的安全。
当然,在蹦极者触地的情况下,系统的动态方程会发生改变,系统输出结果也将发生变化。
上图的仿真结果并没有考虑到这一点(假定蹦极者距离地面足够大,不会触地)。
六、总结:
本次仿真设计用到了很多数学建模和物理方面的知识,在自学了simulink的基本知识后,选择了一个课题开始进行建模。
在实际实现的过程中,发现问题、分析问题、解决问题,培养了自己的学习能力和实验能力,也对MATLAB里面的simulink功能有个进一步的认识和掌握。
附加:
1、仿真精度控制
根据对图b所示蹦极跳系统的仿真结果观察,仿真曲线的波峰与波谷处曲线很不光滑。
而从蹦极跳系统的数学方程分析可知,系统的输出曲线应该是光滑曲线。
造成这一结果的主要原因是:对此系统仿真来说,连续求解器的默认积分误差取值偏大。
因此,只有设置合适的积分误差限,才能获得更好的仿真结果。
对蹦极跳系统的积分误差、最大仿真步长与起始仿真步长进行合适的设置,如图2所示。
图 2
然后对蹦极跳系统进行仿真,其仿真结果如图3所示。
从图中可以明显看出,减小系统仿真积分误差可以有效地提高系统的仿真性能,使仿真输出波峰与波谷处的曲线变得比较光滑。
图 3
2、蹦极跳系统的安全性分析
在上面系统模型中,蹦极者的质量 m= 70kg,重力加速度 g=10m/s 2 ,蹦极者的初始位置x(0) = -30,初始速度为,桥梁距离地面为50m,弹性绳索的弹性常数k=20;其它的参数a2=a1=1;按照如上的参数对此系统进行仿真的结果表明:对于体重为70kg的蹦极者,蹦极跳系统的弹力绳索不安全。
因为在仿真过程中,蹦极者与地面之间的最小距离小于0,也就是说蹦极者在此过程中会触地。
很显然,如果弹性绳索的弹性常数大于某个值。
此蹦极跳系统对于体重为70kg的蹦极者来说才可能是安全的。
下面使用命令行的方式对此系统在不同的弹性常数下进行仿真分析,以求出符合安全要求的弹性绳索的最小弹性常数。
为了使用命令行方式对此系统进行分析,首先利用Outl模块将此蹦极者的位置输出到MATLA工作空间之中,如图4所示。
图 4
编写MATLAB脚本文件 bengji_cmd .m,求最小弹性常数,程序如下图5所示:
图 5脚本文件 bengji_cmd .m
运行此脚本文件,得到如下结果:
MATLAB命令窗口中显示:
最小的安全弹性常数为:27
蹦极者与地面之间的最小距离为:0.87934
在最小安全弹性常数为27的情况下,体重为70kg的蹦极者与地面之间的最小距离只有不足1m,图6所示为此系统的动态过程。
图 6 最小安全弹性常数下的系统动态过程
附 录:
1、利用simulink 仿真来实现摄氏温度到华氏温度的转换 3259+=c f T T
2、设系统微分方程为⎩⎨⎧=+='2)1(y y x y ,试建立系统模型并仿真
参数设置:设置开始时间Start Time=1;初始值Initial Condition=2;
3、利用simulink 仿真
)5cos 2513cos 91(cos 8)(2t t t A
t x ωωωπ++=,取A=1, πω2= 建立f3.m 文件:
function x=f(t) x=(8*1/(pi^2))*(cos(2*pi*t)+(1/9)*cos(3*2*pi*t)+(1/25)*cos(5*2*pi*t))
建立simulink 仿真模型,并进行仿真输出,如下:
当Sample time 设置不合适时,图像会出现因取点不足产生的失真。
此时取Sample time=0.01.
4、建立如图1所示的仿真模型并进行仿真,改变增益,观察x-y 图形变化,并用浮动的scope 模块观测各点波形。
X Y Graph
Slider
Gain 1
Sine Wave Integrator
1
s
Floating Scope
当Slider Gain 为1时XY Graph 显示为一个圆,Slider Gain 逐渐变大时,XY Graph 变成形状不同的椭圆。
以Slider Gain=1.8为例,可得x-y 图形和各点的波形图,如下:
5、有初始状态为0的二阶微分方程)(24.05.0t u x x x =+'+''其中u(t)是单位阶跃函数,试建立系统模型并仿真。
对该方程两边进行Laplace 变换,整理得传递函数:G(s)=0.2/(s^2+0.2*s+0.4),构建模型并仿真,如下:
6、通过构造SIMULINK 模型求⎰=dt
t y )cos(的结果,其中初值分别为y1(0)=0,
y2(0)=1
令初值分别为y1(0)=0, y2(0)=1,得仿真结果,如下:
y1(0)=0时 y2(0)=1时
7、分析二阶动态电路的零输入响应
图2为典型的二阶动态电路,其零输入响应有过阻尼、)
()(t i t u L c 和临界阻尼
和欠阻尼三种情况,已知L=0.5H, C=0.02F, R=1, 2, 3, …, 13Ω, 初始值
)0(,1)0(==L c i V u 求的零输入响应并画出波形。
(1用simlink 的方法,2用脚
本文件的方法)
R
C
图2 题目5 二阶动态电路
分析可知:
C L
R 2
>,为过阻尼情况;
C L
R 2
<,为欠阻尼情况;
C L
R 2
=,为临界阻尼情况;
(1)R=10,为临界阻尼情况:(2)R=2,为欠阻尼情况:
(3)R=26,为过阻尼情况:
利用脚本文件实现:(R=10,临界阻尼情况)
建立fun.m脚本文件
function dv=fun(t,v)
dv=zeros(2,1);dv(1)=v(2);%v(1)为原函数,v(2)为一次的。
dv(2)为二次的dv(2)=-100*v(1)-20*v(2);
在MATLAB命令窗口中输入:
>> [T,V]=ode45('fun',[0 4],[1 0]);
plot(T,V(:,1))
8、一池中有水20003m ,含盐 2 kg ,以 63
m / 分 的速率向池中注入浓度为 0.5 kg / 3
m 的盐水,又以 4 3
m / 分的速率从池中流出混合后的盐水,问欲使池中盐水浓度达到 0.2 kg / 3
m ,需要多长时间?(1用simlink 的方法,2用脚本文件的方法)【附加:试画出浓度vs 时间的曲线】
设t 时刻的浓度为c(t),故设计模型并连接如下:
仿真波形图:
可以看出,时间趋于无穷时,浓度趋于0.5,大概在176分钟时浓度达到0.2。
11、搭建特定的信号源,建立SIMULINK仿真模型、显示仿真结果。
建立sfunction.m程序文件,对模块进行封装和测试,如下图所示:(1)T=3;(2)T=5;。