This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 关于controlSUITE中使用的SVGEN的问题。

Guru**** 2540720 points
Other Parts Discussed in Thread: CONTROLSUITE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/616695/question-about-svgen-used-in-controlsuite

主题:controlSUITE中讨论的其他部件

你(们)好

我正在使用 TMDSHVMTRPFCKIT 和HVMotorCtortc+pfcKit_v 2.1 /HVPM_Sensored_Servo项目。

'HVPM_Sensored_Serve'项目基本上包括数学块/Vv 4.1

版本3和版本4中使用的SVGEN代码不同。

版本4 SVGEN代码非常简单。

但是,与版本3不同的是 ,下面没有关于代码的详细说明。

我有3个问题。

1. 版本4的SVGENDQ_MACRO是否有理论文档?

如果没有,您能否解释代码?

2. 代码不同,但版本3和4的输出Ta,TB和TC值​​相同?

3.在版本3中,变量由最大相位电压vdc/sqrt(3)标准化

因此,实际Ubeta值是Ubeta * vdc/sqrt(3),对吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.它是一种不同类型的PWM生成,不是传统的基于扇区的方法,它为所有3相添加共模电压。 SVPWM的输出类似于基于载波的PWM,其共模信号添加到三相PWM逆变器的所有三个调制信号中。 共模信号由供电频率的第三个谐波组成。 线路输出将不包含共模信号,因为相同的共模信号会添加到所有三个相位。
    2,TA/TB/TC类似于3相PWM占空比。
    3.对。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢,Yanming。
    但是,我不知道具体情况。

    1.您说的是svgen_comm.h?
    在mathblock v4中,存在svgen.h和sgven_comm.h。
    我想详细了解如何使用上述代码确定扇区和PWM占空比Ta,TB,TC。

    2.您的意思是SEVGENDQ_MACRO (版本4)和SVGEN_MACRO (版本3)输出Ta,TB,TC相似但不同?

    %%%% controlSUITE数学块版本3或更高版本%%%%%%%%%%%

    #define SVGEN_MACRO (v)\
    \
    扇区= 0;\
    temp_SV1=_IQdiv2(v.Ubeta);/*除以2*/\
    temp_SV2=_IQpumpy (_IQ (0.866.0254万),v.Ualpha);/* 0.866.0254万 = sqrt (3)/2*/\
    \
    /*逆向Clarke转换*/\
    VA = v.Ubeta;\
    vb =-temp_SV1 + temp_SV2;\
    vc =-temp_SV1 - temp_SV2;\
    /* 60度扇区测定*/\
    如果(VA>_IQ (0)扇区= 1;\
    如果(Vb>_IQ (0)扇区=扇区+2;\
    如果(VC>_IQ (0)扇区= Sector+4;\
    /* X,Y,Z (VA,Vb,VC)计算X = VA,Y = Vb,Z = VC */\
    VA = v.Ubeta;\
    vb = temp_SV1 + temp_SV2;\
    VC = temp_SV1 - temp_SV2;\
    /*扇区0:这是(Ualpha,Ubeta)=(0,0)*/\的特殊情况
    \
    交换机(扇区)\
    {\
    案例0:\
    V.Ta =_IQ (0.5);\
    V.TB =_IQ (0.5);\
    V.TC =_IQ (0.5);\
    中断;\
    案例1:/*扇区1:T1=Z和T2=Y (abc -->Tb,Ta,Ta,Tc)*/\
    T1 = VC;\
    T2 = Vb;\
    V.TB=_IQdiv2 ((_IQ (1)-T1-T2);\
    V.Ta = v.TB+T1;/* taon = tbon+T1 */\
    V.TC = v.Ta+T2;/* TCON = taon + T2 */\
    中断;\
    案例2:/*扇区2:T1=Y和T2=-X (abc --> Ta,TC,TB)*/\
    T1 = Vb;\
    T2 =-VA;\
    V.Ta=_IQdiv2 ((_IQ (1)-T1-T2);\
    V.TC = v.Ta+T1;/* TCON = taon + T1 */\
    V.TB = v.TC+T2;/* tbon = TCON+T2 */\
    中断;\
    案例3:/*扇区3:T1=-Z和T2=X (abc --> Ta, Tb, Tc)*/\
    t1 =-vc;\
    T2 = VA;\
    V.Ta=_IQdiv2 ((_IQ (1)-T1-T2);\
    V.TB = v.Ta+T1;/* tbon = taon+T1 */\
    V.TC = v.TB+T2;/* TCON = tbon+T2 */\
    中断;\
    案例4:/*扇区4:T1=-X和T2=Z (abc --> tc,tb,ta)*/\
    T1 =-VA;\
    T2 = VC;\
    V.TC=_IQdiv2 ((_IQ (1)-T1-T2);\
    V.TB = v.TC+T1;/* tbon = TCON+T1 */\
    V.Ta = v.TB+T2;/* taon = tbon+T2 */\
    中断;\
    案例5:/*扇区5:T1=X和T2=-Y (abc --> Tb,Tc,Ta)*/\
    T1 = VA;\
    T2 =-Vb;/* tbon =(1-T1-T2)/2 */\
    V.TB=_IQdiv2 ((_IQ (1)-T1-T2);\
    V.TC = v.TB+T1;/* taon = TCON+T2 */\
    V.Ta = v.TC+T2;\
    中断;\
    案例6:/*扇区6:T1=-Y和T2=-Z (abc --> tc,Ta,TB)*/\
    T1 =-Vb;\
    T2 =-VC;\
    V.TC=_IQdiv2 ((_IQ (1)-T1-T2);\
    V.Ta = v.TC+T1;/* taon = TCON+T1 */\
    V.TB = v.Ta+T2;/* tbon = taon+T2 */\
    中断;\
    }\
    /*转换未签名的global_Q格式(范围(0,1))->。 */\
    /*..signed global_Q格式(范围(-1,1)*/\
    V.Ta =_IQmpy2 (v.TA-_IQ (0.5));\
    V.TB =_IQmpy2 (v.TB-_IQ (0.5));\
    V.TC =_IQmpy2 (v.TC-_IQ (0.5));\

    #endif //__SVGEN_DQ_H__

    %%%% controlSUITE数学块版本4或更高版本%%%%%%%%%%%

    #define SVGENDQ_MACRO (v)\
    V.tmp1= v.Ubeta;\
    V.tmp2=_IQdiv2 (v.Ubeta)+(_IQpumpy (_IQ (0.866),v.Ualpha);\
    V.tmp3= v.tmp2 - v.tmp1;\
    \
    V.VecSector=3;\
    V.VecSector=(v.tmp2>0)?(v.VecSector-1):v.VecSector;\
    V.VecSector=(v.tmp3>0)?(v.VecSector-1):v.VecSector;\
    V.VecSector=(v.tmp1<0)?(7-v.VecSector):v.VecSector;\
    \
    IF (v.VecSector=1|| v.VecSector=4)\
    { v.Ta= v.tmp2;\
    V.TB= v.tmp1-v.tmp3;\
    V.tc=-v.tmp2;\
    }\
    \
    else if (v.VecSector=2 || v.VecSector=5)\
    { v.Ta= v.tmp3+v.tmp2;\
    V.TB= v.tmp1;\
    V.tc=-v.tmp1;\
    }\
    \
    其他\
    { v.Ta= v.tmp3;\
    V.TB=-v.tmp3;\
    V.tc=-(v.tmp1+v.tmp2);\
    }\
    \

    #endif //__SVGEN_H__

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它意味着使用共模的svgen_comm.h。 svgen.h和sgven_comm.h中的输出相同,是PWM输出的占空比。svgen_comm.h不需要计算扇区。