maxwell電機轉矩掃描與使用MTPA策略繪制效率map圖


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度,及定子磁場超前於轉子磁場。

畫出下圖,能更好地說明這一問題。

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中搭建的模型:

\[I_d=I_\alpha\cos(pos)+I_\beta\sin(pos)\\=\frac{2}{3}(I_a-0.5(I_b+I_c))\cos(pos)+\frac{2}{3}\frac{\sqrt3}{2}(I_b-I_c)\sin(pos)\\=\frac{2}{3}(I_a\cos(pos)+I_b\cos(pos-\frac{2\pi}{3})+I_c\cos(pos+\frac{2\pi}{3}))\]

同理

\[I_q=-I_\alpha\sin(pos)+I_\beta\cos(pos)\\=-\frac{2}{3}(I_a-0.5(I_b+I_c))\sin(pos)+\frac{2}{3}\frac{\sqrt3}{2}(I_b-I_c)\cos(pos)\\=-\frac{2}{3}(I_a\sin(pos)+I_b\sin(pos-\frac{2\pi}{3})+I_c\sin(pos+\frac{2\pi}{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。

得到下圖:

導出表格

得到下表:

繪圖觀察一下:

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)

尋找每個電流下的最大轉矩:

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處的值:

並與掃描法得到的結果對比,如下圖:

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圖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM