Parcourir la source

FOC core部分代码移动到motor.c中

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui il y a 3 ans
Parent
commit
0de0fe9dfe

+ 3 - 4
Applications/foc/commands.c

@@ -168,16 +168,15 @@ static void process_foc_command(foc_cmd_body_t *command) {
 		case Foc_Set_EPM_Mode:
 		{
 			bool mode = decode_u8((u8 *)command->data) == 0?false:true;
-			if (!PMSM_FOC_Set_epmMode(mode)) {
+			if (!mc_start_epm(mode)) {
 				erroCode = PMSM_FOC_GetErrCode();
 			}
 			break;
 		}
 		case Foc_Start_EPM_Move:
 		{
-			bool move = decode_u8((u8 *)command->data) == 0?false:true;
-			EPM_Dir_t dir = (EPM_Dir_t)decode_u8((u8 *)command->data + 1);
-			if(!PMSM_FOC_Start_epmMove(move, dir)) {
+			EPM_Dir_t dir = (EPM_Dir_t)decode_u8((u8 *)command->data);
+			if(!mc_start_epm_move(dir)) {
 				erroCode = PMSM_FOC_GetErrCode();
 			}
 			break;

+ 2 - 12
Applications/foc/core/PMSM_FOC_Core.c

@@ -589,14 +589,6 @@ bool PMSM_FOC_SetCtrlMode(u8 mode) {
 	return true;
 }
 
-void PMSM_FOC_GetRunningStatus(u8 *data) {
-	data[0] = gFoc_Ctrl.in.n_ctlMode;
-	data[0] |= gFoc_Ctrl.out.n_RunMode << 2;
-	data[0] |= (gFoc_Ctrl.in.b_cruiseEna?1:0) << 4;
-	data[0] |= (PMSM_FOC_Is_CruiseEnabled()?1:0) << 5;
-	data[0] |= (PMSM_FOC_is_epmMode()?1:0) << 6;
-	data[0] |= (0) << 7; //motor locked
-}
 
 u8 PMSM_FOC_GetCtrlMode(void) {
 	return gFoc_Ctrl.in.n_ctlMode;
@@ -651,6 +643,7 @@ bool PMSM_FOC_Set_Speed(float rpm) {
 	return true;
 }
 
+#if 0
 bool PMSM_FOC_Set_epmMode(bool epm) {
 	if (epm && !gFoc_Ctrl.in.b_motEnable) {
 		PMSM_FOC_SetErrCode(FOC_NotAllowed);
@@ -675,10 +668,6 @@ bool PMSM_FOC_Set_epmMode(bool epm) {
 	return true;
 }
 
-bool PMSM_FOC_is_epmMode(void) {
-	return gFoc_Ctrl.in.b_epmMode;
-}
-
 bool PMSM_FOC_Start_epmMove(bool move, EPM_Dir_t dir) {
 	if (!gFoc_Ctrl.in.b_epmMode) {
 		return false;
@@ -697,6 +686,7 @@ bool PMSM_FOC_Start_epmMove(bool move, EPM_Dir_t dir) {
 EPM_Dir_t PMSM_FOC_Get_epmDir(void) {
 	return gFoc_Ctrl.in.epmDirection;
 }
+#endif
 
 bool PMSM_FOC_Set_Current(float is) {
 	if (is > gFoc_Ctrl.userLim.s_PhaseCurrLim) {

+ 9 - 0
Applications/foc/motor/motor.c

@@ -269,6 +269,15 @@ void mc_use_throttle(void) {
 	motor.b_ignor_throttle = false;
 }
 
+void mc_get_running_status(u8 *data) {
+	data[0] = motor.mode;
+	data[0] |= PMSM_FOC_Get()->out.n_RunMode << 2;
+	data[0] |= (PMSM_FOC_Get()->in.b_cruiseEna?1:0) << 4;
+	data[0] |= (PMSM_FOC_Is_CruiseEnabled()?1:0) << 5;
+	data[0] |= (mc_is_epm()?1:0) << 6;
+	data[0] |= (0) << 7; //motor locked
+}
+
 
 void mc_encoder_off_calibrate(s16 vd) {
 	if (PMSM_FOC_Is_Start()) {

+ 1 - 0
Applications/foc/motor/motor.h

@@ -36,6 +36,7 @@ bool mc_set_foc_mode(u8 mode);
 bool mc_is_epm(void);
 bool mc_start_epm(bool epm);
 bool mc_start_epm_move(EPM_Dir_t dir);
+void mc_get_running_status(u8 *data);
 
 static __INLINE float motor_encoder_get_angle(void) {
 #ifdef USE_ENCODER_HALL

+ 2 - 1
Applications/prot/can_foc_msg.c

@@ -3,6 +3,7 @@
 #include "prot/can_foc_msg.h"
 #include "foc/commands.h"
 #include "foc/samples.h"
+#include "foc/motor/motor.h"
 #include "foc/core/PMSM_FOC_Core.h"
 
 void can_report_speed(u8 can, s16 rpm) {
@@ -80,7 +81,7 @@ void can_report_pid_value(u8 can, u8 id) {
 void can_report_foc_status(u8 can) {
 	u8 data[8];
 	encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Status));
-	PMSM_FOC_GetRunningStatus(data+2);
+	mc_get_running_status(data+2);
 	u32 errMask = PMSM_FOC_GetCriticalError();
 	encode_u32(data + 3, errMask);
 	can_send_message(get_indicator_can_id(can), data, sizeof(data), 0);