![]() |
![]() |
|
MSPM0G3519SensoredFOCMotorControlLibrary
1.0
|
#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"

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... | |
| enum FOC_STATE_TYPES |
Foc Flags Structure.
| void focInit | ( | FOC_T * | pFOC | ) |
FOC Init.
| [in] | *pFOC | Input Pointer |
References MC_ABC_T::a, FOC_FLAGS_T::b, MC_ABC_T::b, MC_ABC_T::c, FOC_T::closeLoop, closeLoopInit(), MC_SVM_T::Dabc, FALSE, FOC_T::flags, hallCalibInit(), FOC_T::hallCalibObj, MC_SVM_T::maxDutyPhase, MC_SVM_T::minDutyPhase, FOC_T::openLoop, openLoopInit(), PHASE_INVALID, FOC_T::piId, piInit(), FOC_T::piIq, MC_SVM_T::prevVoltageSector, SECTOR_INVALID, FOC_T::stallDetect, stallDetectInit(), FOC_T::svm, FOC_FLAGS_T::focFlags::voltageModeEnable, and MC_SVM_T::voltageSector.
Referenced by focRun().
| void focRun | ( | FOC_T * | pFOC | ) |
FOC Run.
| [in] | *pFOC | Input 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.
| void focLowPriorityRun | ( | FOC_T * | pFOC | ) |
FOC Low Priority Run.
| [in] | *pFOC | Input 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.
|
inline |
FOC Stall Status check.
| [in] | *pFOC | Pointer |
References FOC_STALL, and FOC_T::state.
|
inline |
FOC Stall Report Status check.
| [in] | *pFOC | Pointer |
References NO_STALL, FOC_T::stallDetect, and STALL_DETECT_T::status.
|
inline |
FOC Kick Back check.
| [in] | *pFOC | Pointer |
References FOC_T::closeLoop, FOC_T::idq, CLOSE_LOOP_T::pVelocity, and MC_DQ_T::q.