Why the controller block diagram is not working (while tracking the reference and water level in tank 2 at specific level)?

Please help, why the controller (u) is not working?

1 Comment

In order to understand this better, please send the following information:
  • Your problem statement.
  • Your solution approach to the above problem.
  • Details about the issue you are encountering.

Sign in to comment.

Answers (1)

It seems that your equation for u causes the level of Tank #2 to dip below 0, thus term sqrt(x(2)) returns an error message related to the complex number. In the attached Simulink model, your original u is disabled and two lines are added in the "Level Controller" Function Block:
where and are the reference levels of Tank #1 and Tank #2, respectively.
Note: I didn't know how you derived your original equation for u. But from your scripts, the Dual Tank Liquid Level System is given by
with the initial condition
and you want to regulate the level of Tank #2 to . Since can only be affected by , I designed the reference level of Tank #1, so that
.
Then, I backstepped the process and designed the control equation for u so that
.

5 Comments

because i got this error: Index exceeds array dimensions. Index value 0 exceeds valid range [1-1] for array 'K2'.
The u equation is already in the MATLAB Function block "Level Controller".
Isn't a constant that you defined it in your original Simulink model? I didn't change it.
Did you download and run the "Tracking.slx" file attached in my Answer?
Yes, I download it, I have one last question, did you use lyapunov function to find the new controller?
If you find the MATLAB code and math explanation helpful, please consider accepting ✔ and voting 👍 the Answer. Thanks a bunch! 🙏
Back to your query, I actually used basic algebra manipulation and the exponential decay principle. No difficult math!
I started from your original error definition, where you want to track the tank #2 level
.
Taking the time derivative of
, because due to , a constant.
Making substitution to obtain the error dynamics
.
Following the principle that guarantees exponential decay
where , is chosen as the indirect manipulated variable because we can directly manipulate in dynamics through the direct manipulated variable u.
Thus, we can equate both equations where
and solve for
.
Making substitution for to obtain the reference where must track
.
Similarly, repeat the design steps to obtain for u:
.
Here, because I find it a little mathematical tedious to obtain the time derivative for , I let , and thus it is reduced to
.
By the way, how did you derive the original equation for u? Can you show me?
% -------------------------------------------
Afterthoughts: I think you can possibly design based on
which leads to
and
leads to

Sign in to comment.

Categories

Asked:

on 27 Nov 2022

Commented:

on 6 Dec 2022

Community Treasure Hunt

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

Start Hunting!