⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 基于2812空间矢量程序.c

📁 里面包含了基于dsp2812的永磁同步电动机和步进电动机的5个源程序。用c语言编的。
💻 C
字号:
void svgendq_calc(SVGENDQ *v)
{	

	_iq Va,Vb,Vc,t1,t2;
	_iq sector = 0;  /*设相位置(sector)等于Q0   */
/*逆clarke变换 */
    Va = v->Ubeta;
    Vb = _IQmpy(_IQ(-0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualfa);  /* 0.8660254 = sqrt(3)/2 */
    Vc = _IQmpy(_IQ(-0.5),v->Ubeta) - _IQmpy(_IQ(0.8660254),v->Ualfa);   /* 0.8660254 = sqrt(3)/2 */

/* 60度sector的确定*/
    if (Va>_IQ(0))
       sector = 1; 
    if (Vb>_IQ(0))
       sector = sector + 2;
    if (Vc>_IQ(0))   
       sector = sector + 4;
       
/* X,Y,Z (Va,Vb,Vc)的计算  */
    Va = v->Ubeta;                                                  /* X = Va */
    Vb = _IQmpy(_IQ(0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualfa);   /* Y = Vb */
    Vc = _IQmpy(_IQ(0.5),v->Ubeta) - _IQmpy(_IQ(0.8660254),v->Ualfa);   /* Z = Vc */
       
    if (sector==1)  /* sector 1: t1=Z and t2=Y (abc ---> Tb,Ta,Tc) */
    {
       t1 = Vc;
       t2 = Vb;
       v->Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* tbon = (1-t1-t2)/2 */
       v->Ta = v->Tb+t1;           /* taon = tbon+t1 */
       v->Tc = v->Ta+t2;           /* tcon = taon+t2 */
    }
    else if (sector==2)  /* sector 2: t1=Y and t2=-X (abc ---> Ta,Tc,Tb) */
    {
       t1 = Vb;
       t2 = -Va;
       v->Ta = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* taon = (1-t1-t2)/2 */
       v->Tc = v->Ta+t1;           /* tcon = taon+t1 */
       v->Tb = v->Tc+t2;           /* tbon = tcon+t2 */
    }      
    else if (sector==3)  /* sector 3: t1=-Z and t2=X (abc ---> Ta,Tb,Tc) */
    {
       t1 = -Vc;
       t2 = Va;
       v->Ta = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* taon = (1-t1-t2)/2 */
       v->Tb = v->Ta+t1;           /* tbon = taon+t1 */
       v->Tc = v->Tb+t2;           /* tcon = tbon+t2 */
    }   
    else if (sector==4)  /* sector 4: t1=-X and t2=Z (abc ---> Tc,Tb,Ta) */
    {
       t1 = -Va;
       t2 = Vc;
       v->Tc = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* tcon = (1-t1-t2)/2 */
       v->Tb = v->Tc+t1;           /* tbon = tcon+t1 */
       v->Ta = v->Tb+t2;           /* taon = tbon+t2 */
    }   
    else if (sector==5)  /* sector 5: t1=X and t2=-Y (abc ---> Tb,Tc,Ta) */
    {
       t1 = Va;
       t2 = -Vb;
       v->Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* tbon = (1-t1-t2)/2 */
       v->Tc = v->Tb+t1;           /* tcon = tbon+t1 */
       v->Ta = v->Tc+t2;           /* taon = tcon+t2 */
    }   
    else if (sector==6)  /* sector 6: t1=-Y and t2=-Z (abc ---> Tc,Ta,Tb) */
    {
       t1 = -Vb;
       t2 = -Vc;
       v->Tc = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));      /* tcon = (1-t1-t2)/2 */
       v->Ta = v->Tc+t1;           /* taon = tcon+t1 */
       v->Tb = v->Ta+t2;           /* tbon = taon+t2 */
    }  
       
    v->Ta = _IQmpy(_IQ(2),(v->Ta-_IQ(0.5)));
    v->Tb = _IQmpy(_IQ(2),(v->Tb-_IQ(0.5)));
    v->Tc = _IQmpy(_IQ(2),(v->Tc-_IQ(0.5)));        
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -