Determining Plant Bandwidth

Hello everyone, I'll do my best to be as thorough as possible in posing my questions:
My plant is a single hydraulic actuator that is controlled using a
servovalve and Temposonic position feedback. I've identified the open loop characteristics by using the method of least squares to fit response data to a z-domain model that has second order dynamics, one zero, and eight extra time delays (8ms delay). The data was sampled at 1kHz.
I'm designing a pole placement controller, with a 1kHz control loop frequency, using Karl Astom's method presented in his "Computer Controlled Systems" book. The desired system model I'm using keeps the same process zero and order of time delay that was identified in the open loop model, and includes second order dynamics for defining the desired response. I'm finding that as I push the natural frequency of the desired system model higher, I begin to create unstable poles in my closed loop system. (To a lesser extent, I see this same effect occur when I increase the desired model's damping ratio). I'm not 100% sure, but I speculate that the instability is a result of trying to create a closed loop system with a bandwidth that is higher than that of the open loop system. Any input with respect to this proposition would be appreciated.
Assuming that my speculation is true, I am left to determine the bandwidth of the open loop system in order to design the closed loop system with a bandwidth that will give me an acceptable margin of stability. (Does that make sense?) My difficulty here is due to the fact that the open loop system takes a velocity input (servovalve position = flow), and gives a position output, so I'm not really sure how the bandwidth is defined. The magnitude of the frequency response plot is pretty much just a straight line. If I differentiate the output to get velocity, does the bandwidth of the velocity transfer function still correlate in some way to the achievable bandwidth of the closed position loop?
Thanks in advance for your help!
--
Colby


Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Colby wrote:

First, I question your assertion that your plant behavior is really a straight 20dB/decade line. Your servo valve will have its own dynamics, with a low-pass characteristic, that will affect the plant behavior. Your measurement will also have a low-pass characteristic.
Pole placement design only works to the extent that you know your plant characteristics. As such it is probably the best design method for leading you down the garden path. Unfortunately it is one of the worst methods that I know of for designing robust control systems. One is reduced to setting poles "where you know they're going to work" and iteratively cutting and fitting a control system 'design' to these theoretical pole positions.
I think the question you want to ask isn't "what is my plant bandwidth", but "to what degree can I trust my plant model at what frequencies". If you know the highest frequency at which you can trust your plant model then you can use this information to direct many different design methods. Unless it bumped up against some other requirement I would take a 10- or 20-degree phase shift due to the delay (or about 3.5 - 7Hz) as my highest frequency. The more you push against this limit the more you'll be sweating.
As you may have gathered, I'm not a fan of pole placement. For general system design I tend to favor designing with a Bode plot and a Nyquist plot -- I keep my gain and phase margins looking good on the Bode, and make sure that the trace on the Nyquist plot doesn't look like a pretzel. If I'm designing for a system that I know is going to vary I will use robust design techniques, but I find that my intuition is good enough for most design tasks, and faster.
I assume that you are working with the real system, with a design that should work yet is unstable in real life. Are you sure that you aren't running into any nonlinearities that are causing instability? Sticktion, square-law flow characteristics and actuator saturation all come to mind as nonlinearities that could cause significant variation between model and reality, and would create difficulties with any aggressively designed controller that assumes a linear plant.
Even if you aren't being tripped up by nonlinearities if your plant model diverges from the real system to any great degree around your loop closure frequency you're going to have trouble. To date I have always preferred using swept-sine frequency response measurements to time-domain ARMA fitting. This is partially because I prefer Bode plot design, but it is also because I feel that a good swept-sine measurement can get a lot of fine detail, as well as an indication of reliability, that is not apparent with curve fitting.
If it were me I would redo the measurements in swept sine, or at least with a really long random input. I would take the measurements at at least two different amplitudes to check for nonlinearities. Then I would design my system taking nonlinearities and expected plant variation into account.
--

Tim Wescott
Wescott Design Services
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Thanks very much for your reply Tim. I'm starting to realize the pitfalls of pole placement design, and will most likely avoid it, as you do, in my future work. This system does have some nasty non-linearities (the supply preasure drops as the flow increases) and saturation (limits of the servovalve). But lets say I am constrained to use pole placement, and the least squares identification technique for this application...
I've asserted that my plant's frequency response is a straight line because it includes a free integrator (velocity input -> position output), although I should've also specified that this is for lower frequency ranges. I agree, that the system includes low-pass characteristics that would affect this line beyond a certain frequency. My question with regard to this is really, how is the bandwidth of such a system defined? Or rather, is it defined at all?
Yes, I am working with a real system, and yes, I've tried running some controllers that look stable in simulation, but aren't when implemented on the real system. :)
I'm a little confused about what you said in your 3rd paragraph:

