This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
你好、我有一个凸极比约为2的电机。 我是通过使用 LCR 表并在整个电气旋转过程中找到最小和最大 Ls 来确定这一点的。 TI 文档(SPRACF3)指出 Ld > Lq、而所有其他来源指出 Lq > Ld 使用 TI 的 LD > LQ 会导致 MTPA kconst 值为负(obj->kconst = 0.25 *(flux_wb /(ls_q_H - ls_d_H);)、当 is_ref_a 为正时 、该值在后续计算中不起作用:obj->gconst = rad->kconst /(obj->is_ref_a)、然后(obj->gconst = gaclest-);(obj->gconst = gacle-);然后(objf ->gconst (obj-)
因此、我交换了电机参数、使 Lq 的电感值更大、Ld 的电感值更小、这样就修复了 NaN 问题。 不过、尽管我的 IPMSM 电机的凸极比约为2、这相当高、但与额定磁通(0.02V/Hz 或约0.0032Wb)相比、电感非常小(0.000010uH 至0.000020uH)。 计算结果导致 gconst 约为62、这只会导致角度发生大约1度的变化、因此与 IQ_ref 相比、Id_ref 值非常小 我的 IPMSM 是否确实不会因高磁通电感比而明显受益于 MTPA?
TI 文档(SPRACF3)规定 LD > LQ、
可能是一个拼写错误。 电机控制 SDK 示例实验中的 MTPA 算法使用 Lq>Ld 来计算注入电流或矢量角度。
[报价 userid="614577" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1387613/tms320f2800135-mtpa-for-ipmsm-motor ]我的 IPMSM 是否因为高磁通电感比而根本无法从 MTPA 中显著获益?不仅是 MTPA、您可能还必须为此添加去耦。
感谢您的响应。 我将负责实现 DQ 去耦。 是否有任何示例代码可供我用作参考?
尚未供参考。 你可以在网站上找到很多论文,并在你的项目中实施。
我懂了。 我感到惊讶的是、这并未包含在基本代码中、这是因为它易于添加、并且提供了一种更"完整"的控制解决方案、其中有可能提高某些电机的性能。 与其他功能一样、可以使用编译器预定义符号来启用该功能。 此外、对于现有的前馈术语、代码似乎已"预接线"。 在任何情况下、这对您来说是否正确?
// obj->Vdq_FFWD_V.value[0]= 0.0f;
// obj->Vdq_FFWD_V.value[1]= 0.0f;
obj->Vdq_FFWD_V.value[0]= obj->speed_rps * objUser->Ls_q_H * obj->Idq_in_A.value[1];
obj->Vdq_FFWD_V.value[1]=-obj->speed rps *(objUser->Ls_d_H * obj->Idq_in_value[0]+ oba.User->motor_ratgpu Flux_Wb);
谢谢。
如下所示、已在通用电机实验室中实现了 DQ 去耦方法、但尚未在 IPM 电机上进行验证和测试。 您可以参考它。
#if defined (MOTOR1_DECOUP)
if ((obj->flagMotorIdentified == true)&&(obj->flagEnableDecoupleCtrl == true))
{
float32_t speed_rps = obj->speed_Hz * MATH_two_pi;//单位为 rad/s
obj->V_decoop_max_V = obj->adcData。 VdcBus_V * objSets->V_decop_sf;
obj->V_decop_min_V =-obj->V_decop_max_V;
//- WE*LQ*Iq, SI 单位: WE(rad/s)*L(H)*I(A)
obj->Vdq_decop_V.value[0]=
_fsat (-speed_rps * objSets->Ls_q_H * obj->Idq_in_A.value[1]、
obj->V_decop_max_V、obj->V_decop_min_V);
//+W*( LD*ID+FLUX ), SI 单位: WE(rad/s)*L(H)*I(A), Flux(WB)
obj->Vdq_decop_V.value[1]=
__fsat (speed_rps *(objSets->ls_d_H * obj->Idq_in_A.value[0]+ obj->flux_wb)、
obj->V_decop_max_V、obj->V_decop_min_V);
}
设计
{
obj->Vdq_disapp_V.value[0]= 0.0f;
obj->Vdq_disapp_V.value[1]= 0.0f;
}
obj->Vdq_FFWD_V.value[0]+= obj->Vdq_disapp_V.value[0];
obj->Vdq_FFWD_V.value[1]+= obj->Vdq_disapp_V.value[1];
#endif // MOTOR1_DECOUP
可通过以下链接在实验用户指南中找到有关该实验的详细介绍。
C2000WARE-MOTORCONTROL-SDK: https://www.ti.com/tool/C2000WARE-MOTORCONTROL-SDK
通用项目和实验用户指南: https://www.ti.com/lit/spruj26
文件夹下的示例实验项目:C:\ti\c2000\C2000 Ware_Motor 200241_SDK_ \solutions\universal_motorcontrol_lab\f28002x
或 C:\ti\c2000\C2000 Ware_Motor SDK_ \solutions\universal_motorcontrol_lab\f28003x
或 C:\ti\c2000\C2000 Ware_Motor SDK_ \solutions\universal_motorcontrol_lab\f280013x
感谢您学习代码片段。 我已下载最新的 MotorControl SDK (C2000SDK_362_SDK_5_02_00_00)、但在 Ware_Motor 的 universal_motorcontrol_lab 中没有看到该内容、但我会添加您发布的内容。 谢谢!