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.

[参考译文] TMS320F28027F:关于 lab5b 项目角度损失问题

Guru**** 2573065 points
Other Parts Discussed in Thread: LAUNCHXL-F28027F, DRV8305

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1005273/tms320f28027f-about-the-problem-of-lab5b-project-angle-loss

器件型号:TMS320F28027F
主题中讨论的其他器件:LAUNCHXL-F28027FDRV8305

TI 技术专家、当我使用 lab5b 项目时、电机设置速度为40rpm。 为了确保无调制、我将速度环路的输出限制为0.5、然后我使用负载来驱动电机以相同的方向旋转、 负载速度大于电机时、电机将产生可调节的最大电压、以抵消负载产生的超速。 电机的扭矩输出可以保持一段时间、但我希望它可以保持、但不幸的是、扭矩只能保持一段时间、这就导致了这种情况、它似乎与 EST 估算角度有关。 下图清楚地显示了这一过程:

上图显示了三相的相电流。

在下图中、参考红线是 CTRL_getSpd_out_pu 的输出值、蓝线实际值是 CTRL_getIq_in_pu 的输出值、黄色线角是 EST_getAngle_pu 的输出值。

当 CTRL_getSpd_out_pu 的预期值保持在最大调制值0.5时、转矩保持稳定。 当发生阶跃中断时、角度值会严重失真、导致速度环路输出值上下波动、相应的三相电流空间调制也会失真。
如何防止这种情况发生?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于5月31日是 TI 假日、因此我们的回复可能会有一些延迟

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您使用的是 TI EVM 套件还是您赢得的电路板?

    负载增加似乎高于电机的最大输出扭矩、并且机器未在电机模式下工作。 本 instaspin 实验不支持四象限操作、因此您必须添加其他函数来控制此生成状态下的机器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用 LAUNCHXL-F28027F+DRV8305时、我确信不会超过电机的扭矩、因为我已将速度环路的输出限制为±0.5、但仍然会出现此问题。 该问题通常发生在速度环路输出±电流的拐点(负载驱动电机以相同方向旋转、电机输出负扭矩电流以抑制超速。 当负载降低速度等于或低于电机速度阈值时、电机将在正向方向输出+扭矩电流)是否有办法克服这一问题? 发生这种情况了吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在这种情况下、电机的运行速度是多少? 您可能必须为此应用使用 sensore-socs_focus.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、我想问、

    我看到 gMotorVars.IqRef_A *(1.0/USER_IQ_FULL_SCALE_CURRENT_A)、这意味着最大扭矩电流为1? 当我的 USER_IQ_FULL_SCALE_CURRENT_A 等于24时、我在 lab4中向 gMotorVars.IqRef_A 输入24a、并感觉扭矩最大、但1a 非常小。 为什么? 超过24A 时、电机将出现异常、这是正确的吗?

    此外、我注意到 USER_MAX_VS_MAG_PU 设置为0.5、这意味着最大调制矢量和为0.5、但我通过 ADC 收集的 gAdcData.I.value[0]值将在峰值处为1。 您能解释一下原因吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    instaspin 在 FAST 估算器和 FOC 函数中使用标么值(pu)格式、因此 FOC 函数中所有控制变量的正常范围可以是_IQ (-1.0)到_IQ (1.0)。  gMotorVars.IqRef_A 必须转换为_IQ 值以设置 IQ 参考。  

    USER_MAX_VS_MAG_PU 用于为  SVPWM 设置一个不等于 PWM 占空比且与 ADC 值无关的调制指数。  您可以查看电机控制教科书、该教科书可以详细描述 PWM 和 FOC。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 lab5b 中、总线电压为24V、USER_IQ_FULL_SCALE_CURRENT_A 和 USER_IQ_FULL_SCALE_CURRENT_A 均为24、USER_MAX_VS_MAG_PU 为0.5。 如何判断电机以24A 电流注入? 以确定最大扭矩输出? 我看到 ctrl.spd_out 的输出已经为1、但 vs 的值仅约为0.057。 如何达到最大扭矩?

    我的电机以这种方式运行 lab5b:

    e2e.ti.com/.../6ebe1708299539dd69b3302eca6f4938.mp4

    我注意到扭矩可以达到约1.5nm、但电源电流仅约为1.2a:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有关 电机控制和 FOC 的教科书中可能会详细介绍 d/q 轴电流、相电流和电源直流总线电流、这些值不同、它们之间没有直接成比例的关系。

    ctrl.spd_out 是目标扭矩电流、 vs 是矢量电压、两者都是_IQ 格式。

    您可以参阅 lab05a 以实现扭矩闭环控制、或参阅 lab05b 以实现速度闭环控制。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能否直接告诉我如何判断电机输出已达到 USER_MOTOR_MAX_CURRENT 的最大值? 因为我在其他帖子中看到了您的答案、所以 Vs 的值应该接近 USER_MAX_VS_MAG_PU、这意味着最大输出。 我的 USER_MAX_VS_MAG_PU 值为0.5、但测量值仅为0.05左右。 我的输出是否未最大化? 如何最大限度地提高输出? 感谢您的耐心等待。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如上所述、 USER_MAX_VS_MAG_PU 是最大电压矢量值和最大调制、您无法直接使用任何仪器测量该输出。

    您可以参考 klab10a 来添加以下代码以检查矢量输出电压。

    //按单位读取 Vd 和 Vq 矢量
    gMotorVars.Vd = CTRL_getVd_out_pu (ctrlHandle);
    gMotorVars.VQ = CTRL_getVq_out_pu (ctrlHandle);

    //计算向量 vs 以标么值表示
    gMotorVars.vs =_IQsqrt (_IQmpy (gMotorVars.vd、gMotorVars.vd)+_IQmpy (gMotorVars.VQ、gMotorVars.VQ));

    此外、检查 ctrl.pid_spd.UI 或  ctrl.pid_iq.refValue 以了解最大扭矩电流应为_iq (USER_MOTOR_MAX_CURRENT_USER_IQ_FULL_SCALE_CURRENT_A)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用 LAUNCHXL-F28027F、DRV8305、USER_MOTOR_MAX_CURRENT、USER_IQ_FULL_SCALE_CURRENT_A 为24A、并使用 TRAJ_setIntValue (ctrlHandle->trajHandle_spdMax、_IQ (0.5))将速度环路的输出限制为0.5。

    所需转矩电流与的总矢量由以下代码计算:

    gMotorVars.Vd = CTRL_getVd_out_pu (ctrlHandle);
    gMotorVars.VQ = CTRL_getVq_out_pu (ctrlHandle);
    gMotorVars.vs =_IQsqrt (_IQmpy (gMotorVars.vd、gMotorVars.vd)+_IQmpy (gMotorVars.VQ、gMotorVars.VQ));

    实际转矩电流的总矢量(以安培为单位)由以下代码计算:

    gMotorVars.ID_A =_IQmpy (CTRL_getid_in_pu (ctrlHandle)、_IQ (USER_IQ_FULL_SCALE_CURRENT_A));
    gMotorVars.IQ_A =_IQmpy (CTRL_getIq_in_pu (ctrlHandle)、_IQ (USER_IQ_FULL_SCALE_CURRENT_A));
    gMotorVars.is_a =_IQsqrt (_IQmpy (gMotorVars.ID_A、gMotorVars.ID_A)+_IQmpy (gMotorVars.IQ_A、gMotorVars.IQ_A));

    下图显示了速度环路的各种输出满足预期的饱和0.5:

    根据0.5饱和输出的原理、缩放后的 USER_MOTOR_MAX_CURRENT 应为12A。 下图显示了 IQ_A 和 Is_A 的值满足预期:

    遗憾的是、我仍然不太了解 VD、VQ、Vs 和 id_a、IQ_A 和 IS _A 之间的对应关系 原则上、它们的值不应该相同? 我设置 VD、VQ 和* USER_IQ_FULL_SCALE_CURRENT_A 的值、但仍然与 id_A、IQ_A、Is_A 和 Yanming 不匹配、您能告诉我原因吗?

    此外,我想提出另一个问题。 在上图中、Is_A 的值满足0.5饱和输出的预期、即12A 的扭矩电流。 这是否意味着最大输出0.5已经存在? 那么、如果我将0.5设置为1的饱和输出、这是否意味着24A 是最大输出? 在这种情况下、我们是否应该考虑 USER_MAX_VS_MAG_PU (0.5)情况? 由于其最大占空比为86%、最大输出实际上是否约为21A?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我无法理解您希望在电机控制中实现 instaspin foclab 的目的。 您可能会看到有关 FOC 的电机控制教科书、它可以帮助您了解这些有关 d/q 轴电流和电压以及 FOC 的概念。

    不可以、Vd 和 Vq 是 d/q 轴上的输出电压、pu 格式、Id 和 Iq 是 d/q 轴上的反馈电流、 如上所述、这些变量之间没有直接比例关系、电机控制教科书中有基于电机模型的公式。

    您可能只需 根据规格增加 USER_MOTOR_MAX_CURRENT。 电机的最大扭矩、因此无需考虑上述变量的值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们希望使用 lab5b 速度环路来生成电阻。 正如上面的视频一样、负载驱动电机快速旋转。 由于电机速度被赋予一个极低的值、10rpm、它将生成一个与负载相对的转矩来抑制过速。 我说您可以理解吗?

    我一直问这种问题、因为我想确保当 SPD_OUT 为1时、相电流输出为最大值? IQ_A 和 IC_A 应该接近24吗? (在电流参数下、例如 USER_MOTOR_MAX_CURRENT 为24)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="402201" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1005273/tms320f28027f-about-the-problem-of-lab5b-project-angle-loss/3726789 #3726789"] USER_MOTOR_MAX_CURRENT、USER_IQ_FULL_SCALE_CURRENT_A 为24A、[/QUEST]

    让 ADC 满量程放大器设置与 PI 控制电机饱和放大器相同的值、这似乎不是一个好条件。 没有 ADC 裕量来精确调节峰值电机电流。 电动机最大电流是在各种转子速度下瞬时开关时间的饱和峰值,在大多数情况下假设大于1Hz。 有关 user.h 设置的详细说明、请参阅《Instaspin 运动用户指南》SPRUHJ1H–2013年1月–2019年6月修订版。  

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="402201" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1005273/tms320f28027f-about-the-problem-of-lab5b-project-angle-loss/3728442 #3728442"]我们希望使用 lab5b 速度环路来生成电阻。

    典型且记录良好的 Matlab 转子负载可能是通过轴连接到具有负载电阻器组的功率发生器以计算 KW 输出。 也许您可以将高电流 BLDC 用作连接 LAB5的电机驱动的连接发生器。 CCS 调试显示的是电机放大器和扭矩 Nm、这似乎是致命的。 此外、还可以将三二极管整流器连接到 BLDC 相线、以收集通过3个 ADC 输入通道产生的线性功率输出图、并在稍后绘制这些图。 TIRTOS 支持通过 CCS 调试进行实时图形化。

    [引用 userid="402201" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1005273/tms320f28027f-about-the-problem-of-lab5b-project-angle-loss/3728442 #3728442"]我们希望使用 lab5b 速度环路来生成电阻[/quot]

    我认为这不是这些实验的目的、但注意到 Axiom 项目使用 VESC 控制器执行了类似的测试方法。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     USER_MOTOR_MAX_CURRENT 限制为硬件板、应根据电机设置为正确的值、并且必须低于 USER_ADC_FULL_SCALE_CURRENT_A 和 USER_IQ_FULL_SCALE_CURRENT_A 的一半

    如前所述、建议您为应用使用传感 FOC、我认为无传感器 FCO 不能轻松满足您在低速运行电机的要求。