目录
一、理论基础
1.1 飞机器减震器理论简介
飞机器减震器是一种用于减少飞行器在着陆或飞行过程中的振动和冲击的装置。在进行减震器设计时,需要进行建模和仿真模拟以评估其性能。MATLAB是一种广泛使用的仿真软件,可以用于建立减震器的模型并进行模拟。以下是使用MATLAB进行飞机器减震器建模和仿真模拟的基本原理、公式和步骤:
减震器模型的建立
飞机器减震器通常由弹簧和阻尼器组成。在MATLAB中,可以使用“Simulink”工具箱中的“Spring-Damper”模块来建立减震器模型。该模块具有两个输入端口(力和速度)和两个输出端口(位移和速度)。
弹簧和阻尼器的建模
弹簧和阻尼器的特性可以用数学公式表示。弹簧的刚度可以用以下公式描述:
F = kx
其中,F是弹簧的力,k是弹簧的刚度,x是弹簧的位移。
阻尼器的阻尼力可以用以下公式描述:
F = cv
其中,F是阻尼器的力,c是阻尼器的阻尼系数,v是阻尼器的速度。
在MATLAB中,可以使用“Simulink”工具箱中的“Spring”和“Damper”模块来建立弹簧和阻尼器的模型。这些模块具有两个输入端口(力和速度)和两个输出端口(位移和速度)。
飞行器模型的建立
在进行减震器仿真模拟时,需要建立飞行器的模型。飞行器模型通常由质量、刚度和阻尼组成。在MATLAB中,可以使用“Simulink”工具箱中的“Mass”、“Spring”和“Damper”模块来建立飞行器模型。该模型具有两个输入端口(力和速度)和两个输出端口(位移和速度)。
减震器与飞行器模型的连接
在建立减震器和飞行器模型后,需要将它们连接起来以进行仿真模拟。在MATLAB中,可以使用“Simulink”工具箱中的“Connector”模块来连接减震器和飞行器模型。该模块具有两个输入端口(力和速度)和两个输出端口(位移和速度)。
仿真模拟的运行和分析
在进行减震器和飞行器模型的连接后,可以运行仿真模拟并分析结果。在MATLAB中,可以使用“Simulink”工具箱中的“Scope”模块来查看仿真结果。根据结果,可以对减震器的性能进行评估并进行优化。
总之,使用MATLAB进行飞机器减震器建模和仿真模拟需要建立减震器和飞行器模型,并使用“Simulink”工具箱中的模块将它们连接起来。然后可以运行仿真模拟并分析结果以评估减震器的性能并进行优化。
飞机减振器(也称缓冲器)是所有现代起落架所必须具备的构件,也是最重要的构件。飞机减振装置的主要作用就是用来吸收着陆和滑行时的撞击能,以使作用到机体上的载荷减小到可以接受的程度;同时须使振动很快衰减。
1.2 飞机器减震器理论推导
减震系统是多旋翼飞行器设计中非常重要的环节,好的减震系统可以很好地减轻数字滤波的负担,同时能极大地提升控制系统的性能;
下面针对整个减震系统做一个简要分析;首先,IMU+减震海绵+配重块这样的一个系统可以等效为弹簧-阻尼系统,
自适应磁流变冲击的无量纲分析与最优控制设计隔离(MRSI)支架适用于跌落引起的冲击。控制方程推导了冲击下的单自由度运动,其中磁流变能量吸收器(MREA),具有可控冲程负载和被动线性弹簧,将有效载荷质量与撞击地面的底座隔离。在碰撞事件中有效载荷经历压缩和回弹冲程。在压缩冲程期间,有效载荷随着MREA消散和弹簧储存冲击能量而下降。在回弹冲程期间,弹簧在MREA公司。宾汉数,定义为MREA屈服力与其粘性的比值力,用作控制变量。使用键进行无量纲分析参数,如可用的MREA冲程和宾汉数。第一个控制目标是为了确保有效载荷在通过充分利用MREA的可用冲程进行压缩冲程。第二个控制目的是在反弹期间完全恢复可用的MREA中风平衡点的超调,即无差拍控制。结果表明,最佳MRSI控制策略意味着选择两个不同的宾汉数,一个用于压缩冲程和回弹冲程各一个,达到了控制目标。
上述系统的伯德图如下所示:
伯德图的形状告诉我们:这是一个典型的低通滤波环节;要想使减震系统对机体的震动有好的滤除作用,应该尽可能使机体的振动频率大于系统的截止频率(对二阶系统而言,截止频率与自然频率和阻尼比都有关,且与自然频率同增同减);当机体的振动频率一定的情况下,减小减震环节的自然频率是一个比较好的方法。
由于:
可以看出,增加质量m mm后,系统的自然频率ω n \omega_{n}ω n减小了,这意味着系统的截止频率降低了,对高频噪声的滤除作用提高了。这相当于物理系统对传感器的初始数据做了低通滤波,这将有效提升传感器数据的稳定性。
二、核心程序
clc;
clear;
close all;
warning off;
%
% Simulation script
%
global G;
global m2;
global k12;
global c12;
global l12;
global m1;
global k10;
global c10;
global l10;
global Tend;
global L1;
global dxinit;
% B Titurus/UoB/16032018
% PROBLEM PARAMETERS
% ------------------
G=9.81;
% ... mass 2, cargo+body
m2=800;
k12=1e6;
c12=5e2;
l12=2.0;
% ... mass 1, engine+leg
m1=300;
k10=1e5;
c10=5540;
l10=0.6;
% mission spec
Tend=3; % simulation time
L1=0.5; % landing/drop altitude
dxinit=0; % intial drop velocity
% control flags
is_animation=true; % true/false
is_plot=true; % true/false
% all parameters
pars=[G,m2,k12,c12,l12,m1,k10,c10,l10,Tend,L1,dxinit,is_animation,is_plot];
% SIMULATION
% ----------
res=batch_land_2dof_summer(pars);
%res =
% time: time vector
% displacements: matrix with columns [xleg,x1,x2]
% velocities: matrix with columns [xleg,x1,x2]
% accelerations: matrix with columns [xleg,x1,x2]
% forces: matrix with columns [Thrust,Faux,Fg1,Fg2,Fd12,Fs12,Fd10,Fs10]
%
% Thrust: is the thrust force generated in thrust_summer
% Faux: is the auxiliary leg damper force generated in damper_summer
%
% POST-PROCESSING
% ---------------
figure,plot(res.time,res.displacements)
figure,plot(res.time,res.velocities)
figure,plot(res.time,res.accelerations)
figure,plot(res.time,res.forces)
legend('Thrust','Faux','Fg1','Fg2','Fd12','Fs12','Fd10','Fs10')
Thrust=res.forces(:,1);
Faux =res.forces(:,2);
figure;
subplot(211);
plot(res.time,Thrust);
subplot(212);
plot(res.time,Faux);
% end
三、仿真测试结果
A22-16