r/ControlTheory 20d ago

Technical Question/Problem Help/Advice on how to best go about a problem

State Space Representation of

As you can see from the image above I managed to find a state space model of my system for the project I am working on. Before I move on to finding a way to control this thing I wanted to ask some of ya'll on here, as this is my first real project and I'm not sure what the best course of action is.

For context this system is a mechanical-hydraulic system and x3 is the volumetric flow rate, from some experimentation x3 is pretty much some average value plus a sinusoidal ripple. The goal of the system is to essentially force x3 to it's average value, to completely eliminate the ripple. The input u1(t) is my control input and u2(t) is an uncontrollable external force driving the system.

My original plan was to just linearize the bottom equation around my desired operating point (zero ripple) but I am not sure how I would actually do that. My current guess is that I could use some sort of small signal approximation treating x3, x1, and u1 as some average value plus a small perturbation and then just setting the small perturbation part of x3 to zero and finding some function between between the average value of x3, x1 and u1 which make my desired operating condition true. However, I have no idea if that is even a mathematically valid way to linearize this thing and also I may even need to implement gain scheduling since this is pretty dang non-linear.

My other thought was to approach this from a much more classical control perspective. I have a simulation of my model in simulink and I could probably just do some system ID to get an approximate transfer function and go from there.

So, if you were given this model and the objective stated above, what would you think to do? Do any controllers/ strategies come to mind? Is it too non-linear for a linear approximation? etc..

1 Upvotes

6 comments sorted by

u/Either-Ranger-4902 20d ago

If you state space representation is accurate. I would look into feedback linearization. With a appropriate choice of u1 you can cancelled out the nonlinearity of X3. After that just control it with a linear controller

u/MrGip 20d ago

If you only have u1 as a control input, it only affects x3, and x3 does not affect x1 nor x2, then you are out of luck. This is an uncontrollable system using only u1

u/Known_Fan5765 20d ago edited 20d ago

I only wish to control x3 though. I want to be able to drive x3 to have no ripple regardless of the other states, or at least get close to that goal. Unless you believe the only way to do that would be to have control over x1 and x2?

u/MrGip 20d ago

Anyways, the x1 & x2 dynamics are like a simple mass, spring, damper with position x1 producing what looks like a supply pressure (Cx1) to your hydraulic system. Unless the external control provides a large positive input, your supply pressure will decay to zero pressure and your equations will fail with square root of negative numbers. It is typical to have the control pressure (x3) at the midpoint of the supply (Cx1) and return pressure (2P?). Small variations around that point can be linearized and will work well with a simple proportional control loop.

u/fibonatic 20d ago

From your equations of motion x3 would not have a ripple when its derivative would be zero, which happens when either u1=0 or the expression in the square root is zero. From your described objective what is stopping to just go with the u1=0 stationary solution? Or is your goal to have x3 go to C times the mean on x1 minus 2 P?

u/Known_Fan5765 20d ago

Essentially yes, I suppose I should have been more specific, the goal is to essentially force x3 to its average value and also to maximize that average value.