Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
mpc toolbox and sys id toolbox

Subject: mpc toolbox and sys id toolbox

From: Ben Spivey

Date: 24 Nov, 2010 05:22:03

Message: 1 of 3

Hello,

I have noticed one issue with syncing System Identification toolbox models with the Matlab MPC toolbox. When I attempt to create the mpc object, I receive an error:

??? Error using ==> mpc.mpc at 158
Direct feedthrough from manipulated variables to any output is not allowed.

I understand from the limited documentation about this error that this means that the matrix D in the following model must be all zeros:

x(k+1) = A*x(k) + B*u(k)
y(k) = C*x(k) + D*u(k)

The problem is that when I create an ARX sys id model and then convert it to a ss model in the form necessary to use it with the Model.Plant command, it naturally has a non-zero D vector. In fact, in all of the sys id models I have used, there is direct feedback between y and u.

Please help to know if I am interpreting this error correctly. The Sys ID toolbox claims to provide models for use in the MPC toolbox, so it seems unlikely to me that these models could not be transferred from Sys ID to MPC.

Thank you,

Ben

Subject: mpc toolbox and sys id toolbox

From: Arkadiy Turevskiy

Date: 29 Nov, 2010 16:47:04

Message: 2 of 3

"Ben Spivey" <ben.spivey@gmail.com> wrote in message <ici7dr$bp6$1@fred.mathworks.com>...
> Hello,
>
> I have noticed one issue with syncing System Identification toolbox models with the Matlab MPC toolbox. When I attempt to create the mpc object, I receive an error:
>
> ??? Error using ==> mpc.mpc at 158
> Direct feedthrough from manipulated variables to any output is not allowed.
>
> I understand from the limited documentation about this error that this means that the matrix D in the following model must be all zeros:
>
> x(k+1) = A*x(k) + B*u(k)
> y(k) = C*x(k) + D*u(k)
>
> The problem is that when I create an ARX sys id model and then convert it to a ss model in the form necessary to use it with the Model.Plant command, it naturally has a non-zero D vector. In fact, in all of the sys id models I have used, there is direct feedback between y and u.
>
> Please help to know if I am interpreting this error correctly. The Sys ID toolbox claims to provide models for use in the MPC toolbox, so it seems unlikely to me that these models could not be transferred from Sys ID to MPC.
>
> Thank you,
>
> Ben

Hi Ben,
See if this helps:

ARX model can be feed-through free (D=0) when B0=0. If user uses “arx” command to identify an “idarx” model from plant data, set “nk” to an appropriate positive integer that represents dead time. See the example in the “arx” reference page.

Subject: mpc toolbox and sys id toolbox

From: Arkadiy Turevskiy

Date: 30 Nov, 2010 16:37:04

Message: 3 of 3

Note that there are other ways to create an “ident” model without direct feedthrough from MV to OV, e.g. using “pem” command. And if your plant does have direct feedthrough, you have to twist it (e.g. adding a small time delay at the MV) before using it in MPC.

Tags for this Thread

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us