MPC controller Direct feedthrough from manipulated variables to any output in Plant is not allowed.
Show older comments
I'm trying to develop a MPC controller for the Stewart Platform. When I try to define MPC structure by linearization, it tells me this. What could be wrong with my model?
Stewat Platform plant input(6): forces to the 6 legs, output(9): 3xpositions, 3xangular rate, 3xtranslational acceleration

5 Comments
Prateek Tiwari
on 27 Apr 2020
Same issue with me.
mohamad Hatami
on 20 Jul 2020
same problem here and theres no answer
Syed Adil Ahmed
on 5 Aug 2020
Hi.
If you read the MPC documentation, you will find that the MPC Designer does not support this direct feedthrough and if you want to add such an output in the MPC Designer then add a unit delay onto the MV that makes this output variable and then the MPC Designer will add it to the C matrix of your SS.
军
on 15 Feb 2023
Thank you for your answer, how to add a unit delay onto the MV? Can you give a example!I'm look forward to recieving your answer as soon as quickly.
Danish Iqbal
on 3 Apr 2023
Edited: Danish Iqbal
on 3 Apr 2023
You have to add a block simpy unit step delay after the output of the controller and before the input of the plant.
Answers (2)
Nick Rozenauers
on 1 Nov 2022
0 votes
As per above --> The reason the error is occuring is because you do not have any delays between your input and outputs (unrealistic in reality).
If you are estimating your TF from I/O (greybox or blackbox modelling), Matlab will estimate the delays for you. Your plant design will work then:
iodelay = NaN;
estTF = tfest(iddataOBJ,pole,zero,iodelay);
1 Comment
军
on 15 Feb 2023
Thank you for your answer, how to add a unit delay onto the MV? Can you give a example!I'm look forward to recieving your answer as soon as quickly.
MUHAMMAD
on 8 Dec 2023
Solution:
I had same problem and It is solve by adding time delay.
You can add time delay in between MV and plant. I did using matlab command like like
plant = tf([num],[den],'OutputDelay',1.5 )
I hope this answer helped you.
Example
%%Transfer Function By System identification
num = [-1.324 6.6e05 -6.914e09 5.128e13 -1.054e19]
den = [1 1.99e04 1.371e09 1.145e13 4.037e17]
plant = tf([num],[den],'OutputDelay',1.5 )
Categories
Find more on Controller Creation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!