一、什麼是工程師文化
二、什麼是遺傳演算法
三、如何建立永磁體磁場模型
四、如何建立繞組解析模型
五、如何建立損耗以及散熱模型
六、如何進行PMSM全局優化設計(Global Optimization)

一、什麼是工程師文化

知乎中有一個我很喜歡的問題:什麼是工程師文化?裡面有100多個回答,大家討論了什麼是自己心中的工程師文化,高票回答提出了如下觀點:

工程師文化,是一種內心的慾望與恐懼的表達。對創造的慾望,對世界的恐懼。因為慾望而創造,因為恐懼而改造。創造世界,改造世界。這種慾望是如此的強烈,這種慾望驅使著我們從樹上爬了下來,生起了火,蓋起了房,馴服了馬,開上了車,造出了原子彈,發射了好奇者。而這種恐懼也是如此的強烈,逼迫著我們不停的看向周圍的一切。

我覺得還要增加一點,就是工程師要有geek精神,優秀工程師不僅要改造世界,還需要用最小的成本,最大的效能改造世界。抽象的來說,工程師的任務,就是在滿足各種約束的情況下,把不確定的事情確定化,達到最優的目標。

舉個例子:我們現在要設計一個工字梁:

這個工字梁有幾何上三個參數需要確定 a,b,c ,其中a = [1,10]mm、b = [50,150]mm、c = [50,250] mm,工字梁總長度 L 是3m,材料的楊氏模量 E 是200 GPa ,密度 
ho 是8000 Kg/m^3 。這個工字梁要起到一個什麼作用呢?中間要能承受一個集中力,兩端鉸支(可以旋轉)。要求這個梁在力的作用下最大應力 sigma 要低於 100MPa ,重量低於20 Kg

一般的初級工程師碰到這個問題會怎麼做呢?我們知道,滿足約束的設計變數組合就是一個產品設計,這個我們一般稱之為可行解,就是滿足設計要求,那這麼找到一個可行解呢?去找前人的設計產品啊,都正常工作那麼多年了,肯定是一個可行解嘛,看看人家參數是什麼樣的,看看幾何參數 a,b,c 在什麼範圍內,根據自己的經驗選上幾組參數,然後通過如下公式計算出梁的最大應力和重量:

sigma=frac{FL}{4I}(a+c/2)

W=(2ab+ca)L
ho

其中 I=frac{ac^3}{12}+2left[ frac{ba^3}{12}+ab(a/2+c/2)^2 
ight] 為梁的抗彎截面模量。

比如假如嘗試了一下 a=1mmb=144mmc=117mm ,計算一下呢得到 sigma=78MPaW=9.7Kg應力和重量滿足要求,則設計結束,這樣做的好處就是設計的產品一般不會翻車,壞處就是永遠跟在別人的後面,沒有技術創新,或者只能進行微創新。

如果你是一個追求geek文化的工程師,顯然不會滿足前面的設計的?為什麼——因為滿足應力和重量的解太多了,我們只是找了其中一個可行解,而不是最優解。

那如何找最優解呢?——一個顯而易見的方法就是窮舉啊,我們把所有的設計組合都算一下一下,看看哪個是最優解。比如我們可以這麼做:將 a,b,c 都分成10段,然後組合進行計算,這樣我們就可以通過 10^3 次計算來找到我們最優解,perfect。

窮舉法在變數較少的時候是沒有問題的,但是在實際工程中會遇到很大的困難,因為實際中的變數都比較多,比如現在某個產品設計由10個變數 x_1,x_2,...,x_{10} ,如果窮舉的話,每個變數也取10個值的話,那就要計算 10^{10} 次,也就是10億次,這顯然是不現實的,那怎麼解決這個問題呢?


二、什麼是遺傳演算法

知乎詞條對遺傳演算法有如下描述,現摘抄如下:

遺傳演算法 (Genetic Algorithm),是啟發式演算法 (heuristic algorithm)中比較經典的一種演算法,最早是由John Holland提出的;顧名思義,就是根據遺傳進化過程而設計的演算法了。簡單來講,遺傳演算法源自達爾文的進化論觀點「survival of the fittest」;在種群進化的過程中,大自然會不斷的選擇淘汰一部分適應能力差的個體,同時一些適應能力強的個體得意存活(進化)。

It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is most adaptable to change.

遺傳演算法需要做的,就是模擬一個種群的進化過程;在這個過程里,我們可以簡單地認為:

  • 基因(gene)組成了染色體(chromosome),基因由0或者1來表示(我們這裡只涉及二進位編碼);
  • 一條染色體由多個基因組成,即由0/1的字元串組成,如00000,01011;
  • 一個種群(population)由多個個體(individual)組成,或者說是由多個染色體(chromosome)組成;
  • 每個個體(染色體)的優劣由適應度(fitness)函數所決定;

