• 飞行器翼尖加速度和控制面的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、参考论文

  • 相关阅读:
    Python数据类型 ——— 字典
    关于logback的一个坑:日志级别设置无效
    java基于springboot+mvc的高校网课在线学习作业管理系统 elementui
    黄素单核苷酸小麦麦清白蛋白纳米粒|石杉碱甲乳清白蛋白纳米粒Huperzine-whey protein|化学试剂
    学习记忆——数学篇——案例——代数——方程——一元二次方程
    客服常用100句用语帮您全面搞定客服回复
    bugku-web-XXX二手车交易市场
    热加载技术:修改Python代码并实时查看结果 ⛵
    【物理】复合场中配速法
    ftrace工具的介绍及使用
  • 原文地址:https://blog.csdn.net/qingfengxd1/article/details/125471135