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.

[参考译文] BOOSTXL-DRV8323RH:Ref_Hz 设置为零、SPEED_Hz 在 EST_TYPE_HALL 上变为负值

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1309729/boostxl-drv8323rh-speedref_hz-set-to-zero-speed_hz-turned-to-negative-value-on-est_type_hall

器件型号:BOOSTXL-DRV8323RH

您好!

当 Ref_Hz 输入正值时、比如电机顺时针旋转、当速度 Ref_Hz 变为0时、速度451Hz 变为负值、电机仍顺时针旋转... 停止电机的唯一方法是 flagEnableRunAndIdentify 为0!

上述问题仅适用于霍尔模式、快速模式而不会出现问题。

丹尼

e2e.ti.com/.../hall_2D00_speednonstop.mov

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

    尊敬的 Danny:

    你所附的东西似乎都不能正常工作。 您是否正在使用 UNAL_MOTORCONTROL_LAB 4?

    此致、

    亚拉

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

    您好、Yara。

    您连接的任何内容似乎都无法正常工作

    您的意思是视频 附件没有显示?  

    是的、这是通用电机控制实验4  

    通过 flagEnableMotorIdentify 或 flag_bypassMotorId 识别电机  

    电机以快速模式运行、通过 flagEnableSpeedCtrl true/false 进行转速/扭矩模式测试  

    Rs_Ohm 0.179775029
    motorSetVars_M1.Ls_d_H 0.0002438386
    motorSetVars_M1.Ls_q_H 0.0002438386
    motorSetVars_M1.flux_VpHz 0.0628318563
    userParams_M1.motor_ratb Flux_Wb 0.0156063586

    利用上述设置和参数、电机能够完美地旋转。

    但是、当更改为霍尔模式、Ref_Hz 变为0时、SPEED_Hz 将变为负值!  

    丹尼

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

    尊敬的 Danny:

    我必须将您重定向到 C2000团队、他们将能够更好地帮助您解决您的问题。 请给他们几天的回应,因为我们 即将到来的周末,他们不会看到这个帖子,直到下星期。  

    此致、

    亚拉

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

    Danny:

    请参阅以下从 hall.h 摘录的内容、尤其是突出显示的行:

    本质上、使用的霍尔算法不考虑速度参考值为零的情况、并假定非正速度参考值为负。 如果这种行为不理想、我建议(用于测试目的)在 runMotor1Control 中添加一行代码、该代码行的内容与

    if(TRAJ_getIntValue(obj->trajHandle_spd) == 0.0f)

    {

    obj->flagEnableRunAndIdentify == true;

    }

    请注意、这需要您手动设置 flagEnableRunAndIdentify 以重新启用电机。 此外,请注意,我使用轨迹生成器的 TRAJ_getIntValue()函数,而不是直接使用 Ref_Hz。 这很重要-它将允许您的电机转速斜升至0Hz、而不是简单地被设定为0Hz。

    此致、
    杰森·奥斯博尔恩

    本文中的代码用作类似 C 的伪代码。 对您在项目中包含的所有代码进行独立验证 是否编写得当、 是否符合您遵守的标准、这是一种很好的做法。

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

    大家好、Jason、

    是的,非常感谢, 它工作!

    我有另一个问题、请参阅附加的视频、这次我使用快速模式+速度控制  

    当进入 Ref_Hz ->电机斜升和旋转->然后进入 Ref_Hz 到零->我可以看到 speed_int_Hz 和 estInputData.speed_ref_Hz 都降低到零、但 speed_Hz 在斜降之前长时间保持其最大频率(速度)(我的情况是大约6秒)。

    我不知道它是否饱和了 ?  

    丹尼

    e2e.ti.com/.../speed_5F00_hz-declerate.mov

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

    Danny:

    这个问题的答案很简单!

    TRAJ (轨迹/转换发生器)不知道您的电机的实际速度、只知道您的目标速度。 这意味着它也不知道您的电机已经停止加速。 当您将电机转速设置为1000Hz 时、如果您的速度基准已知、则表示您的电机将变为1000Hz。 如果您要绘制经转换的 speedRef 值、您会看到该行为与您的输入完全匹配。

    因此、当我们从1000Hz 减速至0Hz 时、转换速度基准所花费的时间超过170Hz、这似乎是您的电机支持的上限。 如果将 Ref_Hz 设置为170 Hz 而不是1000,则不应看到该延迟。

    此致、
    杰森·奥斯博尔恩

    与此同时、170Hz 似乎非常低。 我会在实验室中再次查看电机的数据表和物理电机参数、从而验证一切是否正常运行。

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

    大家好、Jason、

    现在、我想重点讨论 快速+电流控制 因为 CURRENT CONTROL 相比之下、 速度控制。

    我添加了节流器件以设置 motorVars_M1.IsSet_A 值、因为它是空载测试、最大 IsSet_A 设置为2A。

    程序检测油门释放和  复位 为  flagEnableRunAndIdentify 为0

    如果(objMtr->cmdPoet.potAdc <= objMtr->cmdPoet.adcMin)

    {

      objMtr->IsSet_A = 0.0f;

     objmtr->cmdPoet.flagCmdRun = false;

     

    objMtr->flagEnableRunAndIdentify = objMtr->cmdPoT.flagCmdRun

    强制电机沿一个方向旋转

    如果(objMtr -> cmdPot.potAdc > objMtr->cmdPotadcMin)

    {

      objmtr->cmdPoet.flagCmdRun = true;

      Ref_Hz =0.1f;

    请观看以下视频:  

    1.前3秒、踩下油门、直至1.2A、SPEED_Hz 达到59 Hz、这是正常情况。

    2.然后释放油门, flagEnableRunAndIdentify 复位为0

    3. 4秒,再次应用油门,但此时速度 Hz 变成 数值-10.14Hz,电机不旋转...  

      IS_A = 5A、即 motorVars_M1.fluxCurrent_A 设置  

    我的问题是: 为什么 SPEED_Hz 随机变成负数?  

    e2e.ti.com/.../current-control-negative-speed_5F00_hz-value.mov

    丹尼

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

    Danny:

    在不了解更多项目结构的情况下,我的第一个本能是此问题再次与 Ref_Hz 有关。 基本上,大部分的通用电机控制实验室都是基于这样一个基本假设,即与电机的主用户接口为 Ref_Hz。 为了适当地考虑电机转速和加速度、所有电机观测器、包括软件(FAST)和硬件(霍尔)、都依赖 Ref_Hz 的值。

    我推荐以下一种方法:

    • 将控制变量设置为 Ref_Hz,而不是 IsSet_A
    • 设置一个方程,根据 IsSet_A 自动调整 Ref_Hz

    在这两个选项中、我认为第一个选项最有可能为您提供更好的结果。

    此致、
    杰森·奥斯博尔恩

    作为次要主题、请注意、我建议使用 flagEnableRunAndIdentify 来处理0速度、该解决方案仅在测试期间适用。 我认为在任何实际电机控制中、每次电机需要停止时都会完全禁用系统、这不一定是一个好主意、相反、我建议调整工程的 hall.h 副本以编辑 HALL_RUN 以应对0速情况。