Skip to Main Content Skip to Search
Home |   Select Country  Choose Country  |  Contact Us  |  Cart Store 
Create Account | Log In
Products & Services Solutions Academia Support User Community Company
spacer spacer spacer spacer spacer spacer

 

Model Predictive Control Toolbox 3.1.1

MPC for a Nonlinear Plant Under Nonzero Nominal Conditions

Contents

This demonstration shows how to work with offsets in plant models obtained by linearization of nonlinear Simulink® models. We consider the MPC control of a MIMO nonlinear system with nonzero offsets at linearization, 3 manipulated variables, 2 measured outputs.

Open-loop model: Linearize Nonlinear System

if ~mpcchecktoolboxinstalled('simulink')
    disp('Simulink(R) is required to run this demo.')
    return
end

The model is described in the Simulink® diagram NL_OFFSETS.MDL Find equilibrium

[x0,u0,y0,dx0]=trim('nl_offsets');

x0 = offset (also used as initial condition)

[A,B,C,D]=linmod('nl_offsets',x0,u0);
sys=ss(A,B,C,D);

MPC Controller Setup

Ts=0.1;                 % Sampling time

clear Model
Model.Plant=sys;        % Plant prediction model

Model.Nominal.X=x0;     % State vector at linearization
Model.Nominal.U=u0;     % Input vector at linearization
Model.Nominal.Y=y0;     % Output vector at linearization
Model.Nominal.DX=dx0;   % State derivative vector at linearization

Model.Noise=0.1;        % Output measurement noise model (white noise, zero 
mean, variance=0.01)

p=20;
m=3;

weights=[]; % use default weights
mpc_controller=mpc(Model,Ts,p,m,weights,struct('Max',0.2));
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. 
Assuming default 0.00000.
-->The "Weights.ManipulatedVariablesRate" property of "mpc" object is emp
ty. Assuming default 0.10000.
-->The "Weights.OutputVariables" property of "mpc" object is empty. Assum
ing default 1.00000.

Reference signal for output vector

r0=1.5*y0;

Simulate using Simulink® (Nonlinear Model + MPC Controller)

Tstop=10;
open_system('mpc_offsets')      % Open Simulink(R) Model
sim('mpc_offsets',Tstop);       % Start Simulation
-->Converting model to discrete time.
-->Integrated white noise added on measured output channel #1.
-->MPC problem is constrained and "ManipulatedVariables.RateMin" is not c
ompletely specified or has infinite values.
   Setting values to -10 to prevent numerical problems in QP.

Simulate using SIM (Linear model + MPC Controller)

Tf=round(Tstop/Ts);
r=r0*ones(Tf,1);
[y1,t1,u1,x1,xmpc1]=sim(mpc_controller,Tf,r);
-->Converting model to discrete time.
-->Integrated white noise added on measured output channel #1.

Plot and compare results

subplot(121)
plot(y.time,y.signals.values,t1,y1,t1,r)
legend('Nonlinear','Linearized','Reference')
title('output')
grid
subplot(122)
plot(u.time,u.signals.values,t1,u1)
legend('Nonlinear','Linearized')
title('input')
grid
bdclose('mpc_offsets')
Contact sales
Free technical kit
Trial software
E-mail this page

Get Pricing and
Licensing Options