[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] question about advance_loop function in gri_contr
From: |
Tom Rondeau |
Subject: |
Re: [Discuss-gnuradio] question about advance_loop function in gri_control_loop.cc |
Date: |
Thu, 13 Jun 2013 09:21:02 -0400 |
On Thu, Jun 13, 2013 at 8:02 AM, adream <address@hidden> wrote:
> hello,
> the function of advance_loop and update_gain is defined as follow in
> gri_control_loop.cc
>
> void gri_control_loop::update_gains()
> {
> float denom = (1.0 + 2.0*d_damping*d_loop_bw + d_loop_bw*d_loop_bw);
> d_alpha = (4*d_damping*d_loop_bw) / denom;
> d_beta = (4*d_loop_bw*d_loop_bw) / denom;
> }
>
> void gri_control_loop::advance_loop(float error)
> {
> d_freq = d_freq + d_beta * error;
> d_phase = d_phase + d_freq + d_alpha * error;
> }
>
> Is there any paper explains why the d_freq and d_phase is calculated in such
> equation?
>
> Thanks
It's just the classic second order control loop:
http://www.trondeau.com/blog/2011/8/13/control-loop-gain-values.html
You can probably also get this from Gardner's book(s).
Tom