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/nuttx-apps.git


The following commit(s) were added to refs/heads/master by this push:
     new 111e02dbd examples/foc: improve the readability of the motor structures
111e02dbd is described below

commit 111e02dbdbac00280c2160ebeaec53579764a72f
Author: raiden00pl <[email protected]>
AuthorDate: Tue May 16 12:49:30 2023 +0200

    examples/foc: improve the readability of the motor structures
---
 examples/foc/foc_motor_b16.h | 77 ++++++++++++++++++++++++++++----------------
 examples/foc/foc_motor_f32.h | 77 ++++++++++++++++++++++++++++----------------
 2 files changed, 100 insertions(+), 54 deletions(-)

diff --git a/examples/foc/foc_motor_b16.h b/examples/foc/foc_motor_b16.h
index 0c0e238ed..5b660bf83 100644
--- a/examples/foc/foc_motor_b16.h
+++ b/examples/foc/foc_motor_b16.h
@@ -66,31 +66,41 @@ struct foc_setpoint_b16_s
 
 struct foc_motor_b16_s
 {
+  /* App data ***************************************************************/
+
   FAR struct foc_ctrl_env_s    *envp;         /* Thread env */
+  struct foc_mq_s               mq;           /* MQ data */
   bool                          fault;        /* Fault flag */
   bool                          startstop;    /* Start/stop request */
-#ifdef CONFIG_EXAMPLES_FOC_HAVE_OPENLOOP
-  bool                          openloop_now; /* Open-loop now */
-  b16_t                         angle_ol;     /* Phase angle open-loop */
-  foc_angle_b16_t               openloop;     /* Open-loop angle handler */
-#endif
-#ifdef CONFIG_EXAMPLES_FOC_HAVE_HALL
-  char                          hldpath[32];  /* Hall devpath */
-  foc_angle_b16_t               hall;         /* Hall angle handler */
-#endif
-#ifdef CONFIG_EXAMPLES_FOC_HAVE_QENCO
-  char                          qedpath[32];  /* Qenco devpath */
-  foc_angle_b16_t               qenco;        /* Qenco angle handler */
-#endif
-  int                           foc_mode;     /* FOC mode */
+  int                           ctrl_state;   /* Controller state */
 #ifdef CONFIG_EXAMPLES_FOC_HAVE_RUN
   int                           foc_mode_run; /* FOC mode for run state */
 #endif
-  int                           ctrl_state;   /* Controller state */
+
+  /* FOC data ***************************************************************/
+
+  struct foc_state_b16_s        foc_state;    /* FOC controller sate */
+  foc_handler_b16_t             handler;      /* FOC controller */
+  dq_frame_b16_t                dq_ref;       /* DQ reference */
+  dq_frame_b16_t                vdq_comp;     /* DQ voltage compensation */
+  int                           foc_mode;     /* FOC mode */
   b16_t                         vbus;         /* Power bus voltage */
+  b16_t                         per;          /* Controller period in seconds 
*/
+  b16_t                         iphase_adc;   /* Iphase ADC scaling factor */
+  b16_t                         pwm_duty_max; /* PWM duty max */
+
+  /* Velocity controller data ***********************************************/
+
+  struct foc_ramp_b16_s         ramp;         /* Velocity ramp data */
+
+  /* Motor state ************************************************************/
+
   b16_t                         angle_now;    /* Phase angle now */
   b16_t                         angle_m;      /* Motor mechanical angle */
   b16_t                         angle_el;     /* Motor electrical angle */
+
+  /* Motor setpoints ********************************************************/
+
 #ifdef CONFIG_EXAMPLES_FOC_HAVE_TORQ
   struct foc_setpoint_b16_s     torq;         /* Torque setpoint */
 #endif
@@ -101,16 +111,9 @@ struct foc_motor_b16_s
   struct foc_setpoint_b16_s     pos;          /* Position setpoint */
 #endif
   b16_t                         dir;          /* Motor's direction */
-  b16_t                         per;          /* Controller period in seconds 
*/
-  b16_t                         iphase_adc;   /* Iphase ADC scaling factor */
-  b16_t                         pwm_duty_max; /* PWM duty max */
-  uint8_t                       poles;        /* Motor poles */
-  dq_frame_b16_t                dq_ref;       /* DQ reference */
-  dq_frame_b16_t                vdq_comp;     /* DQ voltage compensation */
-  foc_handler_b16_t             handler;      /* FOC controller */
-  struct foc_mq_s               mq;           /* MQ data */
-  struct foc_state_b16_s        foc_state;    /* FOC controller sate */
-  struct foc_ramp_b16_s         ramp;         /* Velocity ramp data */
+
+  /* Motor routines *********************************************************/
+
 #ifdef CONFIG_EXAMPLES_FOC_HAVE_ALIGN
   struct foc_routine_b16_s      align;        /* Alignment routine */
   bool                          align_done;   /* Alignment done */
@@ -120,9 +123,29 @@ struct foc_motor_b16_s
   struct motor_phy_params_b16_s phy_ident;    /* Motor phy from ident */
   bool                          ident_done;   /* Motor ident done */
 #endif
+
+  /* Motor data *************************************************************/
+
 #ifdef CONFIG_EXAMPLES_FOC_STATE_USE_MODEL_PMSM
-  struct foc_model_b16_s        model;         /* Model handler */
-  struct foc_model_state_b16_s  model_state;   /* PMSM model state */
+  struct foc_model_b16_s        model;        /* Model handler */
+  struct foc_model_state_b16_s  model_state;  /* PMSM model state */
+#endif
+  uint8_t                       poles;        /* Motor poles */
+
+  /* Motor velocity and angle handlers **************************************/
+
+#ifdef CONFIG_EXAMPLES_FOC_HAVE_OPENLOOP
+  foc_angle_b16_t               openloop;     /* Open-loop angle handler */
+  bool                          openloop_now; /* Open-loop now */
+  b16_t                         angle_ol;     /* Phase angle open-loop */
+#endif
+#ifdef CONFIG_EXAMPLES_FOC_HAVE_HALL
+  foc_angle_b16_t               hall;         /* Hall angle handler */
+  char                          hldpath[32];  /* Hall devpath */
+#endif
+#ifdef CONFIG_EXAMPLES_FOC_HAVE_QENCO
+  foc_angle_b16_t               qenco;        /* Qenco angle handler */
+  char                          qedpath[32];  /* Qenco devpath */
 #endif
 };
 
