# control law modification

I am taking a Controls class and am stuck on a homework problem. I don't want the solution, but rather perhaps a hint....
I have a controls equation:
y" + 4.2y' + 9y = C
This equation is the result of a equation modified by control function B[g1 y(t), g2 y'(t)].
The original equation is y" - k1*y = k2 * B[]. I am give zeta = 0.7 and omega = 3--from which y" + 4.2y'+9y = C was obtained.
Now the problem states:
determine if y(t) goes to 0, for all C values and all initial conditions. If not, determine what steady-state value it does go to. and then try to modify function B[] to overcome the problem.... Note: C is not known, or measurable.(it represents wind disturbance, but is assumed constant by the problem statement).
Here's what I have so far:
Y(s) = C/s[s^2+4.2s+9] = C/s(s+ (-2.1+j2.1))(s + (-2.1-j2.1));
applying final value theorem:
sY(s) as s->0, gives
sC/s(s+r1)(s+r2),
then lim s->0 gives C/(r1*r2), where r1,r2 are the roots of the characteristic equation (-2.1 +/- j2.1).
so the steady state value is:
C/8.8
If I've screwed anything up to this point, please let me know.
Now, this is the part that I don't understand:
how to modify B[y,y'] from B = (-9-k1)/k2*y(t) -4.2/k2 * y'(t) to overcome the steady state error?
I see that if I can differentiate the entire equation that C would drop out, but I don't think that's really an option. this would give:
y''' + 4.2y" + 9y' = 0.
I know I can't just add -C to B[] because C is unknown.
Any hints?
Thanks,
Bo
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Bo wrote:

Something is missing. I think that when you find it and correct for it you will find (and correct) your problem.
You say that your original equation is
y" - k1*y = k2 * B[],
and you derive
y" + 4.2y' + 9y = C.
But your original equation doesn't involve C (at least as you've presented it here). It looks like you took the specified natural frequency and damping factor and 'derived' your end equation by looking in a handbook. Really, the problem should be stated as something like
y" - k1*y = k2 * B[] + (some expression involving C),
then when you find your gains you can work out where C fits in to the output. You're being asked to make a generic PI controller, which should reject any steady-state disturbance from C, so the question is fair as long as they are telling you where C comes into the dynamics of your system.
--

Tim Wescott
Wescott Design Services
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Tim,

# No. My failure to communicate well. The y"+4.2y'+9y was/is based on our last homework. He added the C, as a wind disturbnace input for this problem. The equation came from class notes/ application of the formula/equations:
y" + 2zw y' + w^2 y = 0.
given zeta,z, = 0.7 and w,omega, = 3, we get the equation above.

# right. And it was-- again my fault for not specifying where/how C came into play.

#Do I have the steady-state part correct?
How does one make a generic PI controller? Trying to read between the lines here. Are you suggesting that B[] is modified by: (integrating?)
B = g1Y(s)/s + g2 sY(s)/s = g1 Y(s)/s + g2 Y(s) ?
Am I on the right track? It seems to me that not integrating, but differentiating the equation is the only way to get rid of C in
y" - k1*y = k2 * B[] + C
Thanks again Tim,
Bo
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Bo wrote:

Argh! No, you're not! It's early enough in the morning here in Oregon that the caffeine hasn't taken effect!
You're being asked to make a _PD_ controller (one gain times proportional, another times differential). Sorry for any confusion.

Actually, if you implement this as it implies (integrate everything, then differentiate) you'll get a problem because of the pole-zero cancellation. In the s domain you want something like
B = k_p Y(s) + k_i Y(s)/s + k_d Y(s)s
I think I kind of gave away the show. Oh well.

Aside from the pole-zero cancellation, yes.

Ah! You can differentiate y, and get rid of C -- but that just tells you that y will settle to some steady value. You want (presumably) y to settle to 0 (or zero steady-state error). For that you need an integrator in the feedback.
You'll go through all the math, exhaustively, soon. But for a preview:
When you integrate your error the output of the integrator is guaranteed to follow the average error*. So _any_ non-zero average error will make your integrator value build up. A well-behaved plant** will respond to this by driving toward the set point, which will drive the average error to zero, which is what you want.
So integrators are good.
But integrators in your loop will reduce stability.
They're kind of like managers (or girl friends) that way.

* That's _average_ error. So in the absence of any clever schemes your error may have to go to the other side of zero for a while.
** I.e. a linear plant, or one who's response is strictly monotonic. If you're where I think you are in your course of study I just spouted gibberish -- just wait until you first try to close a loop around a sticky motor driving a loose gearbox, then you'll understand.
--

Tim Wescott
Wescott Design Services
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
OK Tim,
I'm going to snip a bit here as its getting hard to read....

# I can understand that!

But isn't this a PID controller? I think I see where the instructor is going. Our last homework was a PD with no forcing function and now he wants us to see (?) that by adding the forcing function we'll need a PID??? If so, then if I take my original B[] = g1*y + g2*y' and integrate it I'll get:
new B[] = g1 * y/s + g2* y + Ci where Ci is an integration constant?

I don't think so...I'm as confused as ever!

You lost me there. I'm going to re-read this chapter because I'm missing something.
Another unrelated question:
What is the physical meaning of 'residue' when computing the residues of a G(s)? The book really doesn't explain that very well.

Yes I do want steady-state=0. So I want a PID--not a PI or PD only. Is that right?

Sounds like a control theory paradigm applied to women... ha ha

Sounds complex.... I'm only 3 weeks into the class as a Grad student, but I had Controls 20+ yrs ago as an undergrad, so I needed the refresher..apparently more than I realized.
Thanks,
Bo
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Bo wrote: -- snip --

Yes it is.

If you want the steady-state error to be zero, yes.

Well, yes, but you usually leave out the integration constants -- they go away during system operation at any event.

It probably won't be in there. Pole-zero cancellation happens when you have a physical system with a pole at some frequency, and you cancel that pole with a zero -- so if your system transfer function were
G(s) = 4 / (s - 10)
you could cancel the pole by cascading a controller like
H(s) = (s - 10) / (s + 4)
giving you an over all transfer function of
H(s)G(s) = 4 / (s + 4).
At this point you're thinking "hey! I'm in the clover!" because you have a nice tractable transfer function, right! Actually you have a nightmare. That pole at s = 10 is unstable, and you've just masked it off from being controlled. Unfortunately, it'll still go nuts, which means that you have gone from an unstable controllable system to an unstable uncontrollable one.
If this made it more clear -- good. If not -- ignore me.

I'm not sure there really is a good physical interpretation of a residue, at least if you're talking about partial fraction expansion. In some cases you just have to accept that the math gives you useful answers, and you have to trust it, but it won't necessarily give you answers that have direct physical meaning.
The only real physical interpretation that you can make from partial fraction expansion is to note that if you have _any_ unstable poles in your system they _will_ show up in the output -- this is a good way of proving that a system must have all stable poles if it is to be stable.

For steady-state = 0 you want integral control. For this particular system to be stable you need proportional control, and if you want it to be fast and stable you need derivative control, too. So if you want it to have zero steady state error, be stable, and be fast, then you need PID control.

Don't worry. They'll spare you the nonlinear control -- you'll get to learn that on your own, or later.
--

Tim Wescott
Wescott Design Services
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Hi Tim,
See new comments marked with \$.

\$ Indeed much more clear. I am curious though about how/why the zero-pole cancellation masking the (s-10) term causes the system to be uncontrollable.

I kinda figured that since the books didn't even try to address a meaning for residue. I just wanted to be sure.

\$ Probably. I'm planning on taking the 'sequel' next semester if they offer it. I plan to focus on Controls and DSP for my MSEE since missiles and Radars are big in these parts...
You've been a big help Tim and I sincerely appreciate your time.
Bo
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Bo wrote:
...

Tim didn't mention that he has a new book out, /Applied Control Theory for Embedded Systems/. I haven't read it yet, but from what I've read of his newsgroup postings and on-line papers, it probably has clear simple discussions of important issues. If you intend to pursue the field for yet another semester, you might look into it. From what I understand, it's more heavily into how to make things work that the usual theoretical text. I have found that fitting theory to what I can do is quicker and more satisfying than trying to grapple with reality using only theory as a guide.
http://www.powells.com/cgi-bin/biblio?inkey=2-0750678399-0
Jerry
--
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

I agree Jerry--thanks for the tip.... I'll see if I can find it locally at the library first...
Bo
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Tim Wescott wrote:

-- snippy --

No! I'm not awake yet! You're being asked to make a PD controller, but you're being led, via the age-old socratic method, to think up a PI controller which was no doubt mentioned in the lecture.
Now I've given you the answer, and probably blighted your control systems engineering career. You'll never understand this stuff, and be doomed to get an MBA and become a pointy-haired manager, then a corporate VP of Engineering. You'll preside over folks who actually know what they're doing, but through your ignorance of the effectiveness of integral control you'll doom their efforts to failure. But if you consistently manage to get promoted before the s**t hits the fan you'll make lots of money, and your trophy wife will be really good looking and attentive -- until she leaves you for a body builder named "Hans".
--

Tim Wescott
Wescott Design Services
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
in the lecture.

<perhaps> and be

<when H-E-double toothpicks freezes over!>

<sounding better>
You'll preside over folks who actually

haha! but can Hans lick his eyebrows?! If not, I'm safe.... :)
Bo
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Yo Bo with da Flo
Sounds like you are considering the flexibility of a tower and nacelle for a wind turbine
If C is a constant i'd be surprised - Towers dont like LF oscillations around 0.1 Hz (nor do most structures) and C would realistically have a distribution : N(C,sigma) - for a normal distribution.
Now the distribution of wind speeds is normally described by the weibull distribution - which is a skew type. and the interest is really to avoid exciting certain eigen modes that are endemic in the system -
Hot wire anemometers are cheap and cheerful and have a faster time constant than simple cuptype - so it is possible to measure low gust frequency with some accuracy.
Css = C/9 as the dynamic elements go to zero for a constant input Of course this is not the same for a noisy input
There are many instances like (Tacoma) where a structure goes into a merry dance at some wind speed and gust frequency allowing a disaster to strike
Fortunately for those who know a little control mathematics it is possible to define this type of system - and understand through simulation how to avoid the not so obvious pitfalls.
Linking these type of ideas with structure design through optimisatiom and Finite Element Analysis is an interesting problem that springs from a simple second order equation
Would have thought that the critical considerations for such a system would be to define the underlying weather for the region through measurement over a long period of time. also use met office data.
Consider the tower as a simple strut
Consider the maximum safe value of C that the structure can withstand with the added effects of gust frequency
Consider the effects of blade rotation
HTH
Setanta

<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Bo wrote:

This is a type 1 under damped two pole system. Think of pushing a spring with a mass on the other end. This could be a simple model for a hydraulic system. This system will not go back to 0 because it is a type 1 system or position system. Position systems stay where you leave them if there is no other force applied. Velocity systems and temperature systems will go to 0 or ambient. These are type 0 systems.

You left out the one s. As s -> 0 the result is infinity assuming a non zero value for C.
Steady state can be determine because it is a type 1 system. It will stay where you leave it assume you stop the system by ramping C down to 0.
Think of C = G*u(t) as a gain with units like inches or meters per second per volt and some control signal that is applied. Most position controllers will output + or - 10 volts. The u(t) is generated by the controller when it sees an error

All you really need is a proporitonal gain and you will get back to 0. In the real world you would need an integrator but for this example it looks like you just need a PD. Because your system has 3 poles you need a PDD` to place all the poles. If you want to use an integrator then you need to use a PIDD` to place all four poles. The integrator comes with its own pole.
So you have Kp(s)=G/s[s^2+4.2s+9] and Kc(s)=Kp+Kd*s
Now make the closed loop transfer function Tcl
Tcl(s)=Kc(s)*Kp(s)/(1-Kc(s)*Kc(s))
and find the roots of the characteristic equation ( the denominator ) of Tcl(s) This is hard to do by hand. Now you must find values of Kp and Kd that keep the poles negative and your system will converge on 0. If you change Kc(s) to Kp+Kd*s+Kd`*s^2 then you can place all three poles at the negative real axis and get a critically damped response. I have the formulas for the PIDD` all worked out to provide underdamped or critically damped response but that would leave nothing for you to do.
Easy. I do it all the time, seriously. Your data isn't too far off from what I see all the time.
Peter Nachtwey
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Peter Nachtwey wrote:

-- snip --

Your conclusions are correct, but sadly you're backwards on your type numbers. From "Design of Feedback Control Systems" by Hostetter, Sevant and Stefani: the system type is the number of s = 0 numerator roots in the error transmittance.
One generally induces a certain type number by piling on the integrators in the controllers, although sometimes the plant will give you one or two for free.
--

Tim Wescott
Wescott Design Services
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Tim Wescott wrote:

What do you mean by backwards? I count three poles in Ys) with one at 0.

What is this trying to say? What is this about roots in the numerator?
Point us to a link on the internet. Y(s) looks very similar to http://www.engin.umich.edu/group/ctm/extras/ess/ess2.html
Peter Nachtwey
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Bo wrote:

I didn't even notice the first time around -- you're working so hard to apply the rote method, you are missing the easy solution that's staring you in the face!
You have Y(s) = C/(s(s^2 + something*s + 9)), and you're finding lim sY(s) as s -> 0. Well, that's just C/9.
--

Tim Wescott
Wescott Design Services