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.

[参考译文] TMS320F28069M:估算器值错误

Guru**** 2524460 points
Other Parts Discussed in Thread: CONTROLSUITE, MOTORWARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1100178/tms320f28069m-wrong-estimator-values

器件型号:TMS320F28069M
主题中讨论的其他器件:controlSUITEMOTORWARE

您好!

我们在定制板上使用无传感器 Instaspin 运动软件来控制 BLDC 电机的速度、但我们无法使其旋转。 一旦我们输入速度命令、电机就会开始振动、几乎不会旋转。 估算器速度(EST_getSpeed_krpm)的读数是无效的、随机抽取正值和负值。  

我们不是从头开始设计软件、而是使用以前 的传感 Instaspin 运动项目、该项目工作得非常完美。 我们所做的更改是禁用 QEP 模块并将  STPOSCONV 函数替换为 FAST 估算器函数。

例如、有传感器项目中的速度计算如下: _IQmpy (STPOSCONV_getVelocityFileded (stObj->posConvHandle)、_IQ (fSpeedKRPMPerPU))

无传感器速度的获得方式如下: _IQmpy (EST_getSpeed_krpm (obj->estHandle)、_IQ (fSpeedKRPMPerPU))

在这两种情况 下、fSpeedKRPMPerPU =((0.001 * 60.0 * gUserParams.iqFullScaleFreq_Hz)/ gUserParams.motor_numPolePairs)

由于控制不成功、我检查了传感工程中的估算器变量、并以正确的速度对其进行了比较。 我发现估算器测量 值不正确(EST_getSpeed_krpm 和 EST_getFm_PU)、但除此之外:

  • EST_getSpeed_krpm 应该是每个单元的、但不是每个单元的。
  • EST_getSpeed_krpm 和 EST_getFm_PU 都给出了一个值不正确、系数为1.4。 我是说、如果正确的值为1.5krpm、它们大约提供1.07kprm。

实际上、我应用了1.4因数校正、估算器值和传感值的结果几乎相同(并且正确)。 这些 是用于检查问题的变量。

gspeedKrpmPU = _IQmpy(EST_getSpeed_krpm(obj->estHandle), _IQ(1.4)); //Corrected
gspeedFmPU = EST_getFm_pu(obj->estHandle);
_iq pu_to_khz_sf = _IQ(gUserParams.iqFullScaleFreq_Hz/1000.0);
_iq khz_to_krpm_sf = _IQ(60.0/gUserParams.motor_numPolePairs);
_iq Mechanical_Freq_kHz = _IQmpy(gspeedFmPU,pu_to_khz_sf);
gspeedKrpmFm = _IQmpy(_IQmpy(Mechanical_Freq_kHz,khz_to_krpm_sf), _IQ(1.4)); //Corrected

那么、我的第一个问题是、  如果文档中显示 EST_getSpeed_kRPM 不是标么值(实际上、它是实际速度)? 我认为这可能是一个代码错误、但这些值是直接从 ROM 中的估算器获取的、我们无法访问它。

我的第二个问题是、为什么在这两种情况下误差都是实际值的0.71倍? 同样、数据是从 ROM 中的函数获取的、因此我不知道会出现什么错误。

所有控制参数都是从有传感器项目中获取的、因此它们经过测试并正确。  

是否有任何关于如何进行此操作的想法? 我们只需将估算器速度乘以1.4、但这不是真正的解决方案、其余的估算器值也可能是错误的。

提前感谢您、

此致

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

    Asier、您好、估算器需要正确的电机参数才能正常工作。在我们研究报告的问题时、您能否确认电机参数设置是否正确?  

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

    您好、Navaneeth、

    是的、电机参数是正确的、因为它们与我们在有传感器项目中使用的参数相同。 这些参数是 根据 Instaspin 实验室进行设置的、并且使用传感软件时工作正常。

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

    Asier、您好、感谢您的确认。 快速跟进-您的软件基于 controlSUITE 或 Motorware 的示例吗? 如果是、哪个示例。

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

    您好、Navaneeth、

    是的、我们的项目基于 Motorware 的 Lab 12b。

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

    您可以尝试运行  lab02b 和 lab05c 来再次识别电机参数和惯性、并使用识别的值运行无传感器 InstaSPIN 运动电机。

    您可以参阅 lab05d 或 lab06a 以运行无传感器 InstaSPIN 电机。 并确保正确设置电机极对。

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

    您好、Yanming、

    一旦我能够识别电机参数、并与定义的值进行比较。 我需要几天的时间、因为我没有硬件。 总之、正如我说过的、电机在使用传感软件时工作正常、因此我想参数会非常精确。

    关于无传感器实现、我按照您的建议使用 lab05d 将传感器移植到无传感器软件、因此我们在这一点上同意。 极数正确(4对)。

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

    很抱歉耽误你的时间。 我最终在定制板中运行了识别、因为我无法访问我们用于识别电机的板。 结果不准确、问题可能与我们在项目估算器值方面遇到的问题有关。 接下来、我共享数据表值、先前的 id 值和当前 id 值。

    这是电机数据表:

    这些是以前的 id 值:

    #define USER_MOTOR_Rs (0.188085973)
    #define USER_MOTOR_LS_d (0.000188112)
    #define USER_MOTOR_LS_q (USER_MOTOR_LS_d)
    #define USER_MOTOR_Rated 磁通(0.054863885)

    这些是当前的 id 值:

    #define USER_MOTOR_Rs (0.0998572633)
    #define USER_MOTOR_LS_d (7.1340458e-09)
    #define USER_MOTOR_LS_q (USER_MOTOR_LS_d)
    #define USER_MOTOR_RATGE_FLUX (0.18651098)

    您可以注意到、电感从未非常精确、但电机的性能良好。 您可以看到、电流 id 值完全错误、我认为原因可能 是对估算器产生干扰(只是一个理论、但在这两种情况下、问题都是 估算器给出的值)。   

    如有需要、请向我询问更多详细信息。

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

    你好、Yanming、对此有什么想法吗?

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

    有人可以提供帮助吗? 我们不需要所有估算器参数、因为控制是通过霍尔传感器实现的、但我们需要至少正确的 IQ、ID、VQ 和 Vd 值才能计算电池和相电流。