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.

[参考译文] TMS320F2800135:无传感器 FOC -锁定转子条件下估算器的行为

Guru**** 2482155 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1443138/tms320f2800135-sensorless-foc---behavior-of-estimator-under-locked-rotor-condition

器件型号:TMS320F2800135

工具与软件:

我已经围绕 F2800135开发了一款无传感器 FOC 控制器。 当电机输出轴在成功启动后保持静止并收到扭矩命令时、转子就位抖动和脉动。 仔细检查后、即使转子保持静止、估算器角度仍继续前进、从而产生脉动转矩。 在电机开始旋转但转子保持静止后、我想要的行为是恒定而稳定的扭矩(即使在命令高扭矩时也是如此)。 因此、估算器角度需要停止前进。 这可能发生在初始启动之后、估算器有可能找到转子角度之后。 我已阅读《InstaSPIN-FOC 用户指南》的第14章"管理启动、低速和换向时的满负载"。 我已尝试将 flagEnableForceAngle 设置为 false、但它似乎没有任何效果。 我遵循了该文档中的所有其他建议。 我尝试了"USER_M1_FREQ_NEARZEROSPEEDLIMIT_Hz"、"USER_M1_FORCE_ANGLE_FREQ_Hz"和"USER_M1_FORCE_ANGLE_ACCEL_HZPS"的变化、能够改变脉动的频率、但未能实现所需的行为。

1) 1)是否有办法在不添加角度位置传感器的情况下实现所需的行为?

2) 2)如果(1)的答案是否、并且已将霍尔传感器添加到硬件中、正确的实现方法是仅当转速降至低于某个下限时、才根据霍尔传感器输出手动设置估算器角度吗?

我附上了一个在5ms 采样的"otorVars_M1.angleFOC_rad"图像、其中输出轴保持静止。

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

    尊敬的 Ken:

    您的意思是、您是否希望电机在轴保持一段时间后仍可以输出所需的扭矩?  

    谢谢!

    嘉兴市

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

    是的、我希望电机在静止(锁定转子)时输出高扭矩、而不提前进行角度估算。 无论我尝试何种操作、估算器角度都在不断前进、导致转子以某个频率脉动、就像滑动一样。  

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

    尊敬的 Ken:

    是的、这无法 通过无传感器方法实现。 您将需要编码器。

    谢谢!

    嘉兴市

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

    尊敬的 Ken:

    或者、将 RS Online 设置为 true 以在轴负载下产生最大启动扭矩。 C 代码可以在运行时间环路中以特定的速度频率禁用 RS 在线功能。 似乎很谨慎地在实现恒定负载速度时释放电流需求。 通常、转子质量正向惯性和驱动质量随后可以将负载保持在更高的能效。  

    此致、

        /* Set slow speed estimator Maximum cold starting torque */
        EST_setFlag_enableRsOnLine(estHandle, true);
        /* Rs ReCalibration flag state Offline still mode
         * runs motor open loop up to set trajectory Hz */
        EST_setFlag_enableRsRecalc(estHandle, false);
     

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

    Genatco、您好、您是否认为由于 Rs 有误差、角度在失速情况下一直在前进?

    谢谢。

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

    尊敬的 Ken:

    没有错误、只启用 RS、因此电机在负载下具有更大的启动扭矩、从而在其他设置中阻止失速。

    转子是否在闭环中空载旋转至轨迹速度?

    看似 RS 算法(校准标志功能)在启动电机之前置位、这会浪费时间、但在存在冷线圈或热线圈条件时是必需的。 这与 RSOnline()函数不同。 如果将启动对齐/强制增量(user_mtr1.h)设置为高电平可能会使转子移动几度、振动至轨迹速度(电机变热)、而不是像预期那样产生360°同步角、那么通用电机控制 SDK 会有点棘手。 定制的 PCB 相电压、相电流传感器、ADC 输入、GPIO (如果是反向的)或负放大器与正放大器输出可能会导致类似的问题。

    #define USER_MOTOR1_FORCE_DELTA_A          (0.032f)          //!A 15% ALC (0.05f)
    #define USER_MOTOR1_ALIGN_DELTA_A          (0.015f)          //!A  5% ALC (0.01f)
    #define USER_MOTOR1_FLUX_CURRENT_A         (0.225f)           //!A 0.225
    #define USER_MOTOR1_ALIGN_CURRENT_A        (0.170f)           //!A 0.170
    #define USER_MOTOR1_STARTUP_CURRENT_A      (0.310f)           //!A 0.3
    #define USER_MOTOR1_TORQUE_CURRENT_A       (0.155f)           //!A 0.25
    #define USER_MOTOR1_OVER_CURRENT_A         (1.5f)             //!A 1.5