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.

[参考译文] TMS320F280025:为什么 FAST 在某些特定工作点提供了错误的估算速度?

Guru**** 2540720 points
Other Parts Discussed in Thread: TMS320F280025

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1340701/tms320f280025-why-fast-give-wrong-estimated-speed-at-some-specific-operating-points

器件型号:TMS320F280025

尊敬的支持团队:

我拥有自己的带有 TMS320F280025的 PCB、可使用无传感器磁场定向控制和 FAST 估算器来运行电机(PMSM)。 该软件主要来自通用电机控制实验室。

标称电压为230VAC 50Hz 整流。

在这样的电压下、我能够满足所有需要的工作点(关于速度和功率)。 最大速度约为3300RPM (2极对)

要达到最大速度、必须进行场强减弱、但场强减弱角度保持低于最大角度 I set (-45°)。

在较低的输入电压(180Vac 整流)下、当我尝试获得高速(大约2800RPM)时、估算速度突然错了:估算速度为2517rpm、而使用速度计进行的测量大约为3264rpm。

其他信号也会进行校正(电流、角度...)、只是估算出的速度不正确。

我怀疑这与弱磁角度有关、在低输入电压下弱磁角度会变高。 在这个速度和磁场减弱时、BEMF 可能高于输入直流电压。

如需相关信息、使用 simple_lib。

相关信息是、如果 user_motor1.h 中的电机电感乘以2得到正常值、则该特定问题不适用、但在该参数中、我在高扭矩情况下存在其他问题(角度估算错误)。

模拟信号已经过多次检查、这就是我需要您帮助的原因。

