park_clark.h 953 B

123456789101112131415161718192021222324252627282930313233
  1. #ifndef _Park_Clark_H__
  2. #define _Park_Clark_H__
  3. #include "bsp/bsp.h"
  4. #include "foc/foc_type.h"
  5. #include "math/fast_math.h"
  6. /* ·´Park ±ä»» */
  7. static __INLINE void Rev_Park(dq_t *dq, float angle, alpha_beta_t *alpha_bata) {
  8. float c,s;
  9. normal_sincosf(angle, &s, &c);
  10. #if 1
  11. alpha_bata->alpha = dq->Vd * c - dq->Vq * s;
  12. alpha_bata->beta = dq->Vd * s + dq->Vq * c;
  13. #else
  14. alpha_bata->alpha = dq->d * s + dq->q * c;
  15. alpha_bata->beta = dq->d * c - dq->q * s;
  16. #endif
  17. }
  18. static __INLINE void Clark(float phaseU, float phaseV, float phaseW, alpha_beta_t *alpha_bata){
  19. alpha_bata->alpha = (2.0f * phaseU - phaseV - phaseW) / 3.0f;
  20. alpha_bata->beta = (ONE_BY_SQRT3 * (phaseV - phaseW));
  21. }
  22. static __INLINE void Park(alpha_beta_t *alpha_beta, float angle, dq_t *dq) {
  23. float c,s;
  24. normal_sincosf(angle, &s, &c);
  25. dq->Id = alpha_beta->alpha * c + alpha_beta->beta * s;
  26. dq->Iq = -alpha_beta->alpha * s + alpha_beta->beta * c;
  27. }
  28. #endif /* _Park_Clark_H__ */