(Simulink/MPC) Unable to linearize with an if...else loop

6 vues (au cours des 30 derniers jours)
Tan Edwin
Tan Edwin le 27 Mai 2011
I am trying to design an MPC Control for my project but it seems that the Simulink cannot linearize my model accurately due to the presence of an embe dded-MATLAB function block containing an if...else loop.
My model looks like this: (dunno how to upload photos. sry)
Embedded MATLAB -> Plant Model -> MPC--
^ |
|______________________________________|
And th function in the embedded MATLAB is
function EmbeddedMATLAB=Output(t,u)
% t = time and u= output from MPC Controller
if t<3
Output=100;
else Output =u;
end
After designing the MPC Controller, the linearized result for the MPC Controller was 0. So how shlould i go about doing it?

Réponses (1)

Erman Korkut
Erman Korkut le 31 Mai 2011
Hi Tan,
The Embedded MATLAB function blocks are linearized using numerical perturbation by default. Your code seems to indicate that if you linearize your model at a time smaller than 3, the embedded matlab block's output is not a function of input u; instead it is fixed and thus its derivate is zero, thus linearizing to zero.
If you would like to specify a custom linearization for your Embedded MATLAB function block, you can right-click on it and select Linear Analysis->Specify Linearization. Then you can specify the linearization of this block.
Thanks, Erman

Catégories

En savoir plus sur Linear Plant Specification dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by