此致。

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

    您好!

    新信息:

    我已使用 EST_sch过 Flux_Wb 来检查 FAST 计算的实时磁通。

    当速度正确时、以 Wb 为单位的磁通为接近0.227、此值接近于 user_motor1.h 中的值(考虑 FLUX_VpHz Flux_Wb * MATH_TWO_PI)。 值会振荡一个位。

    当速度不正确时、该值约为0.19、该值完全固定、不再更新...

    此致。

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

    我只是尝试使用 FULL_LIB 而不是 simple_LIB、问题似乎消失了。 我当时认为 simple_LIB 仅使用最小函数、但我当时认为不同库中的不同函数完全相似(相同代码)。 似乎我错了。

    您能确认吗?  

    我想尽可能使用更小的库(代码大小)、因此我最好使用 simple_lib。 根据这些库的不同、你能帮我解决 simple_lib 吗?

    此致。

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

    尊敬的 Manu:

    是的、请使用"fast_FULL_lib"、这是已通过通用电机实验示例验证的库。

    谢谢。

    嘉兴市

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

    您好!

    我不确定如果我使用 FAST_FULL_lib、最终代码大小会适合闪存大小。

    simple_lib 还用于 tidm_02010_dmpfc、这非常相似。

    这个问题可能来自磁通估算值、不允许将此值降到使用 simple_lib 定义的值以下。

    我看一看这些值、因为其中似乎定义了允许的最小和最大磁通:

    // *******************************************************************************************************
    // BELOW IS RESERVED
    float32_t freqNearZeroSpeedLimit_Hz; //!< 1. Defines the low speed limit for frequency estimation, Hz
    float32_t directionPole_rps; //!< 2. Defines the pole location for the direction filter, rad/sec
    float32_t directionPole_2_rps; //!< 3. Defines the second pole for the direction filter, rad/sec
    float32_t fluxPole_rps; //!< 4. Defines the pole location for the flux estimation, rad/sec
    float32_t RoverLPole_rps; //!< 5. Defines the pole location for the R/L estimation, rad/sec
    float32_t estKappa; //!< 6. Defines the convergence factor for the estimator
    
    float32_t flux_Wb; //!< 7. Defines the default flux value, Wb
    float32_t flux_min_Wb; //!< 8. Defines the minimum flux value allowed, Wb
    float32_t flux_max_Wb; //!< 9. Defines the maximum flux value allowed, Wb
    
    float32_t oneOverFlux_min_sf; //!< 10. Defines the scale factor for the minimum 1/flux value allowed
    float32_t oneOverFlux_max_sf; //!< 11. Defines the scale factor for the maximum 1/flux value allowed
    float32_t Dir_fe_min_Hz; //!< 12. Defines the minimum electrical frequency to still use direction estimation, V/Hz
    float32_t Dir_fe_max_Hz; //!< 13. Defines the maximum electrical frequency to still use direction estimation, V/Hz
    
    // BELOW can be added user own varaibles
    float32_t maxFrequency_Hz; //!< Defines the maximum frequency value,
    //!< Hz
    } USER_Params;

    full_lib 时的结果:

    使用 simple_lib 的结果:

    如您所见、从 directionPole_2_rps 开始的值发生了移位、这使得值变得错误。

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

    尊敬的 Manu:

    jiaan zhao 说:
    其他信号是校正的(电流、角度...)、只有估计的速度是错误的。

    您在估算速度时读出了哪个变量? 您能否在出现问题时分享表达式的屏幕截图?

    如果我使用 fast_full_lib,我不确定最终代码大小是否适合闪存大小。

    您可以在"View"选项卡下检查存储器分配、并与 FAST_SIMPLE_LIB 占用的空间进行比较。

    我看一下这些值,因为它似乎是定义允许的最小和最大磁通的地方:

    我注意到对于 FAST_FULL_LIB、它还包含这些限值定义。

    谢谢。

    嘉兴市

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

    您好!

    您读了哪个变量来表示估计的速度? 出现问题时、您能否分享表达式的屏幕截图?

    我使用这一个:  

    obj->speedEST_Hz = EST_getFm_lp_Hz(obj->estHandle);

    我也尝试 EST_schlab Fe_Hz 和 EST_schlab Fm_Hz (以查看它是否来自低通滤波器)、但问题是一样的。  请参阅下面的一些比较屏幕截图:

    1500转/分时(无问题):

    您可以看到、SPEED = speedRef (一些速度振荡、但这没问题)=外部速度测量系统测量的速度。

    simple_lib 与 full_lib 之间的磁通类似。

    在3100RPM 时=>在低输入电压下要达到目标速度、需要使用磁通减弱:

    FULL_LIB 没有问题:

    -speedRef=使用外部传感器测量速度。

    -由于磁场减弱、磁通量 持续更新、并且值随时间稍有变化、因此在1500RPM 时测试的磁通量减小。

    simple_LIB 问题:

    -实际速度高于设定点 ,但估计速度较低,因此所有调节器都推动提高速度...

    磁通量卡在0.209,但实际值应更低  

    您可以检查"View (视图)"选项卡下的内存分配,并将其与 FAST_SIMPLE_LIB 占用的空间进行比较。

    是的、我们已经确认了差异、节省了大约8%的 FLASHBANK0_CODE、考虑到 simple_LIB 的使用将有助于 使用闪存大小为一半的不同器件型号(出于成本原因、这对我们非常重要)。

    我注意到对于 FAST_FULL_LIB,它还包含这些限制定义。

    是的、它也包含这些限制、但如果我们考虑数据的变化、您可以看到、该限制没有任何更多的相同值。

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

    尊敬的 Manu:

    感谢您的详细解释。 我认为您的分析是合理的。 由于 FAST 库不是开源的、因此在此方面进行任何改进可能并不容易。 您是否可以继续使用 FAST_FULL_LIB?

    谢谢。

    嘉兴市

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

    您好!

    不确定可以使用 FAST_FULL_LIB、说起来很困难、因为此时、函数 SW 不是100%写入。

    如果问题是由移位导致的、或许在结构中添加一些空数据会有所帮助、但如果不知道库是如何读取/写入数据、我就无法确定、我还担心这会给我的电路板带来一些灾难性的结果(损坏)。

    我也可以尝试 PMSM_LIB、但在接下来的几天内我没有时间这样做。

    你是否有开发库的团队的一些反馈意见?

    此致。

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

    尊敬的 Manu:

    我咨询了开发库的团队、他们建议使用 FAST_FULL_LIB 来开发定制项目。

    谢谢。

    嘉兴市