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.

TI的SMO滑模观测器算法为什么用电压重构后的Valpha和Vbeta,而不直接用反PARK变换后的Valpha和Vbeta?



请问这两个有什么不同?

  • 这里的电压变化后得到的Valpha Vbeta, 一个是逆变器输出的电压,一个是电机的反电动势。

    而滑模算法需要的是电机的反电动势,所以要靠电压进行重构。

    Eric

  • Microchip公司参考例程直接用反PARK变换后的Valpha和Vbeta做的滑模算法,TI这个电压重构是不是有点多余?

  • 我的理解是: 由于使用当前采样到电压电流真实值计算的角度,更贴近当前计算需要使用的电机电角度,而有些设计为了节省电压采样通道,也可以采用反PARK变换后得到的Valpha和Vbeta, 但是反变换后得到的值理论上近似等于下个PWM周期的采样值,实际上跟采样值由偏差比如MOSFET压降等引起的电压损失.电流和电压不是同一个周期得到的,这样计算得到的角度应该也是能用的,但是TI的设计更符合理论上的计算.

  • 对, 区别就是使用本次的电压,还是下一次的电压,感觉应该是使用新计算出来的可能更准确;
  •  我测试的结果:两者计算的结果是相位相同,但是幅值相差1.5倍。

    下图分别是

  • TI 的Clark变换的定义,已经在Clark变换时,乘以了2/3.,这样做的好处是保证PWM矢量调制方便.
    具体如下:
    实际的clark变换 应该是
    Ialpha = ia - sin30 * (ib+ic) = ia - 0.5*(0-ia) = 1.5*ia
    Ibeta = cos30*ib - cos30 ic = cos30 * (ib-ic) = sqrt(3)/2 * (ib+ia + ib) = sqrt(3)/2 * ia + sqrt(3)*ib

    参考下面的定义,就可以知道
    v.Alpha = (1.5*ia) * 2/3 = ia.
    v.Beta = {sqrt(3)/2 * ia + sqrt(3)*ib} * 2/3 = (1/sqrt(3)) * ia + (2/sqrt(3))*ib.

    C2000代码中的Clark变换定义
    #define CLARKE_MACRO(v) \
    \
    v.Alpha = v.As; \
    v.Beta = _IQmpy((v.As +( v.Bs<<1 )),_IQ(0.57735026918963));

    // 1/sqrt(3) = 0.57735026918963