MSPM0G3519SensoredFOCMotorControlLibrary  1.0
Data Structures | Macros | Enumerations | Functions
foc.h File Reference

Detailed Description

foc Module


Overview


#include <ti/iqmath/include/IQmathLib.h>
#include "IQmath_mathacl.h"
#include "pi.h"
#include "stdint.h"
#include "mcLib.h"
#include "openLoop.h"
#include "closeLoop.h"
#include "stallDetect.h"
#include "measure.h"
#include "deadTimeCompute.h"
#include "hallCalib.h"
#include "hallEstimator.h"
Include dependency graph for foc.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

union  FOC_FLAGS_T
 Floc Flags Structure. More...
 
struct  FOC_FLAGS_T::focFlags
 Close Loop Flags Structure. More...
 
struct  FOC_T
 FOC Working Structure. More...
 

Macros

#define MOD_INDEX_LIMIT_SINE   _IQ(1.0)
 Modulation Index Limit for Sine Modulation.
 
#define MOD_INDEX_LIMIT_OVERMODULATION   _IQ(5.0)
 Modulation Index Limit for Over Modulation.
 
#define AVS_MIN_SOURCE_CURRENT_PU   _IQ(-0.25)
 AVS Min Source current Limit.
 

Enumerations

enum  FOC_STATE_TYPES {
  FOC_INIT = 0,
  FOC_ROTOR_ALIGN = 1,
  FOC_OPEN_LOOP = 2,
  FOC_CLOSE_LOOP = 3,
  FOC_STALL = 4,
  FOC_HALL_CALIB = 5,
  FOC_HALL_ANGLE_INIT = 6,
  FOC_STOP = 7
}
 Foc Flags Structure. More...
 

Functions

void focInit (FOC_T *pFOC)
 FOC Init. More...
 
void focRun (FOC_T *pFOC)
 FOC Run. More...
 
void focLowPriorityRun (FOC_T *pFOC)
 FOC Low Priority Run. More...
 
_Bool getFOCStallStatusForAction (FOC_T *pFOC)
 FOC Stall Status check. More...
 
_Bool getFOCStallStatusForReport (FOC_T *pFOC)
 FOC Stall Report Status check. More...
 
_Bool getKickBackStatus (FOC_T *pFOC)
 FOC Kick Back check. More...
 

Enumeration Type Documentation

§ FOC_STATE_TYPES

Foc Flags Structure.

Enumerator
FOC_INIT 

Initialize FOC Parameters

FOC_ROTOR_ALIGN 

Align Rotor

FOC_OPEN_LOOP 

Start Motor in Open Loop

FOC_CLOSE_LOOP 

Motor Running in Closed Loop

FOC_STALL 

Motor has stalled

FOC_HALL_CALIB 

Calibrate Hall Sensor

FOC_HALL_ANGLE_INIT 

Hall Sensor based Angle Init

FOC_STOP 

FOC is stopped

Function Documentation

§ focInit()

void focInit ( FOC_T pFOC)

§ focRun()

void focRun ( FOC_T pFOC)

FOC Run.

Parameters
[in]*pFOCInput Pointer

References _IQdiv_mathacl, _IQmpy_mathacl, _IQsqrt_mathacl, OPEN_LOOP_T::accelRefSlewRateFastAccel, MC_ALPHABETA_T::alpha, HALL_CALIB_T::angle, OPEN_LOOP_T::angle, CLOSE_LOOP_T::angle, CLOSE_LOOP_T::angleOffset, AVS_MIN_SOURCE_CURRENT_PU, DEAD_TIME_COMP_FLAGS_T::b, NO_MOTOR_STALL_DETECT_FLAGS_T::b, OPEN_LOOP_FLAGS_T::b, CLOSE_LOOP_FLAGS_T::b, FOC_FLAGS_T::b, MC_ALPHABETA_T::beta, FOC_T::closeLoop, closeLoopInit(), closeLoopRun(), COMMUTATION_ALIGNED, CLOSE_LOOP_T::commutationState, CONTROL_SPEED, CONTROL_TORQUE, CONTROL_VOLTAGE, CLOSE_LOOP_T::controlMode, MC_SINCOS_T::cos, MC_DQ_T::d, MC_SVM_T::Dabc, FOC_T::dAlphaBeta, FOC_T::ddq, deadTimeComputeRun(), NO_MOTOR_STALL_DETECT_FLAGS_T::noMotorStallDetectFlags::enable, DEAD_TIME_COMP_FLAGS_T::deadTimeCompFlags::enable, FALSE, DEAD_TIME_COMPUTE_T::flags, NO_MOTOR_STALL_DETECT_T::flags, OPEN_LOOP_T::flags, FOC_T::flags, CLOSE_LOOP_T::flags, FOC_CLOSE_LOOP, FOC_HALL_ANGLE_INIT, FOC_HALL_CALIB, FOC_INIT, FOC_OPEN_LOOP, FOC_STALL, FOC_STOP, focInit(), getAvsStatus(), getStallStatusForAction(), GLOBAL_IQ, HAL_DisablePWM(), HALL_ANGLE_MASK, HALL_ANGLE_OVERFLOW_MASK, HALL_CALIBRATION_DONE, hallAngleEstimRun(), hallAngleInit(), HALL_CALIB_T::hallCalibEnable, FOC_T::hallCalibObj, HALL_ESTIMATOR_OBJ_T::hallEstimFluxAngle, HALL_ESTIMATOR_OBJ_T::hallEstimVelocityFilt, CLOSE_LOOP_FLAGS_T::closeLoopFlags::hallFilterEn, hallForcedAngleRun(), FOC_T::hallObj, HALL_ESTIMATOR_OBJ_T::hallSectorChange, HALL_ESTIMATOR_OBJ_T::hallSectorCount, hallSinCosEstim(), HALL_ESTIMATOR_OBJ_T::hallState, FOC_T::iAlphaBeta, FOC_T::idq, CLOSE_LOOP_T::idqRef, HALL_CALIB_T::idRef, OPEN_LOOP_T::idRef, HALL_CALIB_T::idRefSet, HALL_CALIB_T::idRefSlewRate, INV_VDC_IQ_SCALING, HALL_CALIB_T::iqRef, OPEN_LOOP_T::iqRef, CLOSE_LOOP_T::iqRefMax, OPEN_LOOP_T::iqRefSet, OPEN_LOOP_T::iqRefSetFastAccel, CLOSE_LOOP_T::iRefMax, PI_T::kiTerm, FOC_T::mabc, FOC_T::mAlphaBeta, MAX_HALL_INDEX, MC_ClarkeTransformNoZeroSeq(), MC_InverseClarkeTransform(), MC_InverseParkTransform(), MC_ParkTransform(), MC_SinCos(), MC_SpaceVectorGen(), MC_SVM_ClarkeTransform(), FOC_T::mdq, FOC_T::mdqForceSet, CLOSE_LOOP_T::mdqForceSinCos, MOD_INDEX_LIMIT_SINE, FOC_T::modIndexLimit, STALL_DETECT_T::noMotorStall, FOC_T::openLoop, OPEN_LOOP_FLAGS_T::openLoopFlags::openLoopDirChange, openLoopInit(), openLoopRun(), openLoopSetInitialVelocity(), PI_T::out, PI_T::outMax, PI_T::outMin, OPEN_LOOP_T::pAccelRefSlewRate, FOC_T::pDeadTime, FOC_T::pFOCAngle, FOC_T::pIabc, FOC_T::piId, FOC_T::piIq, FOC_T::pInvVdc, piRun(), CLOSE_LOOP_T::piSpeed, PI_T::pReference, OPEN_LOOP_T::pSpeedRefSlewRate, FOC_T::pVdc, FOC_T::pVelocityReference, MC_DQ_T::q, MC_SINCOS_T::sin, HALL_ESTIMATOR_OBJ_T::sinCos, FOC_T::sinCos, slewRate(), CLOSE_LOOP_T::sourceCurrentFeedback, CLOSE_LOOP_T::speedReference, OPEN_LOOP_T::speedRefSlewRateFastAccel, FOC_T::stallDetect, stallDetectRun(), FOC_T::state, HALL_CALIB_T::status, FOC_T::svm, CLOSE_LOOP_T::torqRefScalingFactor, TRUE, FOC_T::vAlphaBeta, DEAD_TIME_COMPUTE_T::vdq, FOC_T::vdq, FOC_T::vdqForce, OPEN_LOOP_T::velocityReference, CLOSE_LOOP_T::velocityReference, FOC_FLAGS_T::focFlags::voltageModeEnable, and FOC_FLAGS_T::focFlags::voltageModeEnableSet.

§ focLowPriorityRun()

void focLowPriorityRun ( FOC_T pFOC)

