3.3.18.9 mcFlxI_FluxWeakening

C


/* Flux weakening control */
void mcFlxI_FluxWeakening(  const tmcFlx_Parameters_s * const pParameters,
                                               const tmcTypes_DQ_s * const pUDQ,
                                               const tmcTypes_AlphaBeta_s * const pEAlphaBeta,
                                               const float32_t uBus,
                                               const float32_t wmechRPM,
                                               tmcTypes_DQ_s * const pIDQ,
                                               float32_t * const pIdref )	

Summary

Performs the flux weakening control .

Description

This function computes the d-axis current reference for flux weakening, allowing the motor to operate at speeds higher than its rated speed without increasing the motor voltage. The algorithm uses a closed-loop approach to calculate the current reference for flux weakening by applying motor voltage equations and a voltage control loop. The feed-forward component is computed using motor characteristic equations, while the feedback term is derived from controlling the voltage error between the maximum voltage and the reference voltage. For additional details, please refer to the QSpin motor control documentation.

Precondition

The flux weakening module must be initialized and enabled.

Parameters

ParamDescription
pParametersA pointer to the flux control module structure, which includes the MTPA, flux weakening, and flux control parameters.
pUDQPointer to the DQ voltage vector
pEAlphaBetaPointer to the Alpha-Beta voltage vector
uBusDC bus voltage value
wmechRPMMechanical speed in RPM
pIDQPointer to the output DQ current vector
pIdrefPointer to the output reference ID current

Returns

None

Example

// Define the flux module data structure
tmcFlx_Parameters_s fluxParameters;
tmcTypes_DQ_s uDQ ={ .d = 0.3f, .q = 0.4f };
tmcTypes_AlphaBeta_s eAlphaBeta ={ .alpha = 1.0f, .beta = 0.0f };
float32_t uBus = 24.0f;
float32_t wmechRPM = 1500.0f;
tmcTypes_DQ_s iDQ ={ .d = 0.3f, .q = 0.4f };
float32_t idRef;
/* Flux weakening control */
mcFlxI_FluxWeakening(&fluxParameters, &uDQ, &eAlphaBeta, uBus, wmechRPM, &iDQ, &idRef);
    

Remarks

None.