• 飞行器翼尖加速度和控制面的MPC控制


    1、内容简介


    372-可以交流、咨询、答疑

    2、内容说明

    clc
    close all
    clear
    % Open file 
    path = pwd;
    pathFull = strcat(path,'\系统状态空间');
    addpath(pathFull);
    fid = fopen('180.DAT'); 
    disp(['Read file ' '180.DAT']) 
    % Read and display the header 
    head=fgetl(fid); disp(head) 
    V=str2num(head(36:46)); ro=str2num(head(56:66)); 
    % Read dimensions 
    tmp=fgetl(fid); tmp=sscanf(tmp,'%i'); 
    if length(tmp)==1 
    n=tmp(1); m=0; l=0; 
    elseif length(tmp)==3 
    n=tmp(1); m=tmp(2); l=tmp(3); 
    else 
    disp(['FATAL ERROR: File ' filename ' corupt.']); return 
    end 
    % Read state-space matrices 
    ABCD = zeros(n+l,n+m); 
    ABCD = fscanf(fid,'%g',[n+l,n+m]);
    A=ABCD(1:n,1:n); 
    B=ABCD(1:n,n+1:n+m); 
    C=ABCD(n+1:n+l,1:n); 
    D=ABCD(n+1:n+l,n+1:n+m); 
    % Read gain matrix 
    if head(74:80)=='VEHICLE' 
    fgetl(fid);line = fgetl(fid); 
    G = fscanf(fid,'%g',[m,l]); 
    else 
    G = []; 
    end 
    % Read gust state-space matrices 

    fgetl(fid);line = fgetl(fid); 
    if ~isstr(line) 
    Bw=[]; CG=[]; return 
    else 
    nG2= fscanf(fid,'%g',1); 
    Bw = fscanf(fid,'%g',[n,nG2]); 
    end 
    fgetl(fid);line = fgetl(fid); 
    if ~isstr(line), CG=[]; return, 
    else CG = fscanf(fid,'%g',[l,nG2]); 
    end 

    % %% 建立MPC模型
    % sys = ss(A,B,C,D);
    % Ts=0.05;     % 采样时间
    % p=15;       % 预测时域长度
    % m=2;        % 控制时域长度
    % MPC1=mpc(sys,Ts,p,m);    % 定义M1和M2分离的MPC模型
    % % 设置限制,F的大小不能为0,F斜率绝对值最大1000
    % MPC1.MV=struct('Min',-1,'Max',1,'RateMin',-1e2,'RateMax',1e2);
    % MPC1.OV=struct('Min',-1000,'Max',1000);
    % MPC1.OV.MaxECR=1;  
    %% 建立MPC模型
    close all
    clc
    % sys = ss(A,B,C,D);
    % Ts=0.05;     % 采样时间
    % p=15;       % 预测时域长度
    % m=5;        % 控制时域长度
    % MPC1=mpc(sys,Ts,p,m);    % 定义M1和M2分离的MPC模型
    % % 设置限制,F的大小不能为0,F斜率绝对值最大1000
    % MPC1.MV=struct('Min',-1,'Max',1,'RateMin',-1e1,'RateMax',1e1);
    % MPC1.OV=struct('Min',-1000,'Max',1000);
    % MPC1.OV.MaxECR=1;  
    sys = ss(A,B,C,D);
    Ts=0.05;     % 采样时间
    p=15;       % 预测时域长度
    m=5;        % 控制时域长度
    MPC1=mpc(sys,Ts,p,m);    % 定义M1和M2分离的MPC模型
    % 设置限制,F的大小不能为0,F斜率绝对值最大1000
    MPC1.MV=struct('Min',-1,'Max',1,'RateMin',-1e1,'RateMax',1e1);
    MPC1.OV=struct('Min',-10,'Max',10);
    MPC1.OV.MaxECR=1;  
    in = 10;
    sim('model_mpc1.slx')
    figure
    plot(tout,yout(:,1))
    xlabel 时间/s
    ylabel 翼尖加速度传感器

    figure
    plot(tout,yout(:,2),tout,yout(:,3))
    xlabel 时间/s
    ylabel 控制面的偏角


    3、仿真分析

     


    4、参考论文

  • 相关阅读:
    基于协同过滤算法的电影推荐系统
    (Excel / WPS表格)常用公式、技巧
    【Vue学习之从入门到神经】
    最强大脑记忆曲线(9)——按错误频率排序待听写内容
    软件测试要学会哪些东西才能拿2w+的工资?
    在做程序员的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?
    netty系列之:netty中的核心MessageToMessage编码器
    Node.js 事件循环
    2023年【R2移动式压力容器充装】模拟考试及R2移动式压力容器充装模拟考试题
    华米Zepp小程序开发入门
  • 原文地址:https://blog.csdn.net/qingfengxd1/article/details/125471135