STM32
直播中

1123127317

8年用户 1048经验值
擅长:制造/封装 接口/总线/驱动
私信 关注
[问答]

STO_PLL_CalcAvrgMecSpeed01Hz函数中以下代码的理论依据是什么?

各位大神,STO_PLL_CalcAvrgMecSpeed01Hz函数中以下代码的理论依据是什么?资料中哪儿可以找到?
/*Bemf Consistency Check algorithm*/  if ( pHandle->EnableDualCheck == true ) /*do algorithm if it's enabled*/
  {
    wAux = ( wAux < 0 ? ( -wAux ) : ( wAux ) ); /* wAux abs value   */
    if ( wAux < ( int32_t )( pHandle->MaxAppPositiveMecSpeed01Hz ) )
    {
      /*Computation of Observed back-emf*/
      wObsBemf = ( int32_t )( pHandle->hBemf_alfa_est );
      wObsBemfSq = wObsBemf * wObsBemf;
      wObsBemf = ( int32_t )( pHandle->hBemf_beta_est );
      wObsBemfSq += wObsBemf * wObsBemf;

      /*Computation of Estimated back-emf*/
      wEstBemf = ( wAux * 32767 ) / ( int16_t )( pHandle->_Super.hMaxReliableMecSpeed01Hz );
      wEstBemfSq = ( wEstBemf * ( int32_t )( pHandle->BemfConsistencyGain ) ) / 64;
      wEstBemfSq *= wEstBemf;

      /*Computation of threshold*/
      wEstBemfSqLo = wEstBemfSq -
                     ( wEstBemfSq / 64 ) * ( int32_t )( pHandle->BemfConsistencyCheck );

      /*Check*/
      if ( wObsBemfSq > wEstBemfSqLo )
      {
        bIs_Bemf_Consistent = true;
      }
    }

    pHandle->IsBemfConsistent = bIs_Bemf_Consistent;
    pHandle->Obs_Bemf_Level = wObsBemfSq;
    pHandle->Est_Bemf_Level = wEstBemfSq;
  }
  else
  {
    bIs_Bemf_Consistent = true;
  }


回帖(1)

王刚

2024-5-9 16:54:07
STO_PLL_CalcAvrgMecSpeed01Hz 函数中的这段代码是一个 Bemf(反电动势)一致性检查算法。这个算法的目的是在某些条件下检查 wAux 变量的值是否在预期范围内。下面是代码的逐行解释:

1. `/*Bemf Consistency Check algorithm*/`:这是一行注释,说明了接下来的代码是用于 Bemf 一致性检查的算法。

2. `if ( pHandle->EnableDualCheck == true )`:这行代码检查 pHandle 结构体中的 EnableDualCheck 成员是否为 true。如果是 true,那么将执行算法。

3. `{`:开始执行算法的代码块。

4. `wAux = ( wAux < 0 ? ( -wAux ) : ( wAux ) );`:这行代码计算 wAux 变量的绝对值。如果 wAux 小于 0,那么取其相反数(-wAux),否则保持原值。

5. `if ( wAux < ( int32_t )( pHandle->MaxAppPositiveMecSpeed01Hz ) )`:这行代码检查 wAux 的绝对值是否小于 pHandle 结构体中的 MaxAppPositiveMecSpeed01Hz 成员。如果小于,那么将执行以下代码:

关于这段代码的理论依据,它可能是基于以下原则:

- Bemf 一致性检查:在某些应用中,需要确保电机的反电动势(Bemf)与预期值保持一致。这可以通过检查与反电动势相关的变量(如 wAux)来实现。

- 绝对值处理:在比较之前,先取 wAux 的绝对值,以确保不考虑其正负号。

- 上限检查:通过比较 wAux 的绝对值与一个预设的最大值(MaxAppPositiveMecSpeed01Hz),可以确保 wAux 在一个合理的范围内。

要找到相关资料,您可以尝试搜索以下关键词:

- Bemf 一致性检查
- 反电动势
- 电机控制算法

这些关键词可能会帮助您找到关于这个算法的更多信息和理论依据。此外,您还可以查阅与您使用的特定库或框架相关的文档,以获取更多详细信息。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分