|
|
@@ -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;
|