比方說,我們要人為的構建一個知乎大V,這個大V需要有一些特徵,比方說身高、體重、長相、學歷、人品等等。據此,我們根據一定的編碼規則(encoding),可以隨機的生成一個用戶,比方說0001010111。假設我們已知了一個適應度函數,比方說你的眼緣....用以評價該用戶是否為大V(the quality of the chromosome)。那麼我們可以根據我們的fitness function計算得到該個體的適應度。重複這個過程,我們便可以得到多個知乎用戶,即一個種群。

基本流程:

  • 初始化一個種群;
  • 計算該種群每個個體的適應度;
  • 進行選擇個體(selection)、交叉(crossover)、個體變異(mutation)等操作;
  • 重複2-3步直到滿足停止規則

當然這裡會涉及到一些問題,比方說如何選擇selection的方法 (e.g., roulette wheel selection? tournament selection),如何選擇交叉、變異的方法等等。

在這個過程中,intuitively,「眼緣好」的子代(offspring)得以「繁衍生息」,從而不斷的產生「眼緣更好」的用戶;那麼最終,當我們停止演算法的時候,我們可以選出「眼緣最高」的這個知乎用戶作為知乎大V了。當然了,我們不能保證這個大V是全局最優解,除非你遍歷所有特徵的組合,不然你是不知道該用戶是不是所有可能的組合中「眼緣最高的」。

我們可以比較容易的理解,遺傳演算法的本質就是一個在解空間中不斷進行隨機搜索的演算法,在搜索過程中不斷地產生新的解,並保留更優的解。優點來說,我認為一方面它比較容易實現,另一方面它可以在接受的計算時間內,得到較好的結果;缺點來說,那自然就是隨機搜索帶來的問題了,除了搜索過程中會遇到的問題之外,顯而易見的就是無法保證獲得全局最優解了。

以上來自於知乎詞條「遺傳演算法」的描述,相關文章見詞條 遺傳演算法。

對於上面的介紹大家可能沒有直觀的感受,我們還是拿工字梁做個例子:

我們把 a,b,c 稱之為變數(variable),a = [1,10]mm、b = [50,150]mm、c = [50,250] mm稱之為變數區間(variable boundary),最大應力 sigma<100MPa 稱之為約束(constraints),重量 W 最小稱之為目標函數或者適應度(objective function or fitness function),為了增加難度,增加一個目標——最大變形量def最小。其中最大變形量的表達式為:

def=frac{FL^3}{48EI}

所有變數組成變數空間(解空間),滿足約束的子空間即為可行解集合。通過計算,所有組合及其結果如下:

當然我們的目標值變化(區間減小)的話,解空間也會跟著變化(減小)。

可見 a 對變形量和重量的影響更明顯,取下限時較好; b 的取值較為均勻,說明不是很敏感; c 的取值偏上限更好。


前面工字梁的例子較為簡單,我們來試一個稍微複雜的例子,一個表貼式永磁同步電機(PMSM)的設計。對於PMSM還不是很了解的童鞋們可先閱讀J Pan:如何快速理解永磁同步電機?,在文章中我們說了,永磁電機之所以能旋轉起來,是因為定子、轉子分別產生了一個旋轉的磁場,其中轉子磁場一般是永磁體產生的,定子磁場一般是繞組產生的,兩個磁場以相同的速度旋轉,就得到了一個恆定的轉矩。

要進行全局優化設計,必須先要有數學模型,下面主要從兩個方面來進行建模:轉子永磁體磁場如何建立和描述以及定子繞組磁場如何建立和描述。


三、如何建立永磁體磁場模型

3.1 氣隙磁密的建立

我們對電機的磁路模型進行抽象,在一個磁路裡面,有磁源(永磁體),有磁阻(主要是氣隙),如下圖所示。

永磁體的工作點為

B_m=B_r+mu_0mu_rH_m

根據磁勢守恆,可得

H_mL_m+H_gL_g=0

考慮到磁通有漏磁

phi_g=phi_mk_{lk}

考慮到極弧係數

A_m=A_gk_a

其中 k_a=frac{	au_m}{	au_p} 為極弧係數, L_g=K_cL_g 等效氣隙, A_mA_g 分別為永磁體對應面積和氣隙對應面積, K_{lk} 為漏磁係數。 K_c 為卡式係數,考慮到開槽的影響引入的修正係數。

聯立上面的方程可以得到永磁體產生的氣隙磁密為:

B_g=frac{B_r}{frac{1}{k_ak_{lk}}+mu_r frac{K_cL_g}{L_m}}

磁密的分布如下圖虛線所示

用傅里葉展開,可以得到各個階次的諧波為

