필터 지우기
필터 지우기

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

조회 수: 3 (최근 30일)
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일
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일
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일
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

Community Treasure Hunt

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

Start Hunting!

Translated by