電機用的ipm_1工具
電流激勵設置:3d
初始機械角度:blog
電機參數:(先保持init和th都爲0)ip
A相軸線位置:it
N極軸線:io
首先掃描init(原始設置是52.5deg),因爲電機有兩對極,因此掃描範圍是0到180度,間隔5度。table
觀察轉矩圖:class
能夠看到,不一樣init下轉矩有明顯變化。下面以init爲橫軸,平均轉矩爲縱軸,進行進一步觀察。效率
能夠看到,在5~95deg區間內轉矩爲正,電機工做在電動狀態,其餘區間轉矩爲負,電機工做在發電狀態。40deg時電機轉矩達到最大值。csv
在35~45deg進行進一步掃描,以下圖。
init爲38.5deg時,轉矩達到最大,爲4.5956Nm。
對th進行掃描。
th爲4.97327(285度)時轉矩最大,最大值爲4.643Nm。
能夠看到,上面的兩幅圖有軸對稱關係,即設置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")
能夠看到,兩者幾乎徹底重合。
若是開啓機械瞬態分析,則能夠看到轉速的波動,但此時沒有添加外電路,因此不能設定控制策略。
下面對不一樣的電流進行掃描,在此以前先回顧一下Clark和Park變換,即Id和Iq的計算。
以前在matlab中搭建的模型:
即
\[I_d=I_\alpha\cos(th)+I_\beta\sin(th)\\=\frac{2}{3}(I_a-0.5(I_b+I_c))\cos(th)+\frac{2}{3}\frac{\sqrt3}{2}(I_b-I_c)\sin(th)\\=\frac{2}{3}(I_a\cos(th)+I_b\cos(th-\frac{2\pi}{3})+I_c\cos(th+\frac{2\pi}{3}))\]
同理
\[I_q=-I_\alpha\sin(th)+I_\beta\cos(th)\\=-\frac{2}{3}(I_a-0.5(I_b+I_c))\sin(th)+\frac{2}{3}\frac{\sqrt3}{2}(I_b-I_c)\cos(th)\\=-\frac{2}{3}(I_a\sin(th)+I_b\sin(th-\frac{2\pi}{3})+I_c\sin(th+\frac{2\pi}{3}))\]
在maxwell的Output Variables中能夠進行這樣的設置:
保持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,] }
獲得表格:
這就是這一轉速下的轉矩指令表。
下面利用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圖。