B_{mn}=frac{2}{2pi}int_0^{2pi}B_gsin(frac{2pi nx}{2pi})dx=frac{4B_g}{npi}sin(k_afrac{npi}{2})

當然,只有基波能產生恆定轉矩的,其數值為

B_{m1}=frac{4}{pi}B_gsin(k_afrac{pi}{2})

3.2 永磁體產生的感應電動勢計算

每極產生的基波磁通(peak)為

phi_{pm1}=int_0^{	au_p}B_{m1}sin(frac{x}{lambda_p}pi)L_{stk}dx=frac{2}{pi}B_{m1}lambda_pL_{stk}

假設 lambda_plambda_s 分別為極距和槽距

lambda_p=frac{pi D}{2p} quad   lambda_s=frac{pi D}{Q_s}

其中D是氣隙直徑,則永磁體在每相繞組產生的基波磁鏈(peak)為

psi_{m1}=k_{w1}N_{ph}phi_{pm1}

k_{w1} 是基波繞組係數,N_{ph} 為每相匝數。

則每相產生的永磁體感應基波電動勢(RMS)為

E_1=frac{dpsi_{m1}}{dt}=omega_epsi_{m1}=frac{2pi f}{sqrt2}k_{w1}N_{ph}phi_{pm1}

其中 f 是基波頻率。

3.3 功率和力矩

線負荷定義為(雙層繞組):

A=frac{2mN_{ph}I}{pi D}

其中 I 表示電流(RMS), m 是電機相數,則氣隙中產生的最大電磁功率為

P_{em}=mE_1I=mfrac{sqrt2 pi f}{p}k_{w1}N_{ph} B_{m1}D L_{stk}I

假設電磁能全部轉化為機械能(可以通過控制實現),則產生的轉矩為:

T=frac{P_{em}}{omega_m}=frac{pi}{2}cdot D^2L_{stk}cdot A cdot frac{B_{m1}}{sqrt2}cdot k_{w1}

進一步變換形式:

T=2 cdot V cdot A cdot B cdot k_{w1}

其中 B=frac{B_{m1}}{sqrt2}V=frac{pi}{4}D^2L_{stk}=frac{pi}{4}alpha_iD^3alpha_i=frac{L_{stk}}{D}

3.2鐵芯主要 尺寸估計

鐵芯的主要尺寸如下,

氣隙直徑可按如下估算:

D=sqrt[3]{frac{2T}{alpha_i pi B A k_{w1}}}

齒寬和軛寬可作如下估算:

W_t=frac{B_g lambda_s}{k_{Fe}B_t}  quad W_{bt}=frac{1}{2}frac{B_g k_a lambda_p}{k_{Fe}B_{bi}}

其中 k_{Fe} 是疊壓係數,可根據槽滿率和電流密度估算槽的面積為:

A_{slots}=frac{Api D}{k_{fill}J}

其中 k_{fill} 為槽滿率,當然槽得的面積也可通過幾何尺寸計算

A_{slots}=frac{pi}{4}(D_{bi}^2-D^2)-Q_sfrac{D_{bi}-D}{2}W_t

綜合以上兩式可以估算鐵芯的軛部直徑為

D_{bi}=frac{Q_sW_t}{pi}+sqrt{(frac{Q_s W_t}{pi})^2-frac{2Q_sW_tD}{pi}+D^2+frac{4AD}{k_{fill}}}

至此,所有鐵芯的基本尺寸都可以確定。


四、如何建立繞組解析模型

4.1 繞組電動勢計算

繞組的空間分布如下

和永磁體建立的磁場分析一致,繞組產生的基波磁動勢(RMS)為

F_{ph}=frac{4}{pi}frac{k_{w1}N_{ph}}{2p}I_s

氣隙中產生的基波磁密為

B_{c1}=frac{mu_0}{delta}F_{ph}

其中 delta=K_cL_g+frac{L_m}{mu_r} 為總的等效氣隙。

4.2 繞組電感計算

如下圖所示,繞組產生的基波磁通為

phi_{p1}=int_0^{	au_p}B_{c1}sin(frac{x}{	au_p }pi)L_{stk}dx=frac{2}{pi}B_{c1}	au_pL_{stk}

則繞組產生的基波磁鏈為

psi_{s1}=k_{w1}N_{ph}psi_{p1}=frac{2}{pi}k_{w1}N_{ph}B_{c1}lambda_p L_{stk}

則相電感為

L_{ph}=frac{psi_{s1}}{I_s}=frac{4}{pi^2}frac{mu_0 	au_p L_{stk}}{delta p}(k_{w1}N_{ph})^2

忽略漏感,dq軸電感為

L_d=L_q=frac{3}{2}L_{ph}

至於dq電感和相電感的關係,小潘專門有一篇文章,有興趣的參見J Pan:如何理解永磁電機各種電感?。

4.3 電阻計算

