Why is uncertainty parameter outside input-output loop not linearised in robust control toolbox?

5 views (last 30 days)
Dear Matlab community,
I am using the Robust Control Toolbox in Simulink 8.3 (R2014a) and encountered a problem with the linearization command. The following plant has an uncertainty in the parameter r :
The uncertainty is included in the gain directly behind the constant in the 'Specify Selected Block Linearization' as:
I'm linearising my (very simplified) plant in order to later perform a robustness analysis on a controller and see the efect of the parameter r (c.o.m. which has a value of 3.8 and uncertainty of 10%). However, the resulting state-space system ignores the uncertainty;
sys =
Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 1 states, and no uncertain blocks.
It does recognise that it is an uncertain continuous time ss-model but when I look a the step response of the system it is a single response (not multiple due to the uncertainty). Placing the gain directly after the contant T (so in the input-output loop) solves the problem. Also when I instead put an uncertain transfer function in the linearisation of the Gain, it is not ignored (even when not directly in the io-loop). This seems like strange behaviour to me.
My actual model includes external forces (aerodynamic forces) with uncertainties that do not appear directly in the io-loop. Therefore it is not possible to put a gain in the io-loop. So I need a proper solution to the problem.
Thank you!

Accepted Answer

Erman Korkut
Erman Korkut on 30 May 2014
Edited: Erman Korkut on 30 May 2014
Hi J. Van,
This is the expected behavior. When the uncertainty is not in the linearization path given the input and output locations, it is not captured in the linearization result as LINEARIZE command returns the minimal system.
Also, I was not able to reproduce the behavior in your comment "Also when I instead put a uncertain transfer function in the linearisation of the Gain, it is not ignored (even when not directly in the io-loop).". As an example, I specified the linearization of Gain in your sample model as "uss(ureal('r',1,'Percentage',10))" instead of just ureal(...). It is still ignored and not captured in the linearization result.
As a workaround to make your uncertainties captured in your linearization results, you can add extra input and output locations. For example, you can add another linearization input before the gain in your sample model.
Please let me know if you have any further questions.
Thanks, Erman Korkut
  1 Comment
J. van Delft
J. van Delft on 2 Jun 2014
Hi Erman,
Thank you for your answer. I repeated your example of specifiying the linearisation of Gain as "uss(ureal('r',1,'Percentage',10))". Indeed, it is ignored. However, when you try:
test_pole = ureal('pole',10,'Percentage',10);
and then specify the linearisation to be "tf(1,[1/test_pole 1])", the Gain is not ignored.
I like your suggestion about adding extra input and output locations. I will give it a try and see if it is suitable for my model.
Thanks!
J. van Delft

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!