Why are the output constraints not applied when using MPC Controller?

2 views (last 30 days)
I am trying to develop a Model Predictive Controller using a simple Suspension Model. I defined a state space model and then used 'mpcDesigner' to design the controller. As I see, the constraints assigned to the outputs using the toolbox are not being assigned when I simulate the model.
% Define the matrices A, B ,C and D in the continuous state
A = [0 1 0 -1; (-cc/mc) (-dc/mc) 0 (dc/mc); 0 0 0 1; (cc/mw) (dc/mw) (-cw/mw) ((-dc-dw)/mw)];
B = [0 0; 0 (1/mc); -1 0; (dw/mw) (-1/mw)];
C = [1 0 0 0;(-cc/mc) (-dc/mc) 0 (dc/mc); 0 0 -cw -dw];
D = [0 0; 0 0;0 0];
%D = [0 (1/mc); dw -1];
% state space
sys = ss(A,B,C,D,'StateName',{'Suspension Deflection' 'Chassis Velocity' 'Tire Deflection' 'Wheel Velocity'},...
'StateUnit',{'m','m/s','m','m/s'},...
'InputName',{'Road Disturbance', 'Actuator Force'},...
'InputUnit',{'m/s','N'},...
'OutputName', {'Suspension Deflection','Chassis Acceleration','Dynamic Wheel Load'},...
'OutputUnit', {'m','m/(s^2)','N'});
Then I used 'mpcDesigner' and defined the variables from MPC Structure
Then from the 'Tuning' Tab, I clicked on 'Constraints' to define my constraints on manipulated variable and the outputs
Then I exported the simulink model and excited it with a sinewave of Amplitude '3' (physically unrealistic value for an excitation)
When I run the simulation for 10 seconds and check the output scope block, I see this
As seen, the first plot output definitely does not lie between -0.08 and 0.08 as specified when designing the controller.
Am I doing anything wrong or how can I limit the output?

Answers (0)

Community Treasure Hunt

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

Start Hunting!