simulink 蹦极跳动力学仿真全过程:单自由度时不变连续系统

1 动力学方程的建立
2 微分方程到框图
3 第一次仿真
4 框图与m文件的互动

1 动力学方程的建立

蹦极跳的动力学方程,是按照牛顿运动定律建立的,分析蹦极人的受力,包括重力 m g mg mg、阻力 f f f、绳子拉力 F F F,以上各力的矢量和等于 m x ′ ′ m{x}'' mx′′
其中,阻力采用一次阻尼和二次阻尼联合模型,即 f = a 1 x ′ + a 2 ∣ x ′ ∣ x ′ f=a_1x'+a_2|x'|x' f=a1x+a2xx绳子的拉力采用分段函数模型,蹦极绳长度为 L L L;蹦极绳仅在蹦极人位移距离超过绳长的时候起拉力作用,拉力系数为 k k k
F = { k ( x − L ) x > L 0 x ≤ L F = \begin{cases} k(x-L) & x>L \\ 0 & x\leq L \end{cases} F={k(xL)0x>LxL以上函数中, x x x为蹦极人坐标,取向下为正,并取原点为蹦极人起跳位置,即 x ( 0 ) = 0 x(0)=0 x(0)=0;本项目暂时不考虑蹦极人的起跳速度,即认为 x ′ ( 0 ) = 0 x'(0)=0 x(0)=0;。
最终建立的蹦极跳的动力学微分方程为 m x ′ ′ = m g − a 1 x ′ − a 2 x ′ ∣ x ′ ∣ − F (1) mx''=mg-a_1x'-a_2x'|x'|-F \tag{1} mx′′=mga1xa2xxF(1)注意:建立微分方程一定有边界条件或初值条件,否则仿真是无法进行的
上述方程中,按照目前网上较为流行的参数,取 a 1 = 1 , a 2 = 1 , k = 20 N / m , m = 70 k g , L = 30 ,桥高 H = 80 a_1=1,a_2=1,k=20N/m,m=70kg,L=30,桥高H=80 a1=1,a2=1,k=20N/m,m=70kgL=30,桥高H=80
这是一个单自由度时不变连续系统微分方程

2 微分方程到框图

本节介绍如何从一个单自由度时不变连续系统微分方程建立相应的simulink框图。

2.1 框图主线的确定

首先确定微分方程的最高阶导数,本项目为2阶,因此需要2个积分模块(Integrator)才能回到 x x x,即 x ′ ′ t o x ′ x'' \rm to\it x' x′′tox x ′ t o x x'\rm to \it x xtox两个模块(Block)
在这里插入图片描述

其次是将微分方程改写为如下形式 C n x ( n ) = ∑ i = 0 n C i − 1 x ( i − 1 ) (2) C_nx^{(n)}=\sum_{i=0}^n C_{i-1}x^{(i-1)}\tag{2} Cnx(n)=i=0nCi1x(i1)(2)本项目的方程(1)恰好是这种形式,就不加以改写了,其中 n = 4 n=4 n=4,因此加入ADD模块,形成一个等号态势,其中1个加法,三个减法,即
在这里插入图片描述

2.2 方程(2)右侧各项的添加

逐步添加方程中(2)各项的系数,即增益。
从布局的角度,建议除常数项外,从低导数阶向高导数阶逐个开展

2.2.1 弹性绳项

弹性绳项是导数0阶的,采用Switch模块实现分段函数,首先引入绳长L,做减法后输入Switch模块,输出再增加增益 k = 20 k=20 k=20
在这里插入图片描述

2.2.2 一次阻尼项

一次阻尼项是 x ′ x' x相关项 a 1 x ′ a_1x' a1x,从 x ′ x' x线引出,并增加增益Gain模块,即
在这里插入图片描述

2.2.3 二次阻尼项

二次阻尼项 a 2 x ′ ∣ x ‘’ ∣ a_2x'|x‘’| a2xx‘’∣仍与 x ′ x' x相关,仍从 x ′ x' x线引出,增加绝对值模块Abs和乘法模块Product
在这里插入图片描述

2.2.4 质量相关 m g mg mg

采用增益的方式处理重力,将质量单独作为常数输入
在这里插入图片描述

2.3 方程的封闭

增加方程的左端项,实现方程的封闭,上面ADD模块的输出等于 m x ′ ′ mx'' mx′′,除以 m m m后就和主线空悬的 x ′ ′ x'' x′′对应上了,此处引入除法模块Divide,实现对质量的同一输入,便于后续m文件调佣
在这里插入图片描述

2.4 结果输出

输出位移 x x x,速度 x ′ x' x和加速度 x ′ ′ x'' x′′输出到workspace中
还计算蹦极人到地面距离,即 H − x H-x Hx,采用Scope展示
在这里插入图片描述

3 第一次仿真

3.1 参数与初值

第一次仿真参数按上文执行, a 1 = 1 , a 2 = 1 , k = 20 N / m , m = 70 k g , L = 30 ,桥高 H = 80 a_1=1,a_2=1,k=20N/m,m=70kg,L=30,桥高H=80 a1=1,a2=1,k=20N/m,m=70kgL=30,桥高H=80
初值按 x ( 0 ) = 0 , x ′ ( 0 ) = 0 x(0)=0,x'(0)=0 x(0)=0x(0)=0
仿真时间300s

3.2 第一次仿真结果

第一次仿真结果如下图所示,可见第一次下落是蹦极人到地面的距离已经是负值,安全性评估不合格。
在这里插入图片描述

3.3 第一次仿真结果的评估

这里的评估不是安全性的评估,而是仿真正确性的基本评估。

3.3.1 无阻尼极值的评估

无阻尼的情况下,以0m处为零重力势能面,系统总能量 E = 0 J E=0J E=0J
x < 30 m x<30m x<30m阶段,蹦极人为自由落体状态,耗时 t 1 = 2 L / g = 2.47 s t_1=\sqrt {2L/g}=2.47s t1=2L/g =2.47s
x > 30 m x>30m x>30m阶段终末,系统总能量保持不变,重力势能 − m g x -mgx mgx,弹性势能 1 / 2 k ( x − L ) 2 1/2k(x-L)^2 1/2k(xL)2,两者之和为零,即 x 2 − 128.6 x + 900 = 0 x^2-128.6x+900=0 x2128.6x+900=0,解得 x = 121.2 x=121.2 x=121.2
仿真结果如下,可见 x x x极值,及位移速度加速度的周期性表现良好,符合物理预期
在这里插入图片描述

3.3.2 平衡位置评估

采用较长的仿真时间,如500s,结果如下,其平衡位置值约为15.6~15.9m
在这里插入图片描述

从方程(1)出发,考虑平衡状态时, x ′ ′ = 0 , x ′ = 0 x''=0,x'=0 x′′=0,x=0,则方程(1)变为
F = k ( x − L ) = m g F=k(x-L)=mg F=k(xL)=mg解算x后计算 H − x H-x Hx
H − m g / k − L = 80 − 70 ∗ 9.8 / 20 − 30 = 15.7 m H-mg/k-L=80-70*9.8/20-30=15.7m Hmg/kL=80709.8/2030=15.7m
与仿真值吻合良好

4 框图与m文件的互动

本项目不涉及从Matlab的Workspace读取文件,只涉及采用常量模块的变量名输入;
本项目设计从SIMULINK的结果输出到Workspace后读取进行后续操作

4.1 常量模块的变量名输入

常量模块中,调整质量 m m m和弹性系数 k k k,注意,为了方便调试,在写m
文件中,先定义m和k。注意框图中两个常量模块的变化。

clc;clear

m=70;k=20

在这里插入图片描述

4.2 仿真结果的输出

采用整体结果全部输入到一个结构体simOut的方式输出,便于后续变更,绘图展示结果一致性

clc;clear

m=70;k=20;
simOut = sim('csdn01');
t=simOut.tout;
x=simOut.x.Data;
dx=simOut.dx.Data;
d2x=simOut.d2x.Data;
plot(t,x,t,dx,t,d2x)

SIMULINK结果
在这里插入图片描述
M文件结果
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值