Browse Source

加入设置和获取最大扭矩的接口

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 3 năm trước cách đây
mục cha
commit
3c17c68dfd

+ 13 - 1
Applications/foc/core/PMSM_FOC_Core.c

@@ -125,6 +125,7 @@ void PMSM_FOC_CoreInit(void) {
 	_gFOC_Ctrl.params.s_maxiDC = (MAX_iDQ);
 	_gFOC_Ctrl.params.s_maxiDC = (MAX_iDC);
 	_gFOC_Ctrl.params.s_maxRPM = (MAX_SPEED);
+	_gFOC_Ctrl.params.s_maxTorque = MAX_TORQUE;
 	_gFOC_Ctrl.params.n_modulation = SVM_Modulation;
 	_gFOC_Ctrl.params.n_PhaseFilterCeof = (0.2f);
 	_gFOC_Ctrl.params.maxvDQ.d = MAX_vDC;
@@ -366,10 +367,21 @@ void PMSM_FOC_SpeedLimit(float speedLimit) {
 	_gFOC_Ctrl.params.s_maxRPM = (speedLimit);
 }
 
-s32q4_t PMSM_FOC_GetSpeedLimit(void) {
+float PMSM_FOC_GetSpeedLimit(void) {
 	return _gFOC_Ctrl.params.s_maxRPM;
 }
 
+void PMSM_FOC_TorqueLimit(float torqueLimit) {
+	if (torqueLimit > MAX_TORQUE) {
+		torqueLimit = MAX_TORQUE;
+	}
+	_gFOC_Ctrl.params.s_maxTorque = torqueLimit;
+}
+float PMSM_FOC_GetTorqueLimit(void) {
+	return _gFOC_Ctrl.params.s_maxTorque;
+}
+
+
 void PMSM_FOC_VbusVoltage(float vbusVol) {
 	_gFOC_Ctrl.in.s_vDC = vbusVol;
 }

+ 5 - 1
Applications/foc/core/PMSM_FOC_Core.h

@@ -21,6 +21,7 @@ typedef struct {
 	DQ_t  maxvDQ;
 	DQ_t  minvDQ;
 	float s_maxRPM;
+	float s_maxTorque;
 	float n_modulation;
 	float n_PhaseFilterCeof;
 }FOC_Params;
@@ -143,7 +144,7 @@ void PMSM_FOC_Start(u8 nCtrlMode);
 void PMSM_FOC_Stop(void);
 void PMSM_FOC_iBusLimit(float ibusLimit);
 void PMSM_FOC_SpeedLimit(float speedLimit);
-s32q4_t PMSM_FOC_GetSpeedLimit(void);
+float PMSM_FOC_GetSpeedLimit(void);
 void PMSM_FOC_VbusVoltage(float vbusVol);
 void PMSM_FOC_SetCtrlMode(u8 mode);
 void PMSM_FOC_SetOpenVdq(float vd, float vq);
@@ -168,5 +169,8 @@ void PMSM_FOC_SetErrCode(u8 error);
 u8 PMSM_FOC_GetErrCode(void);
 void PMSM_FOC_MTPA_Calibrate(bool enable);
 void PMSM_FOC_Get_TgtIDQ(DQ_t * dq);
+void PMSM_FOC_TorqueLimit(float torqueLimit);
+float PMSM_FOC_GetTorqueLimit(void);
+
 #endif /* _PMSM_FOC_Core_H__ */
 

+ 1 - 1
Applications/foc/core/torque.c

@@ -32,7 +32,7 @@ float torque_target_from_throttle(float f_throttle) {
 
 	float ration = delta / (THROTTLE_MAX_VALUE - THROTTLE_LOW_VALUE);
 
-	return (MAX_TORQUE * ration);
+	return (PMSM_FOC_GetTorqueLimit() * ration);
 }
 
 

+ 1 - 18
Project/GD32_DEMO.uvoptx

@@ -147,24 +147,7 @@
           <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_HD -FS08000000 -FL010000 -FP0($$Device:GD32F303RC$Flash\GD32F30x_HD.FLM))</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint>
-        <Bp>
-          <Number>0</Number>
-          <Type>0</Type>
-          <LineNumber>146</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>0</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>0</BreakIfRCount>
-          <Filename>..\Applications\foc\motor\encoder.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression></Expression>
-        </Bp>
-      </Breakpoint>
+      <Breakpoint/>
       <WatchWindow1>
         <Ww>
           <count>0</count>