diff --git a/examples/foc/foc_motor_f32.h b/examples/foc/foc_motor_f32.h
index dff9c8483..0eb86a789 100644
--- a/examples/foc/foc_motor_f32.h
+++ b/examples/foc/foc_motor_f32.h
@@ -66,31 +66,41 @@ struct foc_setpoint_f32_s
 
 struct foc_motor_f32_s
 {
+  /* App data ***************************************************************/
+
   FAR struct foc_ctrl_env_s    *envp;         /* Thread env */
+  struct foc_mq_s               mq;           /* MQ data */
   bool                          fault;        /* Fault flag */
   bool                          startstop;    /* Start/stop request */
-#ifdef CONFIG_EXAMPLES_FOC_HAVE_OPENLOOP
-  bool                          openloop_now; /* Open-loop now */
-  float                         angle_ol;     /* Phase angle open-loop */
-  foc_angle_f32_t               openloop;     /* Open-loop angle handler */
-#endif
-#ifdef CONFIG_EXAMPLES_FOC_HAVE_HALL
-  char                          hldpath[32];  /* Hall devpath */
-  foc_angle_f32_t               hall;         /* Hall angle handler */
-#endif
-#ifdef CONFIG_EXAMPLES_FOC_HAVE_QENCO
-  char                          qedpath[32];  /* Qenco devpath */
-  foc_angle_f32_t               qenco;        /* Qenco angle handler */
-#endif
-  int                           foc_mode;     /* FOC mode */
+  int                           ctrl_state;   /* Controller state */
 #ifdef CONFIG_EXAMPLES_FOC_HAVE_RUN
   int                           foc_mode_run; /* FOC mode for run state */
 #endif
-  int                           ctrl_state;   /* Controller state */
+
+  /* FOC data ***************************************************************/
+
+  struct foc_state_f32_s        foc_state;    /* FOC controller sate */
+  foc_handler_f32_t             handler;      /* FOC controller */
+  dq_frame_f32_t                dq_ref;       /* DQ reference */
+  dq_frame_f32_t                vdq_comp;     /* DQ voltage compensation */
+  int                           foc_mode;     /* FOC mode */
   float                         vbus;         /* Power bus voltage */
+  float                         per;          /* Controller period in seconds 
*/
+  float                         iphase_adc;   /* Iphase ADC scaling factor */
+  float                         pwm_duty_max; /* PWM duty max */
+
+  /* Velocity controller data ***********************************************/
+
+  struct foc_ramp_f32_s         ramp;         /* Velocity ramp data */
+
+  /* Motor state ************************************************************/
+
   float                         angle_now;    /* Phase angle now */
   float                         angle_m;      /* Motor mechanical angle */
   float                         angle_el;     /* Motor electrical angle */
+
+  /* Motor setpoints ********************************************************/
+
 #ifdef CONFIG_EXAMPLES_FOC_HAVE_TORQ
   struct foc_setpoint_f32_s     torq;         /* Torque setpoint */
 #endif
@@ -101,16 +111,9 @@ struct foc_motor_f32_s
   struct foc_setpoint_f32_s     pos;          /* Position setpoint */
 #endif
   float                         dir;          /* Motor's direction */
-  float                         per;          /* Controller period in seconds 
*/
-  float                         iphase_adc;   /* Iphase ADC scaling factor */
-  float                         pwm_duty_max; /* PWM duty max */
-  uint8_t                       poles;        /* Motor poles */
-  dq_frame_f32_t                dq_ref;       /* DQ reference */
-  dq_frame_f32_t                vdq_comp;     /* DQ voltage compensation */
-  foc_handler_f32_t             handler;      /* FOC controller */
-  struct foc_mq_s               mq;           /* MQ data */
-  struct foc_state_f32_s        foc_state;    /* FOC controller sate */
-  struct foc_ramp_f32_s         ramp;         /* Velocity ramp data */
+
+  /* Motor routines *********************************************************/
+
 #ifdef CONFIG_EXAMPLES_FOC_HAVE_ALIGN
   struct foc_routine_f32_s      align;        /* Alignment routine */
   bool                          align_done;   /* Motor alignment done */
@@ -120,9 +123,29 @@ struct foc_motor_f32_s
   struct motor_phy_params_f32_s phy_ident;    /* Motor phy from ident */
   bool                          ident_done;   /* Motor ident done */
 #endif
+
+  /* Motor data *************************************************************/
+
 #ifdef CONFIG_EXAMPLES_FOC_STATE_USE_MODEL_PMSM
-  struct foc_model_f32_s        model;         /* Model handler */
-  struct foc_model_state_f32_s  model_state;   /* PMSM model state */
+  struct foc_model_f32_s        model;        /* Model handler */
+  struct foc_model_state_f32_s  model_state;  /* PMSM model state */
+#endif
+  uint8_t                       poles;        /* Motor poles */
+
+  /* Motor velocity and angle handlers **************************************/
+
+#ifdef CONFIG_EXAMPLES_FOC_HAVE_OPENLOOP
+  foc_angle_f32_t               openloop;     /* Open-loop angle handler */
+  bool                          openloop_now; /* Open-loop now */
+  float                         angle_ol;     /* Phase angle open-loop */
+#endif
+#ifdef CONFIG_EXAMPLES_FOC_HAVE_HALL
+  foc_angle_f32_t               hall;         /* Hall angle handler */
+  char                          hldpath[32];  /* Hall devpath */
+#endif
+#ifdef CONFIG_EXAMPLES_FOC_HAVE_QENCO
+  foc_angle_f32_t               qenco;        /* Qenco angle handler */
+  char                          qedpath[32];  /* Qenco devpath */
 #endif
 };
 

Reply via email to