每相匝數為

N_{ph}=roundleft( frac{Api D}{2m I} 
ight)

round是圓整的意思,則導體所佔的槽面積為

S_{Cu}=frac{A_{slots}k_{fill}}{2mN_{ph}}

R_{ph}=
ho_{Cu}cdot 2N_{ph}frac{L+L_{ew}+L_{sw}}{S_{Cu}}

其中 L_{ew} 是端部繞組長度, L_{sw} 是繞組跨距

L_{sw}=frac{pi(D+D_{bi})}{2p}

4.4 電壓計算

永磁電壓相量圖如下圖所示,其中左圖為內嵌式永磁電機相量圖,右圖為表貼式永磁電機相量圖。

我們只考慮表貼式永磁電機,採用 i_d=0 控制,忽略電阻壓降,並且只考慮穩態,此時

V_ssimeqsqrt{E_1^2+(LqI_s)^2}


五、如何建立損耗以及散熱模型

電機的損耗主要包括電損耗和機械損耗兩大類,為簡單期間,先忽略機械損耗。電損耗又包括兩類:銅損和鐵損。

P_{loss}=P_{Fe}+P_{Cu}

5.1 銅損計算

銅損計算比較簡單,可按如下估算

P_{Cu}=3 cdot R_{ph} cdot I^2

其中 R_{ph}=(1+alpha Delta T)R_{ph}@20^oC

5.2 鐵損計算

鐵損計算比較複雜,很難計算準確,一般採用Steinmetz方法進行估算,即將鐵損分成兩個部分:磁滯損耗渦流損耗。

P_{Fe}=P_h+P_e

磁滯損耗可通過下式計算

P_h=k_hfB^{gamma}

其中 k_h 是取決於材料的常數, gamma 一般取值在1.8到2.2之間。

渦流損耗的估算公式為

P_e=frac{pi^2B^2t^2f^2}{
hoeta}=k_e(fB)^2

其中 t 是疊片厚度, 
ho 是材料電阻率, eta 和幾何結構有關。

一般材料廠家都會給出不同頻率下的損耗曲線,如下圖所示

可用最小二乘法進行曲線擬合,將 k_hk_egamma 作為未知量,擬合結果如下

損耗的表達式為

P_{Fe}=626fB^{1.8}+1.375f^2B^2

5.3 外殼散熱係數估算

在J Pan:如何估算圓柱形電機外殼的散熱係數 一文中,小潘介紹了怎麼計算一個圓柱形電機外殼的的表面散熱係數,

外殼的散熱係數估算公式如下

happrox (3 sim 3.5)left( frac{Delta T}{D} 
ight)^{0.25}

對於開槽電機,這個係數可適當進行放大,放大倍數在1.3到1.8之間。


六、如何進行PMSM全局優化設計(Global Optimization)

有了前面的模型,我們就可以對錶貼式永磁電機進行全局優化設計了,我們可以選取如下變數:

vec{x}=[p,q,A,J,alpha_i,B_t,B_{bi},alpha_p]

其中 p 為極對數, q 為每極每相槽數, A 為線負荷, J 為電流密度, alpha_i 為長徑比,B_t 為齒部最大允許磁密,B_{bi} 為軛部最大允許磁密, alpha_p 為極弧係數。當然這些變數選取不是唯一的,完全可以選取別的組合。

假設我們建立了已電機幾何模型與變數之間的函數:

[D_s,D_{bi},D,W_t,W_{bi},N_{ph},...]=F(p,q,A,J,alpha_i,B_t,B_{bi},alpha_p)

約束是電壓和最大溫升

T(p,q,A,J,alpha_i,B_t,B_{bi},alpha_p)leq T_{max}

V(p,q,A,J,alpha_i,B_t,B_{bi},alpha_p) leq Vdc

目標是體積最小,效率最高

Vol(p,q,A,J,alpha_i,B_t,B_{bi},alpha_p)=min

eta(p,q,A,J,alpha_i,B_t,B_{bi},alpha_p)=max

計算結果如下(注意本設計僅做方法說明,不具有現實參考意義):

上圖展示了所有變數組合及其對應的計算輸出,由於採用了遺傳演算法,計算量大大減小,所有計算只進行了8000次,時間約在3分鐘。我們也可以通過泡泡圖來看一下任意兩個變數(比如線負荷和電流密度)和目標函數(體積和效率)的對應關係。

一般來說,我們肯定是希望體積最小,效率最高,也就是說我們喜歡右下角的解。我們把右下角所有包絡的點取出來,稱之為Pareto圖,最優設計點肯定會落在Pareto圖上。

Pareto圖上每一點都可認為是一個最優設計(在效率和體積之間的權衡),比如我們可選擇如下設計,此時體積最小,效率也能接受。


推薦閱讀:
相关文章