Is it possible to design a controller in simulink using experimental data only?

Hi, Please I am new to Simulink, I need to design a controller from experimental data(input is Speed and output is differential pressure). I have a model designed using simulink blocks, now I need a controller to tune this model. Each time I try to linearize I get this error In "linearize(modelname,io)" using block substitution the block Control_plant_input_output/PID Controller cannot be substituted due to an error in the MATLAB function Speed. The error is: Undefined function 'Speed' for input arguments of type 'struct'.. Any pointer on what to do next. please help.

 採用された回答

Arkadiy Turevskiy
Arkadiy Turevskiy 2014 年 6 月 24 日

0 投票

Yes, you can follow the workflow explained here . Note that this requires R2014a.

2 件のコメント

Arkadiy Turevskiy
Arkadiy Turevskiy 2014 年 6 月 24 日
If you want more specific help, please attach the model as well as the description of what you did.
felix
felix 2014 年 6 月 25 日
Thank you for your prompt response. Although, I am using R2012b. I can the R2014a, if that will help. Here is my design. The model is already in the subsystem, which I created by copying all the blocks and then create subsystem from selection. What i am trying to achieve is to create a controller to tune the input(speed) to match output(DP), such that as speed varies, there is a matching DP. The lookup table has data in it and the centrifugal pump too. Thanks for your help sir.

サインインしてコメントする。

その他の回答 (2 件)

Arkadiy Turevskiy
Arkadiy Turevskiy 2014 年 6 月 26 日

1 投票

The model as provided does not quite make sense, as it uses positive feedback.
Here is what I did to get some sort of controller design (without really understanding physics of the system):
  • I commented though the lookup table block for now
  • I changed sum block to use negative feedback
  • Changed step block parameters
  • Changed PID to PI and set integrator initial condition to 0.
I then pressed "tune" button in the PID Controller block and accepted default tuning the too, came up with:
I then unchecked the limit on the number of data points shown in the display block
and ran the simulation getting this result:
The overshoot is a bit high, so I went to the PID Tuner and reduced the bandwidth by an order of magnitude:
I updated block parameters with tuned value, and ran the simulation for 5 secs (as it seems nothing is really happening after 5 secs):
As this image shows, we got rid of the overshoot but disturbance rejection is now worse than with the original design. The disturbance is coming from here:
To check that I set the ramp slope to 0 and reran the simulation. response looks pretty good.
Hope this helps you get started.

1 件のコメント

felix
felix 2014 年 6 月 27 日
I want to say a big thank you for helping me get started on this. I didn't know the physics of the model does not make any sense. I was only trying to use measured data extracted from digitized graph to create a model that will generate same output as that seen on the graph. There are no actual equations or physics, if there is any pointer on this I will appreciate it. But all the same, I want to say a big thank you for this exposure. God bless you. Regards to everyone at Mathworks and your family... Thanks!!!

サインインしてコメントする。

Magdi Nabi
Magdi Nabi 2017 年 10 月 3 日

0 投票

Hi, i need to design model like yours but the input is flow ( 2 inputs) and 1 out put i need to control the flow by vary the speed of both pumps so could you please guide me how to do that using simulink?
i know how to design the controller, my problem is to design simulation model by experimental data?
thank you very much

質問済み:

2014 年 6 月 21 日

回答済み:

2017 年 10 月 3 日

Community Treasure Hunt

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

Start Hunting!

Translated by