请问这个算法是出自哪里,可以产生SVPWM,但搞不懂原理
void SVMGenerator(void){
int UD,VD,WD;
int Dutymax,Dutymin,Dutyplus;
UnClarke(iUalpha,iUbeta,&UD,&VD,&WD);
if(UD>=VD)
{
Dutymax=UD;
Dutymin=VD;
}
else
{
Dutymax=VD;
Dutymin=UD;
}
Dutymax=Dutymax>=WD?Dutymax:WD;
Dutymin=Dutymin<=WD?Dutymin:WD; //求出三相矢量量最大和最小值
Dutyplus=PWMMaxPulse-Dutymax-Dutymin;
Dutyplus>>=1;
iUDuty=UD+Dutyplus;
iVDuty=VD+Dutyplus;
iWDuty=WD+Dutyplus;
}
有没有大神用过这种算法 同求该算法的原理,找了很久都没有找到。 楼上也用过这个留个联系方式交流可好 UnClarke(iUalpha,iUbeta,&UD,&VD,&WD);
这个函数输入是什么,输出又是什么? xiaoxiao201005 发表于 2016-12-12 14:54
UnClarke(iUalpha,iUbeta,&UD,&VD,&WD);
这个函数输入是什么,输出又是什么?
UnClarke应该是逆clarke变换吧,两相静止到三相静止 变换函数而已,刚开始也很晕,pid好长一个环 本帖最后由 as27185 于 2016-12-12 17:18 编辑
用matlab把这段代码写出来了,描出图形确实是马鞍形,这段代码真牛,svm的时间大大缩短呀
真会玩,我都不会用 as27185 发表于 2016-12-12 16:48
UnClarke应该是逆clarke变换吧,两相静止到三相静止
这个函数与普通的逆clarke变换不一样吧,它是电流的两相静止 xiaoxiao201005 发表于 2016-12-12 18:23
这个函数与普通的逆clarke变换不一样吧,它是电流的两相静止
没明白你的意思,iUalpha,iUbeta应该是函数输入,执行函数后 UD VD WD 的值就会被改变,就是三相静止坐标系的电压 奇立电源 发表于 2016-12-12 10:09
楼上也用过这个留个联系方式交流可好
516988958 我的扣扣 as27185 发表于 2016-12-13 08:48
没明白你的意思,iUalpha,iUbeta应该是函数输入,执行函数后 UD VD WD 的值就会被改变,就是三相静止坐 ...
如果是那样的话,那个函数里就不仅仅只有逆clark变换了,应该还有其他的变换。或者这个函数通过什么方式直接由alfa beta电流计算得到电压 iUalpha,iUbeta是两个输入,用软件模拟的 xiaoxiao201005 发表于 2016-12-13 11:10
如果是那样的话,那个函数里就不仅仅只有逆clark变换了,应该还有其他的变换。或者这个函数通过什么方式 ...
我觉得是不是理解的有问题,从命名的原则上看,iUalfa 是经过电流环之后计算出来的Ualfa的值,并不是你理解的电流的值。 https://bbs.simol.cn/thread-148553-1-1.html 楼主看一下这个帖子 秋天不再 发表于 2016-12-14 08:51
我觉得是不是理解的有问题,从命名的原则上看,iUalfa 是经过电流环之后计算出来的Ualfa的值,并不是你理 ...
这样说就明白了,它的命名标注有问题,会造成误导,电流环之后命名就不该是电流alfa和beta了。 那个帖子代码原理是一样的,但还是没有推理 楼主从1.4开始看,试试 这个是经过变形后,结果与SVPWM一样的,但是经我做产品实际发现,这种方法做出来的电磁噪声比用正规SVPWM公式做出的要大多呀! 这也叫算法?没考虑的东西太多了,只能凑合用
页:
[1]