|
|
@@ -98,7 +98,7 @@ static __INLINE void FOC_DqRamp_init(dq_Rctrl *c, int count) {
|
|
|
}
|
|
|
|
|
|
static __INLINE void FOC_Set_iDqRamp(dq_Rctrl *c, float target) {
|
|
|
- FOC_Set_DqRamp(c, target, (IDQ_CTRL_TS/SPD_CTRL_TS - 1));
|
|
|
+ FOC_Set_DqRamp(c, target, (/*IDQ_CTRL_TS/SPD_CTRL_TS - 1*/CURRENT_LOOP_RAMP_COUNT));
|
|
|
}
|
|
|
|
|
|
static __INLINE void FOC_Set_vDqRamp(dq_Rctrl *c, float target) {
|
|
|
@@ -166,7 +166,7 @@ static __INLINE void PMSM_FOC_Update_Hardware(void) {
|
|
|
}
|
|
|
|
|
|
_gFOC_Ctrl.in.s_motRPM = motor_encoder_get_speed() / _gFOC_Ctrl.params.n_poles;
|
|
|
- //_gFOC_Ctrl.in.s_vDC = get_vbus_float();
|
|
|
+ _gFOC_Ctrl.in.s_vDC = get_vbus_float();
|
|
|
//sample current
|
|
|
phase_current_get(_gFOC_Ctrl.in.s_iABC);
|
|
|
|
|
|
@@ -183,6 +183,11 @@ static __INLINE void PMSM_FOC_Update_Hardware(void) {
|
|
|
|
|
|
static __INLINE void PMSM_FOC_Update_PI_Idq(void) {
|
|
|
/* update id pi ctrl */
|
|
|
+ _gFOC_Ctrl.params.maxvDQ.d = _gFOC_Ctrl.in.s_vDC;//MAX_vDC;
|
|
|
+ _gFOC_Ctrl.params.minvDQ.d = -_gFOC_Ctrl.in.s_vDC;//MAX_vDC;
|
|
|
+ _gFOC_Ctrl.params.maxvDQ.q = _gFOC_Ctrl.in.s_vDC;//MAX_vDC;
|
|
|
+ _gFOC_Ctrl.params.minvDQ.q = -_gFOC_Ctrl.in.s_vDC;//MAX_vDC;
|
|
|
+
|
|
|
if (_gFOC_Ctrl.params.maxvDQ.d != _gFOC_Ctrl.pi_ctl_id->max) {
|
|
|
_gFOC_Ctrl.pi_ctl_id->max = _gFOC_Ctrl.params.maxvDQ.d;
|
|
|
}
|
|
|
@@ -211,8 +216,10 @@ static __INLINE void PMSM_FOC_Plot_Debug(void) {
|
|
|
//plot_3data16(_gFOC_Ctrl.in.s_motRPM, FtoS16x1000(_gFOC_Ctrl.out.s_RealIdq.d), FtoS16x1000(_gFOC_Ctrl.out.s_RealIdq.q));
|
|
|
if (jtag_plot == 2) {
|
|
|
//plot_3data16(_gFOC_Ctrl.in.s_motRPM, FtoS16x10(_gFOC_Ctrl.out.s_RealIdq.d), FtoS16x10(_gFOC_Ctrl.out.s_RealIdq.q));
|
|
|
- plot_3data16(FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[0]), FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[1]), FtoS16x10(_gFOC_Ctrl.in.s_iABCFilter[2]));
|
|
|
+ //plot_3data16(_gFOC_Ctrl.out.n_Duty[0], _gFOC_Ctrl.out.n_Duty[1], _gFOC_Ctrl.out.n_Duty[2]);
|
|
|
+ //plot_3data16(_gFOC_Ctrl.in.s_motRPM, FtoS16x10(_gFOC_Ctrl.in.s_iABC[1]), FtoS16x10(_gFOC_Ctrl.out.s_RealIdq.q));
|
|
|
//plot_2data16(_gFOC_Ctrl.in.s_iABC[0], _gFOC_Ctrl.in.s_iABCFilter[0]);
|
|
|
+ plot_3data16(_gFOC_Ctrl.in.s_motRPM, _gFOC_Ctrl.idq_ctl[1].s_Cp * 10, FtoS16x10(_gFOC_Ctrl.out.s_RealIdq.q));
|
|
|
}
|
|
|
//plot_1data16(FtoS16(_gFOC_Ctrl.in.s_hallAngle));
|
|
|
//plot_1data16(_gFOC_Ctrl.in.s_motRPM);
|
|
|
@@ -350,7 +357,7 @@ void PMSM_FOC_idqCalc(void) {
|
|
|
}
|
|
|
}
|
|
|
}else if (_gFOC_Ctrl.out.n_RunMode == CTRL_MODE_TRQ) {
|
|
|
- float refTorque = eCtrl_get_RefTorque();
|
|
|
+ float refTorque = eCtrl_get_FinalTorque();
|
|
|
_gFOC_Ctrl.pi_ctl_trq->max = refTorque;
|
|
|
_gFOC_Ctrl.pi_ctl_trq->min = -refTorque;
|
|
|
if ((eCtrl_get_FinalTorque() <= 0.0001f) && _gFOC_Ctrl.in.s_motRPM < MIN_RPM_EXIT_EBRAKE) {
|