TI论坛
直播中

卞轮辉

9年用户 1170经验值
私信 关注
[问答]

SVM输入的值怎么计算?

在看InstaSPIN-FOC的程序中,在Lab10a的user.h文件中,有
//! brief Set USER_MAX_VS_MAG = 0.5 for a pure sinewave with a peak at SQRT(3)/2 = 86.6% duty cycle.
//! brief Set USER_MAX_VS_MAG = 1/SQRT(3) = 0.5774 for a pure sinewave with a peak at 100% duty cycle.
//! brief Set USER_MAX_VS_MAG = 2/3 = 0.6666 to create a trapezoidal voltage waveform.
在InstaSPIN-FOC的用户指南中,有

所以有点疑惑:
1、为什么二者的值正好差2倍?
2、如果以表格为例,以Udc/sqrt(3)作为基准值,
      当USER_MAX_VS_MAG = 1.0的时候,正好是六边形的内切圆半径,
      当USER_MAX_VS_MAG = 2/sqrt(3)的时候,正好是六边形的外接圆半径,
      当USER_MAX_VS_MAG = 4/3的时候,不明白这个值怎么计算出来的?
有知道的敬请解惑,谢谢!

回帖(4)

冯敬宇

2020-5-29 17:07:17
1. 以前版本的motorware这里的VS都是1.0, 1.15, 1.333, 新的版本把这个值除以2了,用于内部运算而已。实际不变。
2. 4/3 印象中是到梯形波的情况了。
ERIC
                                                                         - ERIC
举报

卞轮辉

2020-5-29 17:15:50
引用: guigui_7044 发表于 2020-5-29 20:44
1. 以前版本的motorware这里的VS都是1.0, 1.15, 1.333, 新的版本把这个值除以2了,用于内部运算而已。实际不变。
2. 4/3 印象中是到梯形波的情况了。
ERIC

1、新版本中关于maxModulation的值,最大应该是2/3,怎么在svgen.h里面有下面这个函数
static inline void SVGEN_setMaxModulation(SVGEN_Handle handle,const _iq maxModulation)
[
SVGEN_Obj *obj = (SVGEN_Obj *)handle;
_iq maxMod = maxModulation;
if(maxMod > SVGEN_4_OVER_3)
maxMod = SVGEN_4_OVER_3;
else if(maxMod < _IQ(0.0))
maxMod = _IQ(0.0);
obj->maxModulation = maxMod;
return;

这里怎么设置的最大值为4/3?
2、新版本中值除以2,用于内部运算,电流的PU值没有除以2,那么电流的极限圆半径不是减小了?
举报

杨万富

2020-5-29 17:35:41
引用: dahairenlyy 发表于 2020-5-29 20:52
1、新版本中关于maxModulation的值,最大应该是2/3,怎么在svgen.h里面有下面这个函数
static inline void SVGEN_setMaxModulation(SVGEN_Handle handle,const _iq maxModulation)
[

举报

卞轮辉

2020-5-29 17:45:32
引用: 胡扯123 发表于 2020-5-29 21:12
<blockquote class="quote"/>

没有,你也是在做这方面东西吗?我的QQ:516988958,可以交流交流。
举报

更多回帖

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