SVPWM算法程序_第1页
SVPWM算法程序_第2页
SVPWM算法程序_第3页
SVPWM算法程序_第4页
SVPWM算法程序_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章空间矢量脉宽调制技术例1、CLARK变换的DSP实现7图 CLARK变换实现波形图/*CLARKE变换相关变量定义*/typedef struct (float32 As;float32 Bs;float32 Alpha;float32 Beta;void (*calc)();/输入:A相定子电流/输入:B相定子电流/输出:静止坐标系d轴定子电流/输出:静止坐标系q轴定子电流/计算函数指针 CLARKE;typedef CLARKE *CLARKE_handle;/*定义CLARKE变换初始化参数*/#define CLARKE_DEFAULTS (0, 0, 0, 0, (void (

2、*)(Uint32)clarke_calc/*CLARKE变换函数原型CLARKE.C*/ void clarke_calc(CLARKE_handle);#include "dmctype.h#include "clarke.h void clarke_calc(CLARKE *v)(v->Alpha = v->As;v->Beta = (v->As + 2*v->Bs)*0.57735026918963;/ 1/sqrt(3) = 0.57735026918963例2、PARK变换的DSP实现Id图 PARK变换DSP实现坐标映射/*PAR

3、K变换相关变量定义*/typedef struct ( float32 Alpha;/输入:静止坐标系d轴定子变量loat32 Beta; /输入:静止坐标系 q轴定子变量float32 Angle; /输入:转子角度(弧度)float32 Ds; /输出:旋转d轴定子变量(M轴)float32 Qs; /输出:旋转q轴定子变量(T轴) void (*calc)(); / 函数指针 PARK;typedef PARK *PARK_handle;/*PARK变换变量初始化参数0, 0, 0, */#define PARK_DEFAULTS (0, 0, (void (*)(Uint32)park

4、_calc )/*PARK函数原型*/void park_calc(PARK_handle);#include "dmctype.h”#include "park.h"extern float32 sin_tab;void park_calc(PARK *v)float32 Cosine,Sine;/采用查表法/ (PI/2)/(2*PI) = 0.25/ (PI/2)/(2*PI)*256 = 0.25*256 = 64/ (PI/2)-2*PI)/(2*PI) = -0.75/ (PI/2)-2*PI)/(2*PI)*256 = -0.75*256 = -19

5、2/查表发求解正弦if (v->Angle+0.25 > 1.0)Sine= sin_tab(int16)(v->Angle*256);Cosine= sin_tab(int16)(v->Angle*256) - 192;)elseSine= sin_tab(int16)(v->Angle*256);Cosine= sin_tab(int16)(v->Angle*256) + 64;)v->Ds= v->Alpha*Cosine + v->Beta*Sine;v->Qs= v->Beta*Cosine - v->Alpha

6、*Sine;)图6.7 PARK变换坐标映射图/*PARK逆变换参数定义*/typedef struct float ds;/*输出:定子参考坐标系 d-轴变量*/floatqs;/*输出:定子参考坐标系q-轴变量*/floatang;/*输入:转子转动角度(rad) */floatde;/*输入:旋转d-轴定子变量*/floatqe;/*输入:旋转q-轴定子变量*/void(*calc)();/*计算函数指针*/ IPARK;typedef IPARK *IPARK_handle;/*Default initalizer for the IPARK object.*/#define IPAR

7、K_DEFAULTS 0, 0, 0, 0, 0, (void (*)(long)ipark_calc/*逆变换函数IPARK.C*/void ipark_calc(IPARK_handle);/*文件名称:IPARK.C*/#include "ipark.h" extern float sin_tab;void ipark_calc(IPARK *v)float cos_ang,sin_ang;/*采用查表法计算正弦角度*/* (PI/2)/(2*PI) = 0.25 */* (PI/2)/(2*PI)*256 = 0.25*256 = 64 */* (PI/2)-2*P

8、I)/(2*PI) = -0.75 */* (PI/2)-2*PI)/(2*PI)*256 = -0.75*256 = -192 */if (v->ang+0.25 > 1)sin_ang = sin_tab(int)(v->ang*256);cos_ang = sin_tab(int)(v->ang*256) - 192;elsesin_ang = sin_tab(int)(v->ang*256);cos_ang = sin_tab(int)(v->ang*256) + 64;v->ds = v->de*cos_ang - v->qe*s

