Azzera filtri
Azzera filtri

control system toolbox - state space model containing constant vectors

14 visualizzazioni (ultimi 30 giorni)
I am trying to create a state space model using ss. My system has the following format:
dx/dt = Ax + Bu + f
y = Cx + Du
(x,y and u are states, outputs and inputs resp)
f is a constant real valued vector.
How can I create such models in control toolbox?
After this, I would like to obtain the discrete time equivalent.
Please help.
Abhishek

Risposte (2)

Rajiv Singh
Rajiv Singh il 11 Ago 2011
One way is to add a new state to the system whose derivative is zero.
Let X = [x; x2] where x2 is a single variable if f is a scalar.
dX/dt = [A 1; 0 0] X + [B; 0] u
y = [C 0] X + Du
X(0) = [x(0); f]
  1 Commento
Abhishek Murthy
Abhishek Murthy il 12 Ago 2011
Thanks for the reply!
These linear systems are actually "pieces" of a PWA non-linear system. So the initially condition one piece is the final condition of the previous "piece".
I will revert back once I understand how your suggestion will affect this process.
Abhishek

Accedi per commentare.


Fangjun Jiang
Fangjun Jiang il 12 Ago 2011
That means your input has an offset. For example Define New_u=u+Offset, so u=New_u-Offset and put it in your equation.
dx/dt=Ax+B(New_u-Offset)+f;
y=Cx+D(New_u-Offset)
And solve: B*Offset=f for the value of Offset. All shall be proper size matrix.
And you don't need to worry about the constant term at y=Cx+D*New_u-D*Offset because it is just a constant term at your output.
  2 Commenti
Abhishek Murthy
Abhishek Murthy il 12 Ago 2011
Thanks for the reply. I want to make sure, I understand your answer completely:
Are you suggesting that the new system will look this?
dx/dt = Ax + B(New_u)
y = Cx + D(New_u)
After the designing the controller with the above state space equations, during operation,
the actual input u to the system will be New_u-offset and output from the system will be be shifted by D*offset ?
Thanks again.
Fangjun Jiang
Fangjun Jiang il 12 Ago 2011
Yes. That's what I remembered. After using ss() to solve your problem, your original input and output are just off by a constant term.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by