Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PID governor in Matlab/Simulink

91 views
Skip to first unread message

Yin Chin

unread,
Apr 12, 2007, 1:57:52 AM4/12/07
to
Dear all,
Good day. I've just modelled a PID governor model for system
stability studies. However, when I integrate the PID governor with
hydraulic turbines (with different type of turbines, subject to
various complexity), and apply a step increase to the speed, the
error message as follow pop-up:

**********************************
Trouble solving algebraic loop containing
'Classical_IdealLosslessTurbine/PIDGovernor/PID Controller/D' at time
0.1000000000000018.
Stopping simulation. There may be a singularity in the solution. If
the model is correct, try reducing the step size (either by reducing
the fixed step size or by tightening the error tolerances).
**********************************

When I try up with the fixed step solver (I used variable step solver
initially), there's initial power surge (increment). Shouldn't the
initial power surge to be opposite to the direction of the gate
position change due to the water inertia?

I'm not sure if I'm getting this right? Could somebody assure me
about this? Or is there anything can be done regarding the error
message?

Thankyou

Regards,
Yin Chin

reader1

unread,
Apr 12, 2007, 2:38:13 AM4/12/07
to
First of all, I think you should pay attation to your block diagram.
cancel the algebra loop with a memory block or change in/output
termial, afterward, you will go on with your ode23etc....
Zhao
China

Olaf Naujocks

unread,
Apr 12, 2007, 3:54:47 AM4/12/07
to
Hi,

I dont know your model. I assume you use a PID controller to control
the power of your hydraulic system. In the end it doesnt matter. As
Zhao said you must first get rid of the algebraic loop. Algebraic
loops in combination with pid controllers often arise when there is a
direct (algebraic) connection between the output of the pid
controller and the input(feedback) of the pid controller. as Zhao
said you can add a memory to solve the algebraic loop. You can e.g.
set it at the output of the PID controller.

If you dont want to do it this way you must tell us what transfer
function your control path has.

regards
Olaf

Kelvin Hales

unread,
Apr 12, 2007, 5:55:04 AM4/12/07
to
In article <ef53...@webcrossing.raydaftYaTP>, Olaf Naujocks wrote:
> Algebraic
> loops in combination with pid controllers often arise when there is a
> direct (algebraic) connection between the output of the pid
> controller and the input(feedback) of the pid controller. as Zhao
> said you can add a memory to solve the algebraic loop. You can e.g.
> set it at the output of the PID controller.

Very true. Another option: consider put in some dynamics for the
actuator.

Kelvin B. Hales
Kelvin Hales Associates Limited
Consulting Control Engineers
Web: www.khace.com

dave

unread,
Apr 12, 2007, 7:13:16 AM4/12/07
to
Yin Chin wrote:
>
>
> Dear all,
> Good day. I've just modelled a PID governor model for system
> stability studies. However, when I integrate the PID governor with
> hydraulic turbines (with different type of turbines, subject to
> various complexity), and apply a step increase to the speed, the
> error message as follow pop-up:
>
> **********************************
> Trouble solving algebraic loop containing
> 'Classical_IdealLosslessTurbine/PIDGovernor/PID Controller/D' at
> time
> 0.1000000000000018.
> Stopping simulation. There may be a singularity in the solution.
> If
> the model is correct, try reducing the step size (either by
> reducing
> the fixed step size or by tightening the error tolerances).
> **********************************
>

getting rid of the algebraic loop is one good thing as the others
have recommended... but you should also consider your test case. in
a real system you can not have a 'step change' in speed. you can
have a step change in the commanded speed, but turbine speed takes
time to change. so look carefully at what you are trying to do and
make sure you aren't forcing something to change instantly which
would break anything that took a derivative of it.

Yin Chin

unread,
Apr 13, 2007, 2:53:13 AM4/13/07
to
Thankyou everybody for the comments and suggestions. The PID
Controller used here is the build-in pid controller block in
simulink. So, to cancel the algebraic loop, I have tried putting a
memory block at the output of the PID controller by setting the
initial condition (which in this case the initial gate position) to
0.94.

When i did this, there isn't any warning abt the algebraic loop. but
i doubt the response is correct. It doesn't seem ok to me. if there
any way to verify if the model is correct?

Btw, is adding a memory at the output the only solution?
I have couple more models having the same problem (the algebraic
loop), so I need to look into it, and try something on them.

If possible, would anybody suggest a way to verify their model? I
have built-up a number of models, but I'm not sure if they are
correct and ready to be used for stability studies when integrated
into a bigger system. That would be great if anyone could suggest any
verification method, i would really appreciate that.

Thankyou

Cheers,
Yin Chin

YC

unread,
Apr 20, 2007, 2:54:51 AM4/20/07
to
Hi there,
I tried adding a memory block at the output of the PID governor to
cancel the algraic loop, with initial condition set to be 0, and
apply a step response, the output observed is HUGE and weird. Not
sure why is this doing so...

I'm just thinking of adding a transport delay at the feedback? should
it do the same to cancel the algebraic loop?

thankyou

seis

unread,
Apr 20, 2007, 5:45:08 PM4/20/07
to
Simpowersystems manual uses first order systems with small time
constant to break algebraic loops as you can read at the end of this
link:

http://www.mathworks.com/access/helpdesk/help/toolbox/physmod/powersys/ug/f1-7758.html#f1-7986


Zeke

unread,
Apr 25, 2007, 11:59:57 AM4/25/07
to
Memory blocks arn't a great solution to breaking algebraic loops.
They are the in my mind the same as adding a lag with a dynamic that
is as fast as the solver step for that itteration. I have hade them
induce instabilities in models that should be stable.

redraw your hydraulic stick diagram and see if you can get rid of the
loop another way.

0 new messages