(sorry for the manual quote, but I'm posting from Google). Do you mean to say that you wouldn't trust the model that I've identified using the least squares method at frequencies higher than 3.5-7Hz, in which case I shouldn't try to design my closed loop control to have a bandwidth of higher than 3.5-7Hz?
For my most important question, let's assume that my model is reasonably accurate: I'm seeing (in simulation) that my controller becomes unstable as I push the desired bandwidth too high. Obviously, if I push it to the threshold value that leaves my simulated control system just barely stable (z-domain poles just inside the unit circle), I'm going to run into problems on the real machine. Is it reasonable to infer that the distance between the unit circle and my largest z-domain pole can be used as some measure of the stability margin? If not, is there some other means by which I can quantify the stability margin of a system when working in the discrete time domain?
What I'm really looking for is a good way to justify my selection of the closed loop system bandwidth.
Thanks again for your help.
--
Colby


Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Colby wrote:

It's defined however you want to define it. I gather that Astrom talks about using the bandwidth of the plant to generate your poles. I think a more important frequency to think about is the frequency where you can't trust your model any more, either because of variation with time or because of the effects of nonlinearities.
When I was talking about taking the point where the phase shift from the delay was significant* that's a definition of bandwidth. You could also use the first pole from the actuator or sensor.

It's a pity that no one has devised a way to get one's plants to read the documentation that we've generated to describe them. Control system design would be much easier if the parts of the system had a better understanding of what they're supposed to do. :)

Thanks for working to overcome Google's deficiencies. The link at the bottom of my sig has a pointer on how to induce it to quote a post.

Yes. You should also consider how your nonlinearities are going to make the apparent behavior of the plant vary with different inputs -- there will be some frequency, perhaps lower than the delay-induced 'bad frequency' where their effects will become significant enough to give you heartburn.

Ah. I get it. I suspect that you'll have system stability problems long before you get an unstable controller, so I wouldn't bother going there.
I don't think you can _just_ look at how close a controller pole is to the stability margin and infer the system stability directly -- after all, an integrating controller has a pole right on the stability margin, yet we use them all the time.
However, as you get into the frequencies where your plant model just isn't trustworthy it's probably reasonable to take highly resonant poles in the controller as indicative of potential problems in the system once the loop is closed.

I do not know of a good way to do this with pure pole-placement design. AFAIK the whole field of robust control was motivated by the failure of pole placement and optimal control to cough up controllers that work well in the real world with plants that don't match their models well.
I have used pole placement design before, successfully, in systems where I wanted to design a controller up front but leave it to a user to set the bandwidth, or leave it to a software engineer to integrate the final system. In those cases I wrote a rule for taking a desired bandwidth and setting the pole locations.
An important feature of these designs, however, was that I did not place the poles completely arbitrarily. Instead, I looked at where the poles ended up in similar systems that had been designed using traditional Bode plot design. Then I designed my pole placement algorithm to place my system poles in a similar manner, thus insuring that the resulting controller would be fairly robust.
* I said use a shift of 10-20 degrees; I'm feeling more optimistic this morning so I'll allow you to set the threshold to 45 if you want.
--

Tim Wescott
Wescott Design Services
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Tim Wescott wrote:

That makes sense. I was stuck thinking of bandwidth in terms of the magnitude plot, without considering the phase.

Agreed.
Why is that? And just to clarify, by highly resonant, you mean poles that have low damping right? Are the lower frequency, more dominant poles of the controller, not going to be the ones to cause problems on the real system? I'm just confused in general here.

My identified system has an unstable zero at low frequencies which bumps the phase up to 90 degrees at about 0.1 Hz so this threshold is really a 45 degree lag from 90 degrees (ie. +45 degrees) right?
Again, thanks for your help.
--
Colby


Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Colby wrote:

--snip--
Just gut feel, based on prior experience.

Correct.
Well...
I really tend to think of this in frequency domain terms, so I'm going to answer from there: severely underdamped pole pairs are going to cause large gain excursions as well as phase jumps. If you have significant loop gain at the frequencies where this behavior happens then yes, those poles are going to cause issues.
If the lower frequency poles are, indeed, more dominant then they are going to create their own stability issues -- but where you'll really have problems is in the high frequency range where your plant is doing whatever it feels like, yet your controller is designed for a specific behavior.

Control theory can do that.

Yes. The shift in question is just the excess shift from the delay.

--

Tim Wescott
Wescott Design Services
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

What was the input for the id procedure

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

I used a periodic square wave signal with randomly varying amplitudes. The amplitude was ensure that the system avoided saturation during identification.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

...The amplitude was *constrained to* ensure that the system avoided saturation during identification.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

How about using random period with PRBS (pseudo random binary sequence) as input for identification? You will get nice information about frequency behavior.
--
Mikolaj

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
napisa:

