Эх сурвалжийг харах

add pid config command

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 4 жил өмнө
parent
commit
f653605064

+ 15 - 0
Applications/foc/commands.c

@@ -38,6 +38,15 @@ static u32 foc_command_task(void *args) {
 	return 0;
 }
 
+static void conf_foc_pid(pid_conf_t *pid) {
+	PMSM_FOC_SetIDPid((float)pid->kp/pid->gain, (float)pid->ki/pid->gain, (float)pid->kb/pid->gain);
+	pid += 1;
+	PMSM_FOC_SetIQPid((float)pid->kp/pid->gain, (float)pid->ki/pid->gain, (float)pid->kb/pid->gain);
+	pid += 1;
+	PMSM_FOC_SetSpdPid((float)pid->kp/pid->gain, (float)pid->ki/pid->gain, (float)pid->kb/pid->gain);
+	pid += 1;
+	PMSM_FOC_SetTrqPid((float)pid->kp/pid->gain, (float)pid->ki/pid->gain, (float)pid->kb/pid->gain);
+}
 
 static void process_foc_command(foc_cmd_body_t *command) {
 	u8 erroCode = 0;
@@ -89,6 +98,12 @@ static void process_foc_command(foc_cmd_body_t *command) {
 			PMSM_FOC_SetOpenVdq(0, vq);
 			break;
 		}
+		case Foc_Conf_Pid:
+		{
+			pid_conf_t pid[4];
+			memcpy((char *)pid, (char *)command->data, 4 * sizeof(pid_conf_t));
+			conf_foc_pid(pid);
+		}
 		default:
 		{
 			erroCode = FOC_Unknow_Cmd;