|
@@ -2,29 +2,7 @@
|
|
|
#define _PI_Contrller_H__
|
|
#define _PI_Contrller_H__
|
|
|
#include "math/fast_math.h"
|
|
#include "math/fast_math.h"
|
|
|
#include "bsp/bsp.h"
|
|
#include "bsp/bsp.h"
|
|
|
-#if 0
|
|
|
|
|
-typedef struct {
|
|
|
|
|
- s16q5_t kp;
|
|
|
|
|
- s16q5_t ki;
|
|
|
|
|
- s16q5_t max;
|
|
|
|
|
- s16q5_t min;
|
|
|
|
|
- s16q5_t Ui;
|
|
|
|
|
- s16q14_t DT;
|
|
|
|
|
-}PI_Controller;
|
|
|
|
|
|
|
|
|
|
-static __INLINE void PI_Controller_Reset(PI_Controller *pi, s16q5_t init) {
|
|
|
|
|
- pi->Ui = init;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static __INLINE s16q5_t PI_Controller_run(PI_Controller *pi, s16q5_t err) {
|
|
|
|
|
- s16q5_t kp_err = S16_mul(err,pi->kp, 5);
|
|
|
|
|
- s16q5_t ki_err = S16_mul(err,pi->ki, 5);
|
|
|
|
|
- s16q5_t integral = S16_mul(ki_err, pi->DT, 14);
|
|
|
|
|
- pi->Ui = MATH_sat(pi->Ui + integral, pi->min, pi->max);
|
|
|
|
|
- s32q14_t out = pi->Ui + kp_err;
|
|
|
|
|
- return MATH_sat(out, pi->min, pi->max);
|
|
|
|
|
-}
|
|
|
|
|
-#else
|
|
|
|
|
typedef struct {
|
|
typedef struct {
|
|
|
float kp;
|
|
float kp;
|
|
|
float ki;
|
|
float ki;
|
|
@@ -57,9 +35,9 @@ static __INLINE float PI_Controller_Run(PI_Controller *pi, float err) {
|
|
|
float kp_err = (err) * pi->kp;
|
|
float kp_err = (err) * pi->kp;
|
|
|
float ki_err = (err) * pi->ki;
|
|
float ki_err = (err) * pi->ki;
|
|
|
float integral = ki_err * pi->DT;
|
|
float integral = ki_err * pi->DT;
|
|
|
- pi->Ui = MATH_sat(pi->Ui + integral, pi->min, pi->max);
|
|
|
|
|
|
|
+ pi->Ui = fclamp(pi->Ui + integral, pi->min, pi->max);
|
|
|
float out = pi->Ui + kp_err;
|
|
float out = pi->Ui + kp_err;
|
|
|
- float sat_out = (MATH_sat(out, pi->min, pi->max));
|
|
|
|
|
|
|
+ float sat_out = fclamp(out, pi->min, pi->max);
|
|
|
if (out != sat_out) {
|
|
if (out != sat_out) {
|
|
|
pi->is_sat = true;
|
|
pi->is_sat = true;
|
|
|
}else {
|
|
}else {
|
|
@@ -169,6 +147,5 @@ static __INLINE float PLL_run(PLL_t *pll, float sample, float comp) {
|
|
|
return pll->out;
|
|
return pll->out;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-#endif
|
|
|
|
|
#endif /*_PI_Contrller_H__*/
|
|
#endif /*_PI_Contrller_H__*/
|
|
|
|
|
|