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

猜你喜欢

转载自blog.csdn.net/qingfengxd1/article/details/125471135