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.

[参考译文] TMS320F28069:InstaSPIN:用户参数更新

Guru**** 2581465 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/892832/tms320f28069-instaspin-user-parameters-update

器件型号:TMS320F28069

您好!

据我所知、InstaSPIN 使用的用户参数是根据 user.h 中的定义并使用以下函数定义的:

  • CTRL_setParams

您能否确认整个 InstaSPIN 系统仅依赖于使用函数 CTRL_setParams 的参数集? 换句话说、InstaSPIN 系统是否有任何部分直接依赖 user.h 静态定义而不使用使用使用 CTRL_setParams 函数设置的动态参数?

提前感谢您。

此致

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

    是的,您只需调用此 CTRL_setParams()函数即可从 use.h 中设置 InstaSPIN 参数,该函数将调用其他相关函数。

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

    您好!

    感谢您的回答。 这就是我的想法。

    还有一个问题:如果我很理解、一旦 FOC 控制器被禁用、我们就可以使用 CTRL_setParams 更新 FOC 控制器参数、对吧?

    换言之、以下过程是否正确?

    1. FOC 控制器处于"在线"状态。
    2. 接收到新参数。 我们使用函数 CTRL_setFlag_enableCtrl (m_ctrlHandle、false)禁用 FOC 控制器。
    3. 我们等待、直到 FOC 控制器处于"空闲"状态。
    4. 我们使用函数 CTRL_setParams 设置 FOC 控制器的新参数。
    5. 我们启用 FOC 控制器。

      我在这里担心的是、在我的情况下、在开发过程中、我们希望优化一些参数、而无需重新编译工程并刷写目标。

      此致。

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

      您参考了哪个示例实验室? 您是否仅使用不带 FAST 估算器的 InstaSPIN 控制器?

      是的,可以使用 CTRL_setParams()使用新参数设置控制器和估算器(这些新参数必须在 gUserParams 对象中设置),并且必须在再次调用 CTRL_setFlag_enableCtrl (ctrlHandle,false)来停止电机 。

      调用 CTRL_setParams()后,包括控制器状态在内的所有控制器参数都将被重置。 您可以使用这些新参数来控制电机、而无需重新编程代码、只需根据需要进行"在线"即可。

       如果不使用估算器或电机参数(Rs、Ls、磁通、极对)未更改、则无需调用 CTRL_setParams()来重置所有参数。  如果您只想优化控制器、如调整 PI 控制器、只需直接更改 PI 控制器的增益。

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

      这是基于 Lab12b 的定制固件:因此、我只使用 InstaSPIN 控制器、而不使用 FAST 估算器。

      感谢您的明确回答、确认了我的想法。

      我们当然需要微调 LS 等电机参数。

      另一个问题:

      • 如果我们想修改以下参数、是否有必要禁用 FOC 控制器和速度控制器? 或者、我们可以"在线"修改它们吗?
        • USER_SYSTEM_INERTIA
        • USER_SYSTEM_FRICUSion

      此致、
      Johann

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

       由于 LS 已更改、因此必须调用 CTRL_setParams()函数来重新设置控制器和估算器。

        如果修改了 USER_SYSTEM_INER惯性 和 USER_SYSTEM_FRICTION、则需要调用以下两个函数来重新设置 SpinTAC。 当前示例 lab12b 不支持在线修改这些参数。 您必须重新编写这两个函数、方法是将这些常量替换为相关变量、然后通过将新参数设置为相关变量来在线调用这两个函数。 但我认为您不需要这样做、因为电机的这两个参数应该是系统中的固定值。

      ST_setupVelCtl (stHandle);
      ST_setupPosConv (stHandle);

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

      感谢您的回答。

      此致、
      Johann

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

      我发现以下函数直接使用 user.h 中的定义:

      内联_IQ CTRL_angleDelayComp (CTRL_Handle handle、const _IQ angle_pu)   (ctrlQEP.h 中的第1846行)

      USER_IQ_FULL_SCALE_FREQ_Hz 定义 用于计算 angleDelta_pu。 但是、这个定义与电机相关、在我的情况下、电机应该被定义在一个将驻留在 RAM 中的"用户参数"结构中。

      我能否安全地将 USER_IQ_FULL_SCALE_FREQ_Hz 设置为适合多个不同电机的值?

      换言之、假设我只为两个不同的电机使用一个 FW:

      • 电机1频率= 400Hz
      • 电机2频率= 600Hz

      是否可以将 USER_IQ_FULL_SCALE_FREQ_Hz 设置为电机2频率(600Hz)? 或者、这是否会导致电机1出现问题?

      此致、
      Johann

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

      是的、您可以将所有 USER_IQ_FULL_SCALE_FREQ_Hz 参数替换为所有函数中的变量。

      实际上、 如果 USER_IQ_FULL_SCALE_FREQ_Hz 参数的值没有如上所述的大误差、则无需更改不同电机的 USER_IQ_FULL_SCALE_FREQ_Hz 参数值、因为速度分辨率足够高。