CMSIS DSP Library from CMSIS 2.0. See http://www.onarm.com/cmsis/ for full details
Dependents: K22F_DSP_Matrix_least_square BNO055-ELEC3810 1BNO055 ECE4180Project--Slave2 ... more
Vector Clarke Transform
[Controller Functions]
Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. More...
Functions | |
static __INLINE void | arm_clarke_f32 (float32_t Ia, float32_t Ib, float32_t *pIalpha, float32_t *pIbeta) |
Floating-point Clarke transform. | |
static __INLINE void | arm_clarke_q31 (q31_t Ia, q31_t Ib, q31_t *pIalpha, q31_t *pIbeta) |
Clarke transform for Q31 version. |
Detailed Description
Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector.
Generally the Clarke transform uses three-phase currents Ia, Ib and Ic
to calculate currents in the two-phase orthogonal stator axis Ialpha
and Ibeta
. When Ialpha
is superposed with Ia
as shown in the figure below
Stator current space vector and its components in (a,b).
and Ia + Ib + Ic = 0
, in this condition Ialpha
and Ibeta
can be calculated using only Ia
and Ib
.
The function operates on a single sample of data and each call to the function returns the processed output. The library provides separate functions for Q31 and floating-point data types.
- Algorithm
Ia
andIb
are the instantaneous stator phases andpIalpha
andpIbeta
are the two coordinates of time invariant vector.
- Fixed-Point Behavior
- Care must be taken when using the Q31 version of the Clarke transform. In particular, the overflow and saturation behavior of the accumulator used must be considered. Refer to the function specific documentation below for usage guidelines.
Function Documentation
static __INLINE void arm_clarke_f32 | ( | float32_t | Ia, |
float32_t | Ib, | ||
float32_t * | pIalpha, | ||
float32_t * | pIbeta | ||
) | [static] |
Floating-point Clarke transform.
- Parameters:
-
[in] Ia input three-phase coordinate a
[in] Ib input three-phase coordinate b
[out] *pIalpha points to output two-phase orthogonal vector axis alpha [out] *pIbeta points to output two-phase orthogonal vector axis beta
- Returns:
- none.
Definition at line 4820 of file arm_math.h.
static __INLINE void arm_clarke_q31 | ( | q31_t | Ia, |
q31_t | Ib, | ||
q31_t * | pIalpha, | ||
q31_t * | pIbeta | ||
) | [static] |
Clarke transform for Q31 version.
- Parameters:
-
[in] Ia input three-phase coordinate a
[in] Ib input three-phase coordinate b
[out] *pIalpha points to output two-phase orthogonal vector axis alpha [out] *pIbeta points to output two-phase orthogonal vector axis beta
- Returns:
- none.
Scaling and Overflow Behavior:
- The function is implemented using an internal 32-bit accumulator. The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. There is saturation on the addition, hence there is no risk of overflow.
Definition at line 4849 of file arm_math.h.
Generated on Tue Jul 12 2022 14:13:55 by 1.7.2