MCSDK 扇区判断解析
前言
本文为学习st的电机库MCSDK
笔记,记录判断扇区的逻辑,并结合其他文章进行对比。
关键词:SVPWM
,MCSDK
,FOC
扇区判断
参考文章:《彻底吃透SVPWM如此简单》

参考图1,为了便于判断扇区,将αβ坐标系用三条直线分割,分别是:
通过判断向量在每条直线的上下即可判断扇区。
因此记
对XYZ的大小进行判断,即可得知当前所在扇区
(注:这里除2的原因目前不太清楚;st的αβ坐标系以向下为正)。
扇区 | X | Y | Z |
---|---|---|---|
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 |
对比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
。有
计算得
根据目前可以确定扇区,但是还无法确定各向量的作用时间。
时间计算
先分析st的计算流程:
if (wY < 0){
if (wZ < 0)
{
pHandle->Sector = SECTOR_5;
wTimePhA = (((int32_t)pHandle->PWMperiod) / 4) + ((wY - wZ) / (int32_t)262144);
wTimePhB = wTimePhA + (wZ / 131072);
wTimePhC = wTimePhA - (wY / 131072) ;
}
}
wY<0时,wZ<0时,扇区为5。
然后看的计算,和有关,且随扇区变化。
看结果看不出来,需要正向推导下。
参考图2:

记总导通时间为有
将分解,记为基本矢量的作用时间,为基本矢量的作用时间,有
将在αβ轴的投影记为,有
联立~可得:
解得
在一般情况下,,其中为最大输出相电压,但是无法完全维持在,如图3所示:

为了避免输出电压失真,将限制在
则有:
在ST的库中,,因此
在第一扇区,矢量分布如图4:

由于采用中心对称计数模式,计算单侧时间即可。
可得
代码解读
这时候对比st的代码
pHandle->Sector = SECTOR_1;
wTimePhA = (((int32_t)pHandle->PWMperiod) / 4)+ ((wX - wZ) / (int32_t)262144);
wTimePhB = wTimePhA + (wZ / 131072);
wTimePhC = wTimePhB - (wX / 131072);
显然
观察:
其中为int16_t
,即q15
格式。在前面有
显然,为浮点型。因此这里除以实际上是将q15
转换为float
。
因此st计算公式可表示为
可以看到,和我们推算出的公式符号不一致。
参考st的定时器配置,发现st采用的向下中心计数模式,前面参考的图为向上计数,因此重新推算公式如下:
和代码中吻合。
其他扇区按照相同方法推算,得出每个扇区对应的计算公式,实际使用时,根据扇区选择对应的计算公式即可。
过调制
前面为了矢量不失真,将限制了在即
将称之为线性区,在线性区内,线性相关;
将称之为过调制区,在过调制区内,需要对进行缩放,以保证合成矢量不超出最大幅值。过调制方法这里不再探讨,可以参考相关文章:
《STM32 MC SDK Overmodulation (new in V5.Y) - stm32mcu (stmicroelectronics.cn)》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具