前言
本文为学习st的电机库MCSDK
笔记,记录判断扇区的逻辑,并结合其他文章进行对比。
关键词:SVPWM
,MCSDK
,FOC
扇区判断
参考文章:《彻底吃透SVPWM如此简单》
![](https://img-blog.csdnimg.cn/img_convert/2c6e10b08fd31866c1875d6a4c6d8c50.png)
参考图1,为了便于判断扇区,将αβ坐标系用三条直线分割,分别是:
β = 0 β = t a n ( π 3 ) ∗ α = 3 α β = − t a n ( π 3 ) ∗ α = − 3 α β = 0\\ β = tan(\frac{\pi}{3})*α =\sqrt{3}α\\ β = -tan(\frac{\pi}{3})*α =-\sqrt{3}α β=0β=tan(3π)∗α=3αβ=−tan(3π)∗α=−3α
通过判断向量在每条直线的上下即可判断扇区。
因此记
X = − β Y = 3 α − β 2 Z = − 3 α − β 2 X = -β\\ Y = \frac{\sqrt{3}α - β}{2}\\ Z = \frac{-\sqrt{3}α - β}{2} X=−βY=23α−βZ=2−3α−β
对XYZ的大小进行判断,即可得知当前所在扇区
(注:这里除2的原因目前不太清楚;st的αβ坐标系以向下为正)。
扇区 | X | Y | Z |
---|---|---|---|
1 | > 0 >0 >0 | > 0 >0 >0 | < 0 <0 <0 |
2 | > 0 >0 >0 | > 0 >0 >0 | > 0 >0 >0 |
3 | > 0 >0 >0 | < 0 <0 <0 | > 0 >0 >0 |
4 | < 0 <0 <0 | < 0 <0 <0 | > 0 >0 >0 |
5 | < 0 <0 <0 | < 0 <0 <0 | < 0 <0 <0 |
6 | < 0 <0 <0 | > 0 >0 >0 | < 0 <0 <0 |
对比ST代码:
wUAlpha = Valfa_beta.alpha * (int32_t)pHandle->hT_Sqrt3;
wUBeta = -(Valfa_beta.beta * ((int32_t)pHandle->PWMperiod)) * 2;
wX = wUBeta;
wY = (wUBeta + wUAlpha) / 2;
wZ = (wUBeta - wUAlpha) / 2;
/* Sector calculation from wX, wY, wZ */
if (wY < 0){
if (wZ < 0){
}
else /* wZ >= 0 */
if (wX <= 0){
}
else /* wX > 0 */
{
}
}
else /* wY > 0 */
{
if (wZ >= 0)
{
}
else /* wZ < 0 */
if ( wX <= 0 ){
}
else /* wX > 0 */
{
}
}
首先,根据传入的αβ值生成中间值wUAlpha,wUBeta
。有
w U A l p h a = 2 3 V α T s w U B e t a = − 2 V β T s wUAlpha = 2\sqrt{3}V_αT_s\\ wUBeta = -2V_βT_s wUAlpha=23VαTswUBeta=−2VβTs
计算得
w X = − 2 V β T s w Y = ( − V β + 3 V α ) T s w Z = ( − V β − 3 V α ) T s wX = -2V_βT_s\\ wY = (-V_β + \sqrt{3}V_α)T_s\\ wZ = (-V_β - \sqrt{3}V_α)T_s wX=−2VβTswY=(−Vβ+3Vα)TswZ=(−Vβ−3Vα)Ts
根据 w X , w Y , w Z wX,wY,wZ wX,wY,wZ目前可以确定扇区,但是还无法确定各向量的作用时间。
时间计算
先分析st的计算流程:
if (wY < 0){
if (wZ < 0)
{
pHandle->Sector = SECTOR_5;
wTimePhA = (((int32_t)pHandle->PWMperiod) /