|
|
@@ -175,11 +175,13 @@ static void PMSM_FOC_UserInit(void) {
|
|
|
gFoc_Ctrl.userLim.s_iDCeBrkLim = nv_get_foc_params()->s_iDCeBrkLim;
|
|
|
gFoc_Ctrl.userLim.s_PhaseCurreBrkLim = nv_get_foc_params()->s_PhaseCurreBrkLim;
|
|
|
gFoc_Ctrl.userLim.s_PhaseVoleBrkLim = gFoc_Ctrl.hwLim.s_PhaseVolMax;
|
|
|
+
|
|
|
gFoc_Ctrl.protLim.s_iDCLim = gFoc_Ctrl.userLim.s_iDCLim;
|
|
|
gFoc_Ctrl.protLim.s_PhaseCurrLim = gFoc_Ctrl.userLim.s_PhaseCurrLim;
|
|
|
- eRamp_init_target(&gFoc_Ctrl.userLim.rpmLimRamp, gFoc_Ctrl.userLim.s_motRPMLim);
|
|
|
- eRamp_init_target(&gFoc_Ctrl.userLim.phaseCurrLimRamp, gFoc_Ctrl.userLim.s_PhaseCurrLim);
|
|
|
- eRamp_init_target(&gFoc_Ctrl.userLim.DCCurrLimRamp, gFoc_Ctrl.userLim.s_iDCLim);
|
|
|
+
|
|
|
+ eRamp_init_target(&gFoc_Ctrl.userLim.rpmLimRamp, gFoc_Ctrl.userLim.s_motRPMLim, CONFIG_LIMIT_RAMP_TIME, CONFIG_LIMIT_RAMP_TIME);
|
|
|
+ eRamp_init_target(&gFoc_Ctrl.userLim.phaseCurrLimRamp, gFoc_Ctrl.userLim.s_PhaseCurrLim, CONFIG_LIMIT_RAMP_TIME, CONFIG_LIMIT_RAMP_TIME);
|
|
|
+ eRamp_init_target(&gFoc_Ctrl.userLim.DCCurrLimRamp, gFoc_Ctrl.userLim.s_iDCLim, CONFIG_LIMIT_RAMP_TIME, CONFIG_LIMIT_RAMP_TIME);
|
|
|
}
|
|
|
|
|
|
void PMSM_FOC_CoreInit(void) {
|
|
|
@@ -210,8 +212,8 @@ void PMSM_FOC_CoreInit(void) {
|
|
|
shark_task_create(PMSM_FOC_Debug_Task, NULL);
|
|
|
g_focinit = true;
|
|
|
}
|
|
|
- gFoc_Ctrl.params.n_modulation = nv_get_foc_params()->n_modulation;//SVM_Modulation;
|
|
|
- gFoc_Ctrl.params.n_PhaseFilterCeof = nv_get_foc_params()->n_PhaseFilterCeof;//(0.2f);
|
|
|
+ gFoc_Ctrl.params.n_modulation = CONFIG_SVM_MODULATION;//SVM_Modulation;
|
|
|
+ gFoc_Ctrl.params.n_PhaseFilterCeof = (CONFIG_CURR_LP_PARAM>1.0f?1.0f:CONFIG_CURR_LP_PARAM);
|
|
|
gFoc_Ctrl.params.n_poles = nv_get_motor_params()->poles;//MOTOR_POLES;
|
|
|
gFoc_Ctrl.in.s_manualAngle = INVALID_ANGLE;
|
|
|
gFoc_Ctrl.in.s_vDC = nv_get_foc_params()->s_maxDCVol;//(CONFIG_RATED_DC_VOL);
|
|
|
@@ -226,7 +228,7 @@ void PMSM_FOC_CoreInit(void) {
|
|
|
FOC_DqRamp_init(&gFoc_Ctrl.vdq_ctl[1], (CONFIG_IDQ_CTRL_TS/CONFIG_FOC_VDQ_RAMP_TS));
|
|
|
PMSM_FOC_Reset_PID();
|
|
|
|
|
|
- gFoc_Ctrl.plot_type = Plot_Phase_curr;
|
|
|
+ gFoc_Ctrl.plot_type = Plot_None;
|
|
|
}
|
|
|
|
|
|
//#define PHASE_LFP_FIR
|
|
|
@@ -328,7 +330,7 @@ static u32 PMSM_FOC_Debug_Task(void *p) {
|
|
|
}else if (gFoc_Ctrl.plot_type == Plot_Q_flow) {
|
|
|
plot_2data16(FtoS16x10(gFoc_Ctrl.idq_ctl[1].s_Cp), FtoS16x10(gFoc_Ctrl.out.s_RealIdq.q));
|
|
|
}else if (gFoc_Ctrl.plot_type == Plot_DQ_Curr) {
|
|
|
- plot_2data16(FtoS16x10(gFoc_Ctrl.out.s_RealIdq.d), FtoS16x10(gFoc_Ctrl.out.s_RealIdq.q));
|
|
|
+ plot_3data16(FtoS16x10(gFoc_Ctrl.out.s_RealIdq.d), FtoS16x10(gFoc_Ctrl.out.s_RealIdq.q), FtoS16x10(gFoc_Ctrl.out.s_FilteriDC));
|
|
|
}else if (gFoc_Ctrl.plot_type == Plot_Spd_flow) {
|
|
|
plot_2data16(gFoc_Ctrl.in.s_targetRPM, gFoc_Ctrl.in.s_motRPM);
|
|
|
}
|
|
|
@@ -535,10 +537,10 @@ void PMSM_FOC_RunTime_Limit(void) {
|
|
|
phaselim = min(phaselim, gFoc_Ctrl.userLim.s_PhaseCurrLim);
|
|
|
|
|
|
if (phaselim != gFoc_Ctrl.userLim.phaseCurrLimRamp.target) {
|
|
|
- eRamp_set_step_target(&gFoc_Ctrl.userLim.phaseCurrLimRamp, phaselim, CONFIG_eCTRL_STEP_TS, CONFIG_LIMIT_RAMP_TIME, CONFIG_LIMIT_RAMP_TIME);
|
|
|
+ eRamp_set_step_target(&gFoc_Ctrl.userLim.phaseCurrLimRamp, phaselim, CONFIG_eCTRL_STEP_TS);
|
|
|
}
|
|
|
if (dclim != gFoc_Ctrl.userLim.DCCurrLimRamp.target) {
|
|
|
- eRamp_set_step_target(&gFoc_Ctrl.userLim.DCCurrLimRamp, dclim, CONFIG_eCTRL_STEP_TS, CONFIG_LIMIT_RAMP_TIME, CONFIG_LIMIT_RAMP_TIME);
|
|
|
+ eRamp_set_step_target(&gFoc_Ctrl.userLim.DCCurrLimRamp, dclim, CONFIG_eCTRL_STEP_TS);
|
|
|
}
|
|
|
gFoc_Ctrl.protLim.s_iDCLim = dclim;
|
|
|
gFoc_Ctrl.protLim.s_PhaseCurrLim = phaselim;
|
|
|
@@ -583,7 +585,7 @@ void PMSM_FOC_DCCurrLimit(float ibusLimit) {
|
|
|
}
|
|
|
gFoc_Ctrl.userLim.s_iDCLim = (ibusLimit);
|
|
|
if (ibusLimit <= gFoc_Ctrl.protLim.s_iDCLim) {
|
|
|
- eRamp_set_step_target(&gFoc_Ctrl.userLim.DCCurrLimRamp, ibusLimit, CONFIG_eCTRL_STEP_TS, CONFIG_LIMIT_RAMP_TIME, CONFIG_LIMIT_RAMP_TIME);
|
|
|
+ eRamp_set_step_target(&gFoc_Ctrl.userLim.DCCurrLimRamp, ibusLimit, CONFIG_eCTRL_STEP_TS);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -596,7 +598,7 @@ void PMSM_FOC_SpeedLimit(float speedLimit) {
|
|
|
speedLimit = gFoc_Ctrl.hwLim.s_motRPMMax;
|
|
|
}
|
|
|
gFoc_Ctrl.userLim.s_motRPMLim = (speedLimit);
|
|
|
- eRamp_set_step_target(&gFoc_Ctrl.userLim.rpmLimRamp, speedLimit, CONFIG_eCTRL_STEP_TS, CONFIG_LIMIT_RAMP_TIME, CONFIG_LIMIT_RAMP_TIME);
|
|
|
+ eRamp_set_step_target(&gFoc_Ctrl.userLim.rpmLimRamp, speedLimit, CONFIG_eCTRL_STEP_TS);
|
|
|
}
|
|
|
|
|
|
float PMSM_FOC_GetSpeedLimit(void) {
|
|
|
@@ -654,7 +656,7 @@ void PMSM_FOC_PhaseCurrLim(float lim) {
|
|
|
gFoc_Ctrl.userLim.s_PhaseCurrLim = lim;
|
|
|
|
|
|
if (lim <= gFoc_Ctrl.protLim.s_PhaseCurrLim) {
|
|
|
- eRamp_set_step_target(&gFoc_Ctrl.userLim.phaseCurrLimRamp, lim, CONFIG_eCTRL_STEP_TS, CONFIG_LIMIT_RAMP_TIME, CONFIG_LIMIT_RAMP_TIME);
|
|
|
+ eRamp_set_step_target(&gFoc_Ctrl.userLim.phaseCurrLimRamp, lim, CONFIG_eCTRL_STEP_TS);
|
|
|
}
|
|
|
}
|
|
|
|