Laplace Transforms in Control Engineering

Hello,
I am writing up my PhD at the moment, and I was hoping someone would be able to confirm some Laplace transform techniques that I have been
working with.
My thesis is on self-organising fuzzy logic control and for the past month and a half I have been trying to replicate experiments published by the original creator of the self-organising fuzzy logic controller , so as to compare the original work with my own.
The original author's experiments use a transfer function
X(s)= (0.00375/((s+0.15)*(s+0.25)))*U
where U is the controller input to the system and X is the system output.

multiply it by 1/s and then get the inverse Laplace transform, am I on the right track?
I have used Maple to calculate this and the resulting equation I am using to graph my system is x(t)=U[0.1-0.25*exp(-0.15t)+0.15*exp(-0.25t)], any idea if this is correct ?
Any help with this would be greatly appreciated, as I have been going round in circles for the past few weeks trying to figure it out, I just need someone to confirm I'm going in the right direction.
Thank you for your time, Ann
. T. J. Procyk and E. H. Mamdani "A linguistic self-organizing process controller" Automatica, Volume 15, Issue 1 , January 1979, Pages 15-30
____________________________________ Ann Tighe, Department of Information Technology, National University of Ireland, Galway. Ireland.
Email: snipped-for-privacy@gmail.com Website: http://geminga.it.nuigalway.ie/~9709864p
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
snipped-for-privacy@gmail.com wrote:

<rant>
So instead of taking one 3rd-year course in control system design as part of your 3 - 5 year, full-time program, you're going to learn less Laplace analysis than you'd get from one article on the internet?
All of the fuzzy logic articles (and parts of books) that I have read, and all of the neural network information that I have run across, tend to have gushing proclamations about how very cool the technique is, followed by an example that could be solved by throwing a simple PID controller at the problem and turning three knobs.
Without really knowing control theory -- and here I mean up through adaptive and nonlinear control theory -- how are you going to verify that your solutions aren't just really roundabout, fragile, unreliable ways to do what any good practitioner with a Bachelor's degree in the appropriate area could do? Fuzzy logic and neural nets may get you to a solution, but you still need to know nonlinear control theory to verify said solution.
</rant>
Yes, your technique for getting a system step response from a transfer function (assuming that U = 1) is correct. The resulting transfer function also looks quite plausible (I just checked the final value and the fact that it had exponents -- I didn't check the values of the exponents).
--

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

This scenario is one of the main reasons I left academia and returned to the real world of industry!
fred.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Hi Tim,
Thanks for your help.
I was expecting the anti-fuzzy logic stuff ; )
I'm not here to say fuzzy logic is better than anything else, it is just an alternative. Maybe it has some disadvantages, but maybe it has some advantages two, that make it a worthwhile research topic.
The reason that I have got into the control theory side of things so late in the game, is that my work is based on limiting the exponential rule growth in self-organising fuzzy logic rather than improving the control in general.
I'm focusing on the quantity and quality of rules in the rulebase when adapting.
I have been comparing my threshold based self-organising control against the original version using an inverted pendulum experiment. However now I would like to run the same experiments as Procyk and see can I limit the number of rules and retain the same level of control.
Would any one be able to confirm that my resulting transfer function is correct?
Thanks, Ann
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
| Hello, | | I am writing up my PhD at the moment, and I was hoping someone would be | able to confirm some Laplace transform techniques that I have been | working with. | | My thesis is on self-organising fuzzy logic control and for the past | month and a half I have been trying to replicate experiments published | by the original creator of the self-organising fuzzy logic controller | , so as to compare the original work with my own. | | The original author's experiments use a transfer function | | X(s)= (0.00375/((s+0.15)*(s+0.25)))*U | | where U is the controller input to the system and X is the system | output. | | >From my reading I believe that to graph this in a time domain I have to | multiply it by 1/s and then get the inverse Laplace transform, am I on | the right track? | | I have used Maple to calculate this and the resulting equation I am | using to graph my system is | x(t)=U[0.1-0.25*exp(-0.15t)+0.15*exp(-0.25t)], any idea if this is | correct ? | Yes, but what do you do with it? You can plot it and see if it makes sense, you can differentiate it but other than that it isn't very useful. In practical applications U is not constant. Then what do you do?
Peter Nachtwey
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Hi Peter,
I'm planning to calculate a new value for U at each time step of 0.5 seconds, so that I can make X stabilize at the set-point of 65
I want to replicate this diagram, from the Procyk paper, see http://www.anntighe.net/process1.gif
I'm I going about it right?
Thank you for your help, Ann
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
What you need to do is convert the transfer function in the s domain to a difference function or discrete state space. Then you can change u(n*T) using your fuzzy controller and the system will respond. You need something that looks like this:
x(n) = A1*x(n-1)+A2*x[n-2)+B1*u(n-1)+B2*u(n-2)
Simple functions like yours can be found in the z-transform tables. The tables will tell you how to compute the A and B coefficients.
Now you can change u(n) at each iteration and compute a new x(n). Now you can simulate how the system will respond to your fuzzy logic or any other controller.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

Multiplying the Transfer Function by 1/s is equivalent to stimulating with a unit-step input signal; so the time-domain response will, therefore, be the step-response. As an alternativ to using Maple, a book on Engineering Maths or (Control Eng. text book) would typically have tables of Laplace Transforms and their inverses in the appendices?. The solution you seek is one of the standard entries in such tables. (By the way: Laplace Transforms are a topic in maths that predates the interests of Control Engineering by more than a century.) Does nobody at NUI Galway have MATLAB? (There are many licenses at NUI, Maynooth). With the MATLAB Control-Systems Toolbox you can readily plot these time-domain responses and do the Laplace to time-domain conversions.
Your answer for x(t) looks correct to me! - Kelvin B. Hales Kelvin Hales Associates Limited Consulting Process Control Engineers Web: www.khace.com
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Hi Kevin,
Thank you so much that is very useful.
I have access to Matlab but my controller written in C, so I would prefer ( if at all possible) to have an equation that I could add my controller output to and then graph with gnuplot.
Rather than using the step function in Matlab.
I am presuming that I am looking for the step response but I am not positive. All I have is a diagram of the previous results to work with, and that graphs x with respect to time ( see graph: http://www.anntighe.net/process1.gif )
So I suppose I have a new question. Is a step response the only way to view a Laplace transform in a time domain ?
Thanks again. Ann
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
snipped-for-privacy@gmail.com wrote:

Hmm. Time for a crash course?
Your question, alas, is meaningless. A Laplace transform is simply a representation of a time-domain signal, which simply is. A signal does not have a response, it only has it's Laplace transform. So the way to view a Laplace transform of a signal in the time domain is to do an inverse Laplace transform. To do this by hand one usually takes the expression at hand, performs a partial fraction expansion on it, then does an inverse transform on each piece.
A system responds to a signal, and the way a given system responds to a given signal is that system's response to that signal. Boy. I mangled that. Try this: go to http://www.wescottdesign.com/articles/zTransform/z-transforms.html and read the article. Skim through the introductory z transform stuff (unless you find it interesting) until you get to the part that describes transfer functions -- I make the distinction (I hope) between a signal, it's transform, a system, it's transfer function and it's response.
Is your controller working in closed-loop or open-loop in the immediate sense? I.e., are you using the target system's output to update the controller's next response, or are you doing a run, updating your controller, then doing another run? If you are, then you cannot just take the controller output on a run-per-run basis -- you have to apply the controller output at whatever sampling rate your controller runs (or continuously if it's a continuous controller). If you _are_ using immediate closed-loop feedback then you'll have to simulate your plant (target system) in your program. If you send me an email and I'll give you a treatise on it, or you can tell your U library* to go buy my book and I'll tell you the appropriate page numbers.
* Unless you want to get serious about this stuff, in which case you can buy it: http://www.powells.com/partner/30696/s?kw=Wescott+Tim .
--

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

Whoops! Didn't mean to post all that here. Sorry! I guess its there on the web for eternity now!
Kelvin
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Kelvin Hales wrote:
...

What happens if you hit your keyboard's "delete" key while reading one of your own posts?
Jerry
--
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

My newsreader software marks the message for deletion in our local (off-line) newgroup message database. Why? What were you hoping might, perhaps, happen?
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Kelvin Hales wrote:

With my browser, I get the message, "Do you really want to delete this message?" If I say yes, another message appears that reads, "Message deleted." and it disappeared from my news server and shortly thereafter, all cooperating news servers. Not all news servers honor deletes. Google does not.
If the message doesn't originate with me, the message is instead, "This message doesn't appear to have come from you" and that's the end of it.
Jerry
--
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

I thought that might be it. My newsreader has a delete capability. I've given it a whirl. OTOH, what I wrote wasn't too bad, so its no great disaster if it circulates, I guess.
Thanks.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
snipped-for-privacy@gmail.com wrote in

That will give you the step response of the system. If you want the impulse response, skip the 1/s part.
--
Scott
Reverse name to reply
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
snipped-for-privacy@gmail.com wrote:

-- snip --
Ah! I didn't notice it before -- U is the input signal, which in the case of a step function is U = 1/s. In your expression x(t)=U[0.1-0.25*exp(-0.15t)+0.15*exp(-0.25t)] you are mixing the time domain (functions of t) with the Laplace domain (U is a function of s, and should be stated as U(s)). You may be confused by the fact that u(t) is the unit step function, but it is different from U(s), the control engineer's favorite shorthand for the system input (or, for that matter, u(t), the control engineer's favorite shorthand for the system input in the time domain).
For U = 1/s, the expression x(t)=[0.1-0.25*exp(-0.15t)+0.15*exp(-0.25t)] for all t > 0, and x(t) = 0 for all t < 0 is correct if Maple says so*.
* And no one will fess up to the value at t = 0, but I say it's 0.
--

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

Dear Ann
The graph that you have on your website in Galway is missing the Boundary values of the U and N inputs
U as far as I can see - is varied from one value to another and the amount of rule changes needed to gain convergenge (to some criteria - possibly ment ioned in the paper) for each increase (and probably rate of increase) is noted
N on the other hand is a noise value constrained to be some abstraction of the noise observed during a particular process (White noise - Gaussian distribution zero mean and a variance of 1)
The purpose of the experiment is two-fold
1. Test the controller convergence capability for varying values of set-point - *with Added Noise* The set-point is varied, as is the noise. 2. Count the rule changes necessary to keep control of the plant for each situation
Essentially you are benchmarking your controller paradigm for a particular process model
I will check the Laplace transform for you for a pound of Castlebar sausages OR A Salmon from the river Moy - failing that A pint in the Kings Head will do ;-)
Setanta
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Hi Setanta,
Thank you for your help.
Yes of course I'm sorry, I forgot to mention the ranges for U and N. They are 0<U<1000 and 0<X<100 and N, as use said, is a random noise interval -500 < N< 500. Also and very importantly the objective of the control is to converge on the set-point of 65.0
I have a controller (written in C) that calculates an input at each time interval of 0.5 seconds, this is the U value in the laplace transform given.
If I take my laplace transform
X= (0.00375/((s+0.15)*(s+0.25)))*U
Using the transform
F(s) = 1/ ((s + a) (s + b)) Transforms to f(t)=[1/(b-a)]*[e^-at - e^-bt]
Work it out
F(s) = 1/ ((s + 0.15) (s + 0.25)) Transforms to f(t)=[1/(0.25-0.15)]*[e^-0.15t - e^-0.25t]
Put in the constant
F(s) =0.00375* (1/ ((s + 0.15) (s + 0.25))) Transforms to f(t)=[0.00375/(0.1)]*[e^-0.15t - e^-0.25t]
So I get the equation
x(t) = (0.0375e^-0.15t - 0.0375e^-0.25t )
At each interval I put in the value for t and multiply x(t) by what I get from the controller,U, (that is, if my controller is correct) I should get the same as Procyk (i.e. http://www.anntighe.net/process1.gif )
If you can be of any assistance, you can have your choice of sausages, salmon or Guinness!
Ann
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Ann wrote:

Lady, there's a fundamental disconnect in that. "X=0.00375/((s+0.15)*(s+0.25)) is a frequency-domain equation (s being complex frequency), not a transform of any kind.

That's just your original equation in symbolic form (without multiplication by U). Not a transform either.

Presumably, U, the controller output, was given in the frequency domain. (It had to be if you multiplied by it where you did.) So now you have the impulse response of your controller; to get the response to the controller, doesn't that have to enter the picture? I leave it to you to determine where and how.
...
Jerry
--
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

Site Timeline

• Share To

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.