#include "IQmathLib.h" // Includeheader for IQmath library
// Don't forget to set a proper GLOBAL_Q in"IQmathLib.h" file
#include "dmctype.h"
#include "svgen_dq.h"
void svgendq_calc(SVGENDQ *v)
{
_iq Va,Vb,Vc,t1,t2;
Uint32 Sector = 0; // Sector is treated asQ0 - independently with global Q
// Inverse clarke transformation //赋值
Va = v->Ubeta;
Vb = _IQmpy(_IQ(-0.5),v->Ubeta) +_IQmpy(_IQ(0.8660254),v->Ualpha); // sqrt(3)/2
Vc = _IQmpy(_IQ(-0.5),v->Ubeta) -_IQmpy(_IQ(0.8660254),v->Ualpha); // sqrt(3)/2
// 60 degree Sector determination//确定扇区
if (Va>_IQ(0))
Sector = 1;
if (Vb>_IQ(0))
Sector = Sector + 2;
这段代码展示了如何使用逆克拉克变换计算SVPWM(Space Vector Pulse Width Modulation)的各个相位电压,并根据扇区确定对应相位的占空比。通过IQmath库处理浮点数,将Ualpha和Ubeta转换为X、Y、Z坐标,然后根据不同的扇区计算Ta、Tb和Tc的值,最终将无符号GLOBAL_Q格式的占空比转换为带符号的GLOBAL_Q格式。
订阅专栏 解锁全文
5万+

被折叠的 条评论
为什么被折叠?