9、in_ang;v->qs = v->qe*cos_ang + v->de*sin_ang;例3、空间矢量的算法程序/*空间矢量的产生:SVGEN_DQ.C (IQ version)*/#include "IQmathLib.h"/ Include header for IQmath library/ Don't forget to set a proper GLOBAL_Q in "IQmathLib.h" file#include "dmctype.h"#include "svgen_dq.h&q

10、uot;void svgendq_calc(SVGENDQ *v)_iq Va,Vb,Vc,t1,t2;Uint32 Sector = 0; / Sector is treated as Q0 - independently with global Q/ CLARKE逆变换Va = v->Ubeta;Vb = _IQmpy(_IQ(-0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualpha);Vc = _IQmpy(_IQ(-0.5),v->Ubeta) - _IQmpy(_IQ(0.8660254),v->Ualpha);

11、/ 0.8660254 = sqrt(3)/2/ 60o扇区确定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 = VaVb = _IQmpy(_IQ(0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualpha);/ Y = VbVc = _IQmpy(_IQ(0.5),v->Ubeta) - _IQmpy(

12、_IQ(0.8660254),v->Ualpha);/ Z = Vcif (Sector=0) / Sector 0:当(U©, Up) = (0,0)(v->Ta = _IQ(0.5);v->Tb = _IQ(0.5);v->Tc = _IQ(0.5);)if (Sector=1) / Sector 1: t1=Z 和 t2=Y (abc -> Tb,Ta,Tc)(t1 = Vc;/ tbon = (1-t1-t2)/2t2 = Vb;v->Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2);v->Ta = v->

13、Tb+t1;/ taon = tbon+t1v->Tc = v->Ta+t2;/ tcon = taon+t2else if (Sector=2) / Sector 2: t1=Y 和 t2=-X (abc -> Ta,Tc,Tb)t1 = Vb;t2 = -Va;v->Ta = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2);/ taon =(1-t1-t2)/2v->Tc = v->Ta+t1;/ tcon = taon+t1v->Tb = v->Tc+t2;/ tbon = tcon+t2else if (Sector=3)

14、/ Sector 3: t1=-Z 和 t2=X (abc -> Ta,Tb,Tc)t1 = -Vc;t2 = Va;v->Ta = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2);/ taon =(1-t1-t2)/2v->Tb = v->Ta+t1;/ tbon = taon+t1v->Tc = v->Tb+t2;/ tcon = tbon+t2else if (Sector=4) / Sector 4: t1=-X 和 t2=Z (abc -> Tc,Tb,Ta)t1 = -Va;t2 = Vc;v->Tc = _IQmpy(

15、_IQ(0.5),(_IQ(1)-t1-t2);/ tcon =(1-t1-t2)/2v->Tb = v->Tc+t1;/ tbon =tcon+t1v->Ta = v->Tb+t2;/ taon =tbon+t2else if (Sector=5) / Sector 5: t1=X 和 t2=-Y (abc -> Tb,Tc,Ta)t1 = Va;/ tbon = (1-t1-t2)/2/ tcon = tbon+t1t2 = -Vb;v->Tb = _IQmpy(_IQ(0.5),(_IQ (1)-t1-t2);v->Tc = v->Tb+t1;v->Ta = v->Tc+t2;/ taon = tcon+t2else if (Sector=6) / Sector 6: t1=-Y 和 t2=-Z (abc -> Tc,Ta,Tb)t1 = -Vb;/ tcon = (1-t1-t2)/2/ taon = tcon+t1/ tbon = taon+t2t2 = -Vc;v->Tc = _IQmpy(_IQ(0.5),(_IQ (1)-t1-t2);v->Ta = v->Tc+t1;v->Tb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论