FOC Low Priority Run.

Parameters
[in]*pFOCInput Pointer

References STALL_DETECT_T::abnormalSpeedStall, DEAD_TIME_COMP_FLAGS_T::b, ABNORMAL_SPEED_STALL_DETECT_FLAGS_T::b, NO_MOTOR_STALL_DETECT_FLAGS_T::b, CLOSE_LOOP_FLAGS_T::b, FOC_T::closeLoop, closeLoopLowPriorityRun(), CONTROL_POWER, CONTROL_TORQUE, CONTROL_VOLTAGE, CLOSE_LOOP_T::controlMode, CLOSE_LOOP_T::currentReferenceSqrMax, CLOSE_LOOP_T::currentReferenceSqrMaxSet, deadTimeComputeLowPriorityRun(), deadTimeComputeReInit(), FOC_T::electricalCycleCountMax, ABNORMAL_SPEED_STALL_DETECT_FLAGS_T::abnormalSpeedStallDetectFlags::enable, NO_MOTOR_STALL_DETECT_FLAGS_T::noMotorStallDetectFlags::enable, DEAD_TIME_COMP_FLAGS_T::deadTimeCompFlags::enable, ABNORMAL_SPEED_STALL_DETECT_FLAGS_T::abnormalSpeedStallDetectFlags::enableSet, NO_MOTOR_STALL_DETECT_FLAGS_T::noMotorStallDetectFlags::enableSet, FALSE, ABNORMAL_SPEED_STALL_DETECT_T::flags, DEAD_TIME_COMPUTE_T::flags, NO_MOTOR_STALL_DETECT_T::flags, CLOSE_LOOP_T::flags, FOC_CLOSE_LOOP, FOC_HALL_CALIB, FOC_INIT, FOC_OPEN_LOOP, FOC_STOP, getCloseLoopAlignedStatus(), getStallStatusForReport(), FOC_T::hallCalibObj, hallCalibRun(), HALL_ESTIMATOR_OBJ_T::hallEstimSpeedFilt, FOC_T::hallObj, FOC_T::idq, CLOSE_LOOP_T::idqRef, OPEN_LOOP_T::iqRef, CLOSE_LOOP_T::iqRefMax, CLOSE_LOOP_T::iRefMax, PI_T::kiTerm, CLOSE_LOOP_T::maximumPower, NO_MOTOR_STALL_DETECT_T::minimumCurrent, MOD_INDEX_LIMIT_OVERMODULATION, FOC_T::modIndexLimit, STALL_DETECT_T::noMotorStall, FOC_T::openLoop, PI_T::outMax, PI_T::outMin, FOC_T::pDeadTime, HALL_ESTIMATOR_OBJ_T::pDeltaT, FOC_T::piId, FOC_T::piIq, CLOSE_LOOP_T::piSpeed, CLOSE_LOOP_T::PowerFeedback, CLOSE_LOOP_T::PowerReference, CLOSE_LOOP_T::psourceCurrentFeedbackFilt, FOC_T::pVdc, CLOSE_LOOP_T::pVelocity, MC_DQ_T::q, CLOSE_LOOP_T::speedReference, FOC_T::stallDetect, stallDetectLowPriorityRun(), FOC_T::state, CLOSE_LOOP_T::torqRefScalingFactor, CLOSE_LOOP_FLAGS_T::closeLoopFlags::torqueModeEnable, OPEN_LOOP_T::velocityReference, and CLOSE_LOOP_T::velocityReference.

§ getFOCStallStatusForAction()

_Bool getFOCStallStatusForAction ( FOC_T pFOC)
inline

FOC Stall Status check.

Parameters
[in]*pFOCPointer
Returns
Returns the status

References FOC_STALL, and FOC_T::state.

§ getFOCStallStatusForReport()

_Bool getFOCStallStatusForReport ( FOC_T pFOC)
inline

FOC Stall Report Status check.

Parameters
[in]*pFOCPointer
Returns
Returns the status

References NO_STALL, FOC_T::stallDetect, and STALL_DETECT_T::status.

§ getKickBackStatus()

_Bool getKickBackStatus ( FOC_T pFOC)
inline

FOC Kick Back check.

Parameters
[in]*pFOCPointer
Returns
Returns the status

References FOC_T::closeLoop, FOC_T::idq, CLOSE_LOOP_T::pVelocity, and MC_DQ_T::q.

© Copyright 1995-2025, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale