This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git
commit 5ae5ab7f443603f2a4a8b934dafaef86581126bf Author: zouboan <[email protected]> AuthorDate: Sat May 28 21:05:50 2022 +0800 industry/foc foc_ident: improving the measuring of resistance --- industry/foc/float/foc_ident.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/industry/foc/float/foc_ident.c b/industry/foc/float/foc_ident.c index f0a61170c..99e824acd 100644 --- a/industry/foc/float/foc_ident.c +++ b/industry/foc/float/foc_ident.c @@ -164,6 +164,8 @@ int foc_ident_res_run_f32(FAR struct foc_ident_f32_s *ident, int ret = FOC_ROUTINE_RUN_NOTDONE; float err = 0.0f; float vref = 0.0f; + static float curr_sum = 0.0f; + static float volt_sum = 0.0f; /* Initialize PI controller */ @@ -193,12 +195,17 @@ int foc_ident_res_run_f32(FAR struct foc_ident_f32_s *ident, /* Increase counter */ ident->cntr += 1; + if (ident->cntr > (ident->cfg.res_steps / 3)) + { + volt_sum += vector2d_mag(in->foc_state->vdq.q, in->foc_state->vdq.d); + curr_sum += vector2d_mag(in->foc_state->idq.q, in->foc_state->idq.d); + } if (ident->cntr > ident->cfg.res_steps) { /* Get resistance */ - ident->final.res = vref / ident->cfg.res_current; + ident->final.res = (2.0f / 3.0f) * volt_sum / curr_sum; /* Force IDLE state */ @@ -216,6 +223,11 @@ int foc_ident_res_run_f32(FAR struct foc_ident_f32_s *ident, /* Reset counter */ ident->cntr = 0; + + /* Reset static data */ + + curr_sum = 0.0f; + volt_sum = 0.0f; } return ret;
