11#ifndef GR_BLOCKS_CONTROL_LOOP
12#define GR_BLOCKS_CONTROL_LOOP
78 d_freq = d_freq + d_beta * error;
79 d_phase = d_phase + d_freq + d_alpha * error;
99 while (d_phase < (-2 *
GR_M_PI))
118 if (d_freq > d_max_freq)
120 else if (d_freq < d_min_freq)
279 -0.96402758, -0.96290241, -0.96174273, -0.96054753, -0.95931576, -0.95804636,
280 -0.95673822, -0.95539023, -0.95400122, -0.95257001, -0.95109539, -0.9495761,
281 -0.94801087, -0.94639839, -0.94473732, -0.94302627, -0.94126385, -0.93944862,
282 -0.93757908, -0.93565374, -0.93367104, -0.93162941, -0.92952723, -0.92736284,
283 -0.92513456, -0.92284066, -0.92047938, -0.91804891, -0.91554743, -0.91297305,
284 -0.91032388, -0.90759795, -0.9047933, -0.90190789, -0.89893968, -0.89588656,
285 -0.89274642, -0.88951709, -0.88619637, -0.88278203, -0.87927182, -0.87566342,
286 -0.87195453, -0.86814278, -0.86422579, -0.86020115, -0.85606642, -0.85181914,
287 -0.84745683, -0.84297699, -0.83837709, -0.83365461, -0.82880699, -0.82383167,
288 -0.81872609, -0.81348767, -0.80811385, -0.80260204, -0.7969497, -0.79115425,
289 -0.78521317, -0.77912392, -0.772884, -0.76649093, -0.75994227, -0.75323562,
290 -0.74636859, -0.73933889, -0.73214422, -0.7247824, -0.71725127, -0.70954876,
291 -0.70167287, -0.6936217, -0.68539341, -0.67698629, -0.66839871, -0.65962916,
292 -0.65067625, -0.64153871, -0.6322154, -0.62270534, -0.61300768, -0.60312171,
293 -0.59304692, -0.58278295, -0.57232959, -0.56168685, -0.55085493, -0.53983419,
294 -0.52862523, -0.51722883, -0.50564601, -0.49387799, -0.48192623, -0.46979241,
295 -0.45747844, -0.44498647, -0.4323189, -0.41947836, -0.40646773, -0.39329014,
296 -0.37994896, -0.36644782, -0.35279057, -0.33898135, -0.32502449, -0.31092459,
297 -0.2966865, -0.28231527, -0.26781621, -0.25319481, -0.23845682, -0.22360817,
298 -0.208655, -0.19360362, -0.17846056, -0.16323249, -0.14792623, -0.13254879,
299 -0.11710727, -0.10160892, -0.08606109, -0.07047123, -0.05484686, -0.0391956,
300 -0.02352507, -0.00784298, 0.00784298, 0.02352507, 0.0391956, 0.05484686,
301 0.07047123, 0.08606109, 0.10160892, 0.11710727, 0.13254879, 0.14792623,
302 0.16323249, 0.17846056, 0.19360362, 0.208655, 0.22360817, 0.23845682,
303 0.25319481, 0.26781621, 0.28231527, 0.2966865, 0.31092459, 0.32502449,
304 0.33898135, 0.35279057, 0.36644782, 0.37994896, 0.39329014, 0.40646773,
305 0.41947836, 0.4323189, 0.44498647, 0.45747844, 0.46979241, 0.48192623,
306 0.49387799, 0.50564601, 0.51722883, 0.52862523, 0.53983419, 0.55085493,
307 0.56168685, 0.57232959, 0.58278295, 0.59304692, 0.60312171, 0.61300768,
308 0.62270534, 0.6322154, 0.64153871, 0.65067625, 0.65962916, 0.66839871,
309 0.67698629, 0.68539341, 0.6936217, 0.70167287, 0.70954876, 0.71725127,
310 0.7247824, 0.73214422, 0.73933889, 0.74636859, 0.75323562, 0.75994227,
311 0.76649093, 0.772884, 0.77912392, 0.78521317, 0.79115425, 0.7969497,
312 0.80260204, 0.80811385, 0.81348767, 0.81872609, 0.82383167, 0.82880699,
313 0.83365461, 0.83837709, 0.84297699, 0.84745683, 0.85181914, 0.85606642,
314 0.86020115, 0.86422579, 0.86814278, 0.87195453, 0.87566342, 0.87927182,
315 0.88278203, 0.88619637, 0.88951709, 0.89274642, 0.89588656, 0.89893968,
316 0.90190789, 0.9047933, 0.90759795, 0.91032388, 0.91297305, 0.91554743,
317 0.91804891, 0.92047938, 0.92284066, 0.92513456, 0.92736284, 0.92952723,
318 0.93162941, 0.93367104, 0.93565374, 0.93757908, 0.93944862, 0.94126385,
319 0.94302627, 0.94473732, 0.94639839, 0.94801087, 0.9495761, 0.95109539,
320 0.95257001, 0.95400122, 0.95539023, 0.95673822, 0.95804636, 0.95931576,
321 0.96054753, 0.96174273, 0.96290241, 0.96402758
344 int index = 128 + 64 * x;
A second-order control loop implementation class.
Definition control_loop.h:51
float get_damping_factor() const
Returns the loop damping factor.
void set_beta(float beta)
Set the loop gain beta.
void set_min_freq(float freq)
Set the control loop's minimum frequency.
float get_min_freq() const
Get the control loop's minimum frequency.
float get_phase() const
Get the control loop's phase estimate.
void frequency_limit()
Keep the frequency between d_min_freq and d_max_freq.
Definition control_loop.h:116
float d_damping
Definition control_loop.h:55
float get_loop_bandwidth() const
Returns the loop bandwidth.
control_loop(float loop_bw, float max_freq, float min_freq)
void phase_wrap()
Keep the phase between -2pi and 2pi.
Definition control_loop.h:95
float d_freq
Definition control_loop.h:53
float get_frequency() const
Get the control loop's frequency estimate.
control_loop(void)
Definition control_loop.h:59
float get_alpha() const
Returns the loop gain alpha.
float d_alpha
Definition control_loop.h:56
void set_frequency(float freq)
Set the control loop's frequency.
float get_beta() const
Returns the loop gain beta.
void set_alpha(float alpha)
Set the loop gain alpha.
void advance_loop(float error)
Advance the control loop based on the current gain settings and the inputted error signal.
Definition control_loop.h:76
float d_max_freq
Definition control_loop.h:54
void set_damping_factor(float df)
Set the loop damping factor.
void update_gains()
Update the system gains from the loop bandwidth and damping factor.
virtual void set_loop_bandwidth(float bw)
Set the loop bandwidth.
void set_phase(float phase)
Set the control loop's phase.
float get_max_freq() const
Get the control loop's maximum frequency.
void set_max_freq(float freq)
Set the control loop's maximum frequency.
#define BLOCKS_API
Definition gr-blocks/include/gnuradio/blocks/api.h:18
#define GR_M_PI
Definition math.h:32
static float tanh_lut_table[256]
Definition control_loop.h:278
static float tanhf_lut(float x)
Definition control_loop.h:337
GNU Radio logging wrapper.
Definition basic_block.h:29