没有合适的资源?快使用搜索试试~ 我知道了~
TI公司官网源代码基于TMS320F2812的永磁同步电动机空间矢量控制的算法实现.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 81 浏览量
2022-10-28
00:55:41
上传
评论
收藏 163KB DOCX 举报
温馨提示
试读
14页
。。。
资源推荐
资源详情
资源评论
例1、空间矢量算法实现
SVGEN_DQ 对象结构体定义
typedef struct {
// 输入:
轴参考电压
// 输入: 轴参考电压
_iq Ta;
// 输出:参考相位 a 开关函数
// 输出:参考相位 b 开关函数
// 输出:参考相位 c 开关函数
函数指针
_iq Tb;
_iq Tc;
{
}
svgen_dq1.Ualpha = Ualpha1;
svgen_dq1.Ubeta = Ubeta1;
svgen_dq2.Ualpha = Ualpha2;
svgen_dq2.Ubeta = Ubeta2;
svgen_dq1.calc(&svgen_dq1);
svgen_dq2.calc(&svgen_dq2);
Ta1 = svgen_dq1.Ta;
Tb1 = svgen_dq1.Tb;
Tc1 = svgen_dq1.Tc;
Ta2 = svgen_dq2.Ta;
Tb2 = svgen_dq2.Tb;
Tc2 = svgen_dq2.Tc;
}
1
_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 */
/* Y = Vb */
/* Z = Vc */
Vb = _IQmpy(_IQ(0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualfa);
Vc = _IQmpy(_IQ(0.5),v->Ubeta) - _IQmpy(_IQ(0.8660254),v->Ualfa);
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 */
/* taon = tbon+t1 */
/* tcon = taon+t2 */
v->Ta = v->Tb+t1;
v->Tc = v->Ta+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 */
/* tcon = taon+t1 */
/* tbon = tcon+t2 */
v->Tc = v->Ta+t1;
v->Tb = v->Tc+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 */
/* tbon = taon+t1 */
/* tcon = tbon+t2 */
v->Tb = v->Ta+t1;
v->Tc = v->Tb+t2;
}
else if (sector==4) /* sector 4: t1=-X and t2=Z (abc ---> Tc,Tb,Ta) */
2
{
t1 = -Va;
t2 = Vc;
v->Tc = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2));
/* tcon = (1-t1-t2)/2 */
v->Tb = v->Tc+t1;
v->Ta = v->Tb+t2;
/* tbon = tcon+t1 */
/* 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 */
/* tcon = tbon+t1 */
/* taon = tcon+t2 */
v->Tc = v->Tb+t1;
v->Ta = v->Tc+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 */
/* taon = tcon+t1 */
/* tbon = taon+t2 */
v->Ta = v->Tc+t1;
v->Tb = v->Ta+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)));
}
在相位置(sector)3 中的一个矢量的例子:
tcon
CMPR3
CMPR2
CMPR1
tbon
taon
t
PWM1
PWM3
t
t
t
PWM5
T /4
T /2
T /2
T /4
T /4
T /4
T /4
T /4
0
6
6
0
0
6
4
0
V
V
V
V
V
V
V
V
0
6
4
7
7
6
4
0
T
图 相位置(sector)PWM 实例及其占空比
3
剩余13页未读,继续阅读
资源评论
- m0_371256352024-03-14资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
G11176593
- 粉丝: 6646
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功