分享

maxwell电机转矩扫描与使用MTPA策略绘制效率map图

 昵称39930769 2021-12-20

1.电机转矩扫描

电机用的ipm_1

电流激励设置:

  • A相:Im*sin(2*pi*fs*time+th)
  • B相:Im*sin(2*pi*fs*time+th-2*pi/3)
  • C相:Im*sin(2*pi*fs*time+th+2*pi/3)

初始机械角度:

电机参数:(先保持init和th都为0)

A相轴线位置:

N极轴线:

1.1初始机械角度

首先扫描init(原始设置是52.5deg),由于电机有两对极,所以扫描范围是0到180度,间隔5度。

观察转矩图:

可以看到,不同init下转矩有明显变化。下面以init为横轴,平均转矩为纵轴,进行进一步观察。

可以看到,在5~95deg区间内转矩为正,电机工作在电动状态,其他区间转矩为负,电机工作在发电状态。40deg时电机转矩达到最大值。

在35~45deg进行进一步扫描,如下图。

init为38.5deg时,转矩达到最大,为4.5956Nm。

1.2电流角

对th进行扫描。

th为4.97327(285度)时转矩最大,最大值为4.643Nm。

1.3小结

可以看到,上面的两幅图有轴对称关系,即设置init和设置th是等价的,当th为285度时,即再经过75度电角度才到达零点,也可以说成让转子先转约38度机械角度。略小于52.5度,及定子磁场超前于转子磁场。

画出下图,能更好地说明这一问题。

1
2
3
4
5
data1<-read.csv('Torque Plot 1.csv')#init
data2<-read.csv('Torque Plot 2.csv')#th
plot(data1$init..deg.,data1$avg.Moving1.Torque...deg.,type='l',col='red')
par(new=TRUE)
plot((2*pi-data2$th...)/pi*90,data2$avg.Moving1.Torque....,type='l',col='blue')

可以看到,二者几乎完全重合。

如果开启机械瞬态分析,则可以看到转速的波动,但此时没有添加外电路,所以不能设定控制策略。

2.MTPA

2.1dq变换

下面对不同的电流进行扫描,在此之前先回顾一下Clark和Park变换,即Id和Iq的计算。

之前在matlab中搭建的模型:

Id=Iαcos(pos)+Iβsin(pos)=23(Ia0.5(Ib+Ic))cos(pos)+2332(IbIc)sin(pos)=23(Iacos(pos)+Ibcos(pos2π3)+Iccos(pos+2π3))

同理

Iq=Iαsin(pos)+Iβcos(pos)=23(Ia0.5(Ib+Ic))sin(pos)+2332(IbIc)cos(pos)=23(Iasin(pos)+Ibsin(pos2π3)+Icsin(pos+2π3))

在maxwell的Output Variables中可以进行这样的设置:

2.2MTPA

保持init=52.5deg,即d轴和A相轴线对齐,扫描Im和th,其中th扫描范围0~2*pi,步长0.1745(10deg),Im扫描范围0~7.5A,步长0.5A。

得到下图:

导出表格

得到下表:

绘图观察一下:

1
2
3
4
5
6
data<-read.csv('Table 1.csv')
data<-data[,c(1,2,5,7,9)]
library(ggplot2)
ggplot(data,aes(th...,avg.Moving1.Torque....,col=factor(Im..A.)))+geom_line()
ggplot(data,aes(th...,avg.Moving1.Torque....,col=factor(Im..A.)))+geom_line()+
  xlim(0,1.7)+ylim(-1000,7000)

寻找每个电流下的最大转矩:

1
2
3
4
5
6
7
8
9
I<-unique(data$Im..A.)
n<-length(I)
temp<-rep(0,n)
table<-data.frame(Im=temp,th=temp,Tor=temp,Id=temp,Iq=temp)
for(i in 1:n){
  dataI<-data[data$Im..A.==I[i],]
  index<-which.max(dataI$avg.Moving1.Torque....)
  table[i,]<-dataI[index,]
}

得到表格:

这就是这一转速下的转矩指令表。

2.3效率MAP

下面利用maxwell中的工具绘制效率map,与上面的扫描结果进行对比。

在View菜单栏中打开ACT Extensions工具。

选择Machine Toolkit进入。

选择待求解的工程,并进行相应设置。

其中极数是为了确定电流频率和电机转速的关系。

设置求解精度。

进一步设置:(一般保持默认即可)

完成设置后点击Finish开始计算。

计算完成后得到下列图像。

因为损耗中只考虑了StrandedLoss,所以效率很高。

ID:

IQ:

Im/1.414=Irms:

提取转速为1800rpm处的值:

并与扫描法得到的结果对比,如下图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
library(readxl)
table2<-read_xlsx('mtpa对比.xlsx')
layout(matrix(c(1,1,2,3), 2, 2, byrow = FALSE),
       widths=c(1, 1), heights=c(1, 1))
plot(table$Tor,table$Im,type='l',col='red',xlim=c(0,7000),ylim=c(0,8),xlab='Torque/mNm',ylab='Im/A')
par(new=TRUE)
plot(1000*table2$Torque,table2$Im,type='l',col='blue',xlim=c(0,7000),ylim=c(0,8),xlab='',ylab='')
legend('topleft',legend=c('sweep','toolkit'),
       col=c('red','blue'),lty=1,lwd=2)
plot(table$Tor,-table$Id,type='l',col='red',xlim=c(0,7000),ylim=c(-5000,0),xlab='Torque/mNm',ylab='Id/mA')
par(new=TRUE)
plot(1000*table2$Torque,1000*table2$Id,type='l',col='blue',xlim=c(0,7000),ylim=c(-5000,0),xlab='',ylab='')
legend('bottomleft',legend=c('sweep','toolkit'),
       col=c('red','blue'),lty=1,lwd=2)
plot(table$Tor,table$Iq,type='l',col='red',xlim=c(0,7000),ylim=c(0,6000),xlab='Torque/mNm',ylab='Iq/mA')
par(new=TRUE)
plot(1000*table2$Torque,1000*table2$Iq,type='l',col='blue',xlim=c(0,7000),ylim=c(0,6000),xlab='',ylab='')
legend('topleft',legend=c('sweep','toolkit'),
       col=c('red','blue'),lty=1,lwd=2)

可见二者非常接近,从方法上说是一致的。也就是说,使用扫描法多考虑几个转速取值,并兼顾电流和电压限制,同样可以手动绘出效率map图。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多