Yup
There are many ways to model the system but the frequencies that are perturbed by a random walk or prbs should be greater than the max system frequency of interest. Amplitude is important but a lower amplitude can be tolerated for a greater amount of data.
http://www.isc-ltd.com/resource_centre/tech_sysid.html
This gives some good matlab stuff on system id
I think this type of system is notoriously difficult to control but having an adequate model that includes noise effects and disturbances is a ood first step - and is probably dependent upon how complex you want to make the system specification.
Once you have a model that describes the system in the frequency range of interest you can table a range of different types of controller and play merry tunes on them.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

I would use PRBS for hydraulic actuator because it is probably signal adequate to normal work.
Square wave is also good because it's spectrum includes some range of frequency so we can excite some poles and zeros and get information about them.
Amplitude has meaning when testing input is square wave and of course because of saturation. Changing amplitude in my opinion can only show nonlinearities.
Problem would appear with static friction but it's another story. I would choose simple robust controller.
--
Mikolaj

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
napisal:

I guess it depends upon a definition of the system itself and exactly what you are trying to acchieve in terms of the control. Spec??

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Yes, it always does.
--
Mikolaj

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

I am surprised that no one has asked to see your model. It would also be good to know what equipment you have that is being modeled. Then we could sanity check your model. Is your system double rodded? I am surprised no one has asked. Does anybody see how important this is? I know I have mentioned to Tim in previous post why I use least squares system identification in stead of a frequency sweeps and Bode plots.
Why do you want to go through all this trouble when you can buy this off the self?
Peter Nachtwey
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Peter Nachtwey wrote:

I don't have issue with the use of least squares to get the model -- it's using blind pole placement as a design technique that gives me heartburn.
As I mentioned before, the only times that I have been successful at pole placement is when I've chosen a set of poles that I knew before hand would result in a robust design.
--

Tim Wescott
Wescott Design Services
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

I thought that was the whole idea. I always place my closed loop poles on the negative real axis. Over damped and critically damped responses don't cause overshoot. It is the zeros that must be carefully watched.
Peter Nachtwey
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Peter Nachtwey wrote:

I haven't been able to puzzle out your point, so I'll just free associate a bit, and trust that you'll clarify.
My objection to pole placement design is that you have to look at the plant model and, based on the plant model and lots of experience, guess at a set of target pole locations that will result in a robust closed-loop system. Pole placement design does _not_ provide you with a direct means for designing a system that will be robust -- you have to provide that, and it's not obvious how unless you've gotten experience designing by other methods.
Certainly if your target pole locations are unstable you would have to be profoundly lucky to get a stable system, but I contend that without knowing in advance what _stable_ poles to choose you also require luck to end up with a system that is stable in the face of real-world modeling inaccuracies and parameter variation.
Over damped and critically damped purely lowpass responses don't cause overshoot, yes. And the zero locations _will_ cause overshoot (this is of particular note in a PID system, where simply cascading the PID will guarantee overshoot).
Underdamped responses _do_ have overshoot, and simple pole placement design, uninformed by prior experience, gives no guarantees that the actual system won't be underdamped or even unstable when you apply power to your newly-designed controller. This will be the case even if your target pole locations are severely underdamped -- if you ask for too much, you _will_ get an unstable system because of mismatch between the model and reality.
I guess I cannot completely slam pole placement as a design technique, because I've certainly been successful at it and so have you. I just don't feel that _by itself_ it is a good technique for the beginner, or one to use with an iffy plant or one with unknown characteristics. If I'm handed such a plant either I will use graphical design techniques, or if the problem is framed for it I will use formal 'post-modern'* robust design techniques.
* 'Post-modern' meaning after the Ruskies figured out how to make it easy in the 1980s. 'Modern' anything means it's from the 1930s to the 1950s, and that doesn't leave out 'modern' control theory.
--

Tim Wescott
Wescott Design Services
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

That is why I picked very conservative poles. Even if the model is exactly right the poles will be close to the negative real axis.

Yes, you are right about asking too much. We have what we call a tuning wizard that allows one to select the desired bandwidth but we limit the upper end of the selection. As you have pointed out, it is impossible to model a hydraulic system that accurately. If one selects a bandwidth that is too high the unmodeled attributes will cause oscillations. However, most hydraulic systems will do well with a bandwidth of about 3-5 Hz. The highest I have seen is about 15 Hz.

Agreed, but I am not a beginner and I have spent a lot of time modeling hydraulic systems. I put a lot of my knowledge into our product so the end user has an easy time.

It would be interesting to compare results. I have tons of test data from real hydraulic systesms and hydraulic simulators. So where do the poles end up? If they aren't on the negative real axis the actuator will overshoot and customers don't like that. I will admit there is a limit as to how negative the poles can be because of the unmodeled attributes.
I can post a hydraulic motion profile .CSV file for every to identify. We can all compare notes. See the www.controlguru.com. I have posted by results for the heat exchanger problem. I don't get the same results as the control guru ( Doug Cooper ) but they are close enough. I like to broaden my horizons beyond motion control.
Peter Nachtwey
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

sounds painful ;-)

I
system
the
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.