lib_observer: add nolinear fluxlink observer

This commit is contained in:
zouboan
2022-02-13 13:46:40 +08:00
committed by Alan Carvalho de Assis
parent 8f6be5e4ce
commit 132f27a91a
2 changed files with 217 additions and 4 deletions
+23 -3
View File
@@ -293,12 +293,13 @@ struct motor_sobserver_div_f32_s
};
/* Speed observer PLL method data */
#if 0
struct motor_sobserver_pll_f32_s
{
/* TODO */
float pll_phase;
float pll_kp;
float pll_ki;
};
#endif
/* Motor Sliding Mode Observer private data */
@@ -320,6 +321,14 @@ struct motor_observer_smo_f32_s
ab_frame_f32_t sign; /* Bang-bang controller sign */
};
/* Motor Nonlinear FluxLink Observer private data */
struct motor_observer_nfo_f32_s
{
float x1;
float x2;
};
/* FOC initialize data */
struct foc_initdata_f32_s
@@ -367,6 +376,7 @@ struct foc_data_f32_s
struct motor_phy_params_f32_s
{
uint8_t p; /* Number of the motor pole pairs */
float flux_link; /* Flux linkage */
float res; /* Phase-to-neutral resistance */
float ind; /* Average phase-to-neutral inductance */
float one_by_ind; /* Inverse phase-to-neutral inductance */
@@ -535,6 +545,16 @@ void motor_sobserver_div_init(FAR struct motor_sobserver_div_f32_s *so,
void motor_sobserver_div(FAR struct motor_observer_f32_s *o,
float angle, float dir);
void motor_observer_nfo_init(FAR struct motor_observer_nfo_f32_s *nfo);
void motor_observer_nfo(FAR struct motor_observer_f32_s *o,
FAR ab_frame_f32_t *i_ab, FAR ab_frame_f32_t *v_ab,
FAR struct motor_phy_params_f32_s *phy, float gain);
void motor_sobserver_pll_init(FAR struct motor_sobserver_pll_f32_s *so,
float pll_kp, float pll_ki);
void motor_sobserver_pll(FAR struct motor_observer_f32_s *o,
float angle, float dir);
/* Motor openloop control */
void motor_openloop_init(FAR struct openloop_data_f32_s *op, float per);