主题中讨论的其他器件:MOTORWARE
工具/软件:Code Composer Studio
您好!
我正在使用 InstaSPIN Motorware、并使用其参数在 user.h 中定义了我的电机。
设置 gMotorVars.Flag_Run_Identify = true 后、我的电机正常运行。
现在、我们板上有一个 EEPROM、用于存储不同电机的不同电机参数。 我们从 lab02a 获取所有这些参数以及电机识别。 当我想更改电机(电机未运行)时,我从 EEPROM 中获取新参数,并将这些参数存储在 gMotorVars 和 gUserParams 中,然后我调用 CTRL_setParams()。
通过设置 gMotorVars.Flag_Run_Identify = true 来启动另一个电机现在不起作用、我不知道原因。 电机正在尝试启动、但未运行。
当我在 user.h 中更改电机参数时、它适用于其他电机。
要在运行时更改电机(电机未运行)、我必须怎么做?
当我更改电机参数时、以下代码正在运行:
gMotorVars.Rs_Ohm = EEPROM_structure.MOTOR_params_arr[mot].Rs_Ohm;
gMotorVars.RR_Ohm = EEPROM_structure.MOTOR_params_arr[mot].RR_Ohm;
gMotorVars.LSD_H = EEPROM_structure.MOTOR_params_arr[mot].LS_q_d_H;
gMotorVars.LSQ_H = EEPROM_structure.MOTOR_params_arr[mot].LS_q_d_H;
gMotorVars.MagnCurr_A = EEPROM_structure.MOTOR_params_arr[mot].Magninging_Current_A;
gMotorVars.SpeedRef_KRPM =_IQ (EEPROM_structure.MOTOR_params_arr[mot].speed_run_rpm / 1000.0);
gMotorVars.MaxAccel_krpmps =_IQ (EEPROM_structure.MOTOR_params_arr[mot].speed_run_accel_rpmps / 1000.0);
gMotorVars.KP_SPD =_IQ (EEPROM_structure.MOTOR_params_arr[mot].KP_SPD);
gMotorVars.KI_SPD =_IQ (EEPROM_structure.MOTOR_params_arr[mot].KI_SPD);
gMotorVars.KP_idq =_IQ (EEPROM_structure.MOTOR_params_arr[mot].KP_idq);
gMotorVars.KI_idq =_IQ (EEPROM_structure.MOTOR_params_arr[mot].KI_idq);
//从观察窗口设置 Kp 和 Ki 速度值
CTRL_setKp (ctrlHandle、CTRL_Type_PID_SPD、gMotorVars.KP_SPD);
CTRL_setKi (ctrlHandle、CTRL_Type_PID_SPD、gMotorVars.KI_SPD);
//从观察窗口中设置 Id 和 Iq 的 Kp 和 ki 电流值
CTRL_setKp (ctrlHandle、CTRL_Type_PID_ID、gMotorVars.KP_idq);
CTRL_setKi (ctrlHandle、CTRL_Type_PID_ID、gMotorVars.KI_Idq);
CTRL_setKp (ctrlHandle、CTRL_Type_PID_IQ、gMotorVars.KP_idq);
CTRL_setKi (ctrlHandle、CTRL_Type_PID_IQ、gMotorVars.KI_Idq);
gMotorVars.RsOnLineCurrent_A =(0.1 * EEPROM_structure.MOTOR_params_arr[mot].max_Current_A);
gUserParams.maxCurrent = EEPROM_structure.motor_params_arr[mot].max_current_a;
gUserParams.motor_numPolePairs = EEPROM_structure.motor_params_arr[mot].motor_num_pole_pairs;
gUserParams.motor_ratedFlux = EEPROM_structure.motor_params_arr[mot].motor_rated 磁通_VpHz;
gUserParams.motor_rr = gMotorVars.rr_Ohm;
gUserParams.motor_Rs = gMotorVars.Rs_Ohm;
gUserParams.motor_LS_d = gMotorVars.LSD_H;
gUserParams.motor_LS_q = gMotorVars.LSQ_H;
gUserParams.IdRated = EEPROM_structure.MOTOR_params_arr[mot].磁 化电流_A;
gUserParams.fluxEstFreq_Hz = EEPROM_structure.motor_params_arr[mot].flux_est_freq_Hz;
gUserParams.maxNegativeIdCurrent_A =(-0.5 * gUserParams.maxCurrent);
//设置默认控制器参数
CTRL_setParams (ctrlHandle、&gUserParams);
此致、
Dani