基于MATLAB的飞机襟副翼运动建模分析【GUI开发】

2021-05-31 10:02:21 浏览数 (1)

首先,深入了解了飞机襟副翼运动原理,构建了该运动机构简图,并计算其运动自由度,并利用解析方法,建立襟副翼运动学方程。最后,基于MATLAB对飞机襟副翼进行运动仿真。

1.引言

飞机襟副翼通常在起飞或者下降时提供升力或者阻力示。B787 飞机需求襟副翼可以旋转 43°,而A320大约旋转35°。

1)画出机构的运动简图;

2)利用解析方法,建立襟副翼运动学方程;

3)基于 Matlab 完成仿真分析。

2. 机构简图

飞机襟副翼运动机构简图如图所示。

该飞机襟副翼运动机构的自由度为

该飞机襟副翼运动机构的自由度数等于原动机数,均为1,故有固定唯一确定的运动。

各杆件尺寸如下:AB=80,BC=250,CD=180,AD=300,无偏置。

3. 运动学模型的建立

基于飞机起落架的MATLAB设计与仿真分析同。

4. 基于 MATLAB的运动仿真分析

为了便于交互操作,特采用GUI界面来做本次分析,通过交互界面,可独立控制分析角位移、角速度以及角加速度等关键参数指标,同时支持输出模型图与动态分析结果。

飞机襟副翼运动模型核心程序:

代码语言:javascript复制
%初始化参数
l1=80;l2=250;l3=180;l4=300;%各杆长
omega1=180;
alpha1=0;
%弧度制与角度制转换
hu_du=pi/180;
jiao_du=180/pi;
%计算四杆机构位移,角速度,角加速度
for n=0:360
    theta1=n*hu_du;
    [theta,omega,alpha]=crank_rocker(theta1,omega1,alpha1,l1,l2,l3,l4);
    theta2(n 1)=theta(1);
    theta3(n 1)=theta(2);
    omega2(n 1)=omega(1);
    omega3(n 1)=omega(2);
    alpha2(n 1)=alpha(1);
    alpha3(n 1)=alpha(2);
end

% %%
n=1:361;
%%
if get(handles.radiobutton1,'value')
    plot(n,theta2*jiao_du,n,theta3*jiao_du,'k');
    title('角位移曲线图');
    xlabel('曲柄转角theta_1/circ')
    ylabel('角位移/circ')
    grid on;
    hold on;
    text(140,100,'theta_3')
    text(140,30,'theta_2')
elseif get(handles.radiobutton2,'value')
    plot(n,omega2,n,omega3,'k');
    title('角速度曲线图');
    xlabel('曲柄转角theta_1/circ');
    ylabel('角速度/radcdots^{-1}');
    grid on;
    hold on;
    text(250,50,'omega_2')
    text(130,50,'omega_3')
elseif get(handles.radiobutton3,'value')
    plot(n,alpha2,n,alpha3,'k')
    title('角加速度曲线图');
    xlabel('曲柄转角theta_1/circ')
    ylabel('角加速度/radcdots^{-2}')
    grid on;
    hold on;
    text(230,0.1e4,'alpha_2')
    text(150,-0.7e4,'alpha_3')
elseif get(handles.radiobutton4,'value')
    x(1)=0;
    y(1)=0;
    x(2)=l1*cos(70*hu_du);
    y(2)=l1*sin(70*hu_du);
    x(3)=l4 l3*cos(theta3(70));
    y(3)=l3*sin(theta3(70));
    x(4)=l4;
    y(4)=0;
    x(5)=0;
    y(5)=0;
    plot(x,y);
    grid on;
    hold on;
    plot(x(1),y(1),'o');
    plot(x(2),y(2),'o');
    plot(x(3),y(3),'o');
    plot(x(4),y(4),'o');
    title('平面四杆机构');
    xlabel('mm')
    ylabel('mm')
    
elseif get(handles.radiobutton5,'value')
    %四杆机构运动仿真
    fig = figure('NumberTitle','off',...
        'Color','w',...
        'menubar','none',...
        'toolbar','none',...
        'Resize','off');
    title('平面四杆机构');
    xlabel('mm');
    ylabel('mm');
    grid on;
    box on;
    axis([-100 330 -100  200]);
    m = moviein(20);
    j=0;
    hold on;
    for n=1:5:360
        x(1)=0;
        y(1)=0;
        x(2)=l1*cos((n-1)*hu_du);
        y(2)=l1*sin((n-1)*hu_du);
        x(3)=l4 l3*cos(theta3(n));
        
        y(3)=l3*sin(theta3(n));
        x(4)=l4;
        y(4)=0;
        x(5)=0;
        y(5)=0;
        if n == 1
            line0 = plot(x,y);
            line1 = plot(x(1),y(1),'o');
            line2 = plot(x(2),y(2),'o');
            line3 = plot(x(3),y(3),'o');
            line4 = plot(x(4),y(4),'o');
        else
            set(line0,'XData',x,'YData',y);
            set(line1,'XData',x(1),'YData',y(1));
            set(line2,'XData',x(2),'YData',y(2));
            set(line3,'XData',x(3),'YData',y(3));
            set(line4,'XData',x(4),'YData',y(4));
        end
        j=j 1;
        m(j)=getframe;
    end
    movie(m,100);
    hold off;
end

飞机襟副翼运动动态仿真效果图

最后感谢大家的阅读,初来乍到,不周之处请多包涵。如有问题,欢迎在本文下方留言讨论。

参考资料:

[1]陈垚光. 精通MATLAB GUI设计[M]. 电子工业出版社, 2008.

[2]邱金蕙, 王矞辉, 李振全. 基于Matlab/GUI的新型界面开发方式[J]. 河北工业科技, 2008(04):233-235.

0 人点赞