FOC坐標(biāo)變換詳解:從abc到dq的數(shù)學(xué)推導(dǎo)與DSP實(shí)現(xiàn))
直接亮明我的觀點(diǎn)永磁同步電機(jī)矢量控制FOC里最勸退人的門檻不是PID調(diào)參也不是SVPWM實(shí)現(xiàn)而是從三相靜止坐標(biāo)系abc到兩相旋轉(zhuǎn)坐標(biāo)系dq之間的那一堆數(shù)學(xué)變換。很多朋友一看到Clarke變換、Park變換的矩陣就頭皮發(fā)麻硬背公式又不知道每個(gè)系數(shù)怎么來(lái)的結(jié)果一到工程里就翻車——電流環(huán)參數(shù)怎么調(diào)都別扭角度反饋一接錯(cuò)直接正反饋飛車。這篇東西我盡量用做工程的人能聽(tīng)懂的話把從abc到dq的完整推導(dǎo)、不同變換系數(shù)的區(qū)別、DSP里的落地寫法一次講透后面還會(huì)把實(shí)操中踩過(guò)的坑一并列出來(lái)。適合正在學(xué)FOC的電機(jī)控制工程師、做嵌入式驅(qū)動(dòng)開(kāi)發(fā)的朋友也適合寫論文需要理清坐標(biāo)變換細(xì)節(jié)的研究生參考。1. 為什么要把三相靜止坐標(biāo)系搬到d-q坐標(biāo)系1.1 交流電機(jī)的本質(zhì)難題時(shí)變耦合先想一個(gè)最基礎(chǔ)的問(wèn)題為什么直流電機(jī)控制起來(lái)那么舒服因?yàn)橹绷麟姍C(jī)的勵(lì)磁磁場(chǎng)和電樞磁場(chǎng)天然正交你控制電樞電流就能直接控制轉(zhuǎn)矩磁鏈和轉(zhuǎn)矩兩套東西互不干擾。但永磁同步電機(jī)不是這樣三相定子繞組在空間上差120度通入的是三相交流電產(chǎn)生的磁場(chǎng)是旋轉(zhuǎn)的而轉(zhuǎn)子帶著永磁體也在轉(zhuǎn)。此時(shí)定子電流產(chǎn)生的磁動(dòng)勢(shì)和轉(zhuǎn)子永磁體磁場(chǎng)之間的夾角一直在變化轉(zhuǎn)矩表達(dá)式里帶著電角度、帶著三相電流的瞬時(shí)值你直接在三相坐標(biāo)系里寫轉(zhuǎn)矩方程會(huì)發(fā)現(xiàn)它是一個(gè)強(qiáng)耦合、非線性的時(shí)變系統(tǒng)根本沒(méi)法像直流電機(jī)那樣拿兩個(gè)PI環(huán)就穩(wěn)穩(wěn)定住。坐標(biāo)變換的思路說(shuō)白了就是“換個(gè)角度看問(wèn)題”。既然三相繞組在空間上對(duì)稱分布通入的也是對(duì)稱三相電流那么我們完全可以找一個(gè)跟著轉(zhuǎn)子一起轉(zhuǎn)的坐標(biāo)系把原本靜止的abc三相繞組上的交流量投影到這個(gè)旋轉(zhuǎn)坐標(biāo)系上。在這個(gè)旋轉(zhuǎn)坐標(biāo)系里原本交變的量會(huì)變成直流量轉(zhuǎn)矩和磁鏈的控制就能解耦成兩個(gè)獨(dú)立的直流控制回路這就是矢量控制“矢”字的來(lái)歷——把定子電流矢量分解成產(chǎn)生磁鏈的d軸分量和產(chǎn)生轉(zhuǎn)矩的q軸分量分而治之。1.2 坐標(biāo)變換的物理意義把交流變“直流”我經(jīng)常跟剛?cè)腴T的同事打一個(gè)比方你在路邊看一輛行進(jìn)中的自行車車輪輻條輻條在不停轉(zhuǎn)動(dòng)你覺(jué)得它的位置一直在變很難描述。但如果你自己騎一輛車跟它并排同速前進(jìn)以你的視角看那輛車的輪子輻條幾乎靜止不動(dòng)了。坐標(biāo)變換做的事情就是把觀察者從“路邊”搬到“車上”——跟隨轉(zhuǎn)子磁場(chǎng)同步旋轉(zhuǎn)于是原來(lái)旋轉(zhuǎn)的電流矢量變成了相對(duì)靜止的直流分量。所以從abc到dq的變換本質(zhì)上就是一次“參考坐標(biāo)系的變化”。變換矩陣?yán)锏拿恳豁?xiàng)不是憑空來(lái)的它們只是把三相繞組在空間上的投影關(guān)系、以及在時(shí)間上的相位關(guān)系用線性代數(shù)的方式寫了出來(lái)。搞明白這一點(diǎn)你后面看任何教材里的變換矩陣都不會(huì)再感覺(jué)是一堆魔術(shù)數(shù)字而是一套有明確幾何意義的投影操作。2. 從abc到αβClarke變換的兩種約定2.1 等幅值變換與等功率變換Clarke變換的任務(wù)是把三相abc坐標(biāo)系變換到兩相靜止αβ坐標(biāo)系。這一步的物理含義很直白三相繞組在空間上對(duì)稱分布合成磁動(dòng)勢(shì)可以等效成兩相正交繞組產(chǎn)生的磁動(dòng)勢(shì)。既然三相和兩相都是產(chǎn)生同樣的旋轉(zhuǎn)磁動(dòng)勢(shì)數(shù)學(xué)上就可以互相表示。但這里有一個(gè)讓無(wú)數(shù)人困惑的點(diǎn)變換矩陣前面的系數(shù)到底是2/3還是√(2/3)答案是——兩種都對(duì)但約定不同等幅值變換變換前后合成矢量的幅值保持不變系數(shù)取2/3。等功率變換變換前后功率保持不變系數(shù)取√(2/3)。兩種約定在數(shù)學(xué)上都能成立區(qū)別在于你后續(xù)如何處理功率、轉(zhuǎn)矩公式里的系數(shù)。工程上做電流環(huán)控制、寫DSP程序絕大多數(shù)人用等幅值變換因?yàn)殡娏鞑蓸又岛妥儞Q后的αβ值直接對(duì)應(yīng)調(diào)試時(shí)直觀看波形不容易暈。而做功率計(jì)算、效率分析的時(shí)候用等功率變換更省事不用在功率公式里額外乘3/2的系數(shù)。2.2 Clarke變換矩陣推導(dǎo)推導(dǎo)從磁動(dòng)勢(shì)等效出發(fā)。假設(shè)三相繞組每相有效匝數(shù)為N1兩相繞組每相有效匝數(shù)為N2。按照磁動(dòng)勢(shì)相等的原則三相合成磁動(dòng)勢(shì)在αβ軸上的投影等于兩相繞組各自產(chǎn)生的磁動(dòng)勢(shì)于是有N2 * iα N1 * (ia - ib * cos60° - ic * cos60°) N1 * (ia - ib/2 - ic/2) N2 * iβ N1 * (ib * sin60° - ic * sin60°) N1 * (√3/2 * ib - √3/2 * ic)如果取N2/N1 3/2就把系數(shù)2/3提出來(lái)得到等幅值Clarke變換iα 2/3 * (ia - ib/2 - ic/2) iβ 2/3 * (√3/2 * ib - √3/2 * ic) (1/√3) * (ib - ic)寫成矩陣形式就是| iα | | 1 -1/2 -1/2 | | ia | | iβ | | 0 √3/2 -√3/2 | | ib | | i0 | | 1/2 1/2 1/2 | | ic |注意這里第三行是零序分量i0在三相三線制系統(tǒng)里沒(méi)有零序通路iaibic0恒成立所以很多實(shí)際工程代碼里直接忽略i0只算前兩行。但寫論文或者做故障診斷的時(shí)候第三行不能丟它包含了三相不平衡的信息。等功率變換就簡(jiǎn)單了把系數(shù)換成√(2/3)矩陣內(nèi)部每一項(xiàng)再相應(yīng)調(diào)整正交歸一化系數(shù)最終形式是| iα | √(2/3) | 1 -1/2 -1/2 | | ia | | iβ | | 0 √3/2 -√3/2 | | ib | | i0 | | 1/√2 1/√2 1/√2 | | ic |需要特別提醒這里Clarke變換的直接輸入是三相電流瞬時(shí)值。很多初學(xué)者上來(lái)就把三相電流的表達(dá)式比如ia Im*cos(ωt)直接代入矩陣然后一頓展開(kāi)發(fā)現(xiàn)得到兩個(gè)正交的余弦正弦量就覺(jué)得“哦這就是αβ”。這個(gè)理解方向是對(duì)的但一定要清楚變換矩陣本身只做線性映射不改變信號(hào)的時(shí)間頻率特性。abc下的三相交流量變換到αβ下仍然是交流量只是從三個(gè)變成兩個(gè)空間上垂直了。真正讓交流變直流的是下一步Park變換。3. 從αβ到dqPark變換與旋轉(zhuǎn)坐標(biāo)系3.1 旋轉(zhuǎn)坐標(biāo)系的引入到了這一步核心思路是αβ坐標(biāo)系雖然在空間上正交了但坐標(biāo)系本身還是靜止的。永磁同步電機(jī)的轉(zhuǎn)子在轉(zhuǎn)轉(zhuǎn)子磁場(chǎng)也在轉(zhuǎn)αβ坐標(biāo)系下的電壓電流仍然以電角速度ωe在交變。PI控制器對(duì)直流的跟蹤是無(wú)靜差的但對(duì)交流量的跟蹤天生就存在幅值和相位誤差所以你直接把兩個(gè)PI環(huán)用在αβ軸上是沒(méi)法實(shí)現(xiàn)高性能控制的。Park變換就是解決這個(gè)問(wèn)題的關(guān)鍵一步。它把αβ靜止坐標(biāo)系變換到dq旋轉(zhuǎn)坐標(biāo)系其中d軸方向與轉(zhuǎn)子永磁體磁鏈方向?qū)Rq軸逆時(shí)針超前d軸90度電角度。變換的核心是一個(gè)旋轉(zhuǎn)矩陣旋轉(zhuǎn)角度是轉(zhuǎn)子電角度θe。這樣從定子側(cè)看過(guò)去轉(zhuǎn)子磁場(chǎng)在旋轉(zhuǎn)但我們把參考坐標(biāo)系也跟著旋轉(zhuǎn)觀察者“坐”在轉(zhuǎn)子上看定子電流電流矢量就不再旋轉(zhuǎn)了。3.2 Park變換矩陣推導(dǎo)幾何關(guān)系非常清晰假設(shè)αβ坐標(biāo)系下的矢量在空間中有一個(gè)角度位置而dq坐標(biāo)系相對(duì)αβ轉(zhuǎn)過(guò)θe角。要把矢量從αβ系轉(zhuǎn)到dq系相當(dāng)于把矢量坐標(biāo)做一次旋轉(zhuǎn)。旋轉(zhuǎn)矩陣為| id | | cosθe sinθe | | iα | | iq | | -sinθe cosθe | | iβ |展開(kāi)就是id iα * cosθe iβ * sinθe iq -iα * sinθe iβ * cosθe這個(gè)矩陣的符號(hào)約定要特別注意。上面這個(gè)寫法是d軸滯后α軸、q軸超前d軸90度時(shí)的“標(biāo)準(zhǔn)數(shù)學(xué)約定”。但工程實(shí)際中永磁同步電機(jī)的轉(zhuǎn)子位置傳感器編碼器或旋變輸出的角度定義以及你SVPWM里扇區(qū)判斷用的角度定義必須和Park變換里的θe保持同一套約定。如果傳感器角度方向定義相反或者θe補(bǔ)償角度沒(méi)做對(duì)最簡(jiǎn)單的癥狀就是你給q軸正電流命令電機(jī)不但不正向出力反而反向轉(zhuǎn)或者劇烈抖動(dòng)——本質(zhì)上是因?yàn)槟阈D(zhuǎn)矩陣?yán)锏膕in項(xiàng)符號(hào)反了id和iq被錯(cuò)誤交叉了電流環(huán)變成正反饋。3.3 逆Park變換與SVPWM的銜接實(shí)際FOC控制里電流環(huán)輸出的是dq軸電壓指令ud和uq這兩個(gè)是直流量但最終要加到電機(jī)上的是三相交流電壓。所以還要做逆變換先把ud、uq從旋轉(zhuǎn)坐標(biāo)變回靜止坐標(biāo)uα ud * cosθe - uq * sinθe uβ ud * sinθe uq * cosθe這個(gè)逆變換的矩陣正好就是Park變換矩陣的轉(zhuǎn)置因?yàn)樾D(zhuǎn)矩陣是正交矩陣逆矩陣等于轉(zhuǎn)置矩陣。得到uα和uβ之后再經(jīng)過(guò)逆Clarke變換把兩相變回三相注意這里系數(shù)對(duì)應(yīng)關(guān)系得到三相電壓參考值或者直接拿uα、uβ作為SVPWM的輸入。工程上SVPWM壓根不需要真的把uα、uβ變回三相瞬時(shí)電壓再做調(diào)制而是直接利用uα、uβ判斷參考電壓矢量所在的扇區(qū)并計(jì)算相鄰矢量的作用時(shí)間。這也是為什么很多代碼里你看到SVPWM函數(shù)的輸入直接就是Ualpha和Ubeta。理解了這一環(huán)你就清楚了坐標(biāo)變換不是獨(dú)立存在的“數(shù)學(xué)課內(nèi)容”它是整個(gè)FOC信號(hào)鏈里從電流采樣到PWM輸出之間的“翻譯官”。4. 全套變換公式與工程實(shí)現(xiàn)細(xì)節(jié)4.1 完整變換矩陣對(duì)照表為了方便平時(shí)查用我把常用的變換矩陣整理成一個(gè)表。這里默認(rèn)使用的都是等幅值約定這也是大多數(shù)MCU/DSP代碼里的主流做法變換名稱方向矩陣形式僅列出αβ/dq相關(guān)行Clarke變換abc → αβiα (2/3)(ia - ib/2 - ic/2)iβ (1/√3)(ib - ic)逆Clarke變換αβ → abcia iαib -iα/2 (√3/2)iβic -iα/2 - (√3/2)iβPark變換αβ → dqid iα·cosθe iβ·sinθeiq -iα·sinθe iβ·cosθe逆Park變換dq → αβuα ud·cosθe - uq·sinθeuβ ud·sinθe uq·cosθe逆Clarke變換看起來(lái)有點(diǎn)“不對(duì)稱”只用了兩相就恢復(fù)了三相。這是因?yàn)樵谌嗳€制系統(tǒng)里iaibic0已知任意兩相就能推出第三相。你看到很多代碼里逆Clarke變換的寫法是ua ualpha ub -0.5 * ualpha 0.8660254 * ubeta uc -ua - ub最后一行直接用“負(fù)的兩相之和”得到第三相就是這個(gè)道理。這樣做的好處是理論上保證三相電壓參考值之和為零不會(huì)引入零序分量SVPWM的調(diào)制波也更干凈。4.2 DSP/單片機(jī)上的實(shí)現(xiàn)要點(diǎn)坐標(biāo)變換在紙上寫矩陣很容易落到代碼里就有幾個(gè)工程細(xì)節(jié)值得說(shuō)道。第一三角函數(shù)計(jì)算開(kāi)銷。Park變換和逆Park變換每個(gè)控制周期至少調(diào)用兩次sin/cos如果控制頻率是10kHz那每秒鐘要算幾萬(wàn)次三角函數(shù)。在小資源MCU上直接調(diào)用標(biāo)準(zhǔn)庫(kù)的sin/cos函數(shù)會(huì)吃掉不少CPU時(shí)間。實(shí)測(cè)在一些沒(méi)有硬件FPU的M0/M3內(nèi)核芯片上一次標(biāo)準(zhǔn)sin函數(shù)調(diào)用可能耗時(shí)幾百納秒到幾微秒不等10kHz中斷里占比可能達(dá)到10%甚至更高。常用的優(yōu)化手段有查表法把0到360度的sin值做成定標(biāo)表按角度索引查找、Cordic算法硬件加速部分DSP和MCU有專門指令、或者用多項(xiàng)式近似展開(kāi)。我個(gè)人在量產(chǎn)項(xiàng)目里更推薦“查表線性插值”精度控制在0.1度以內(nèi)速度和RAM占用都可接受。第二定標(biāo)與Q格式。定點(diǎn)DSP上做坐標(biāo)變換必須把浮點(diǎn)運(yùn)算轉(zhuǎn)成Q格式定點(diǎn)運(yùn)算。常見(jiàn)的做法是Q15或者Q24。比如變量范圍是-32768到32767你就可以把正弦定標(biāo)表按Q15格式存儲(chǔ)查表得到的結(jié)果直接和Q15格式的電流值相乘。這里最關(guān)鍵的坑是乘法溢出兩個(gè)Q15數(shù)相乘得到Q30必須左移15位或者說(shuō)歸一化到Q15再儲(chǔ)存否則下一次運(yùn)算直接溢出波形就是亂跳的。很多新手調(diào)了半天發(fā)現(xiàn)電流環(huán)完全失控最后定位在乘法溢出上。第三角度對(duì)齊。Park變換用的是轉(zhuǎn)子電角度θe但編碼器或旋變給出的通常是機(jī)械角度θm。兩者關(guān)系是θe 極對(duì)數(shù) * θm如果電機(jī)是4對(duì)極那電角度變化4圈機(jī)械角度才轉(zhuǎn)1圈。這個(gè)極對(duì)數(shù)補(bǔ)償忘掉是最常見(jiàn)的低級(jí)錯(cuò)誤之一。另外一個(gè)坑是編碼器Z脈沖的零位和電機(jī)d軸位置不對(duì)齊導(dǎo)致θe有個(gè)固定偏差表現(xiàn)出來(lái)就是id電流控制不準(zhǔn)、負(fù)載下效率偏低出力不夠。正確做法是在電機(jī)不帶負(fù)載的條件下做一個(gè)角度校準(zhǔn)給一個(gè)固定的id電流等轉(zhuǎn)子鎖到d軸位置然后讀取編碼器角度作為零位補(bǔ)償值把這個(gè)值存到非易失存儲(chǔ)里每次上電啟動(dòng)時(shí)加載。4.3 變換系數(shù)不一致帶來(lái)的連鎖影響這一點(diǎn)值得單獨(dú)拎出來(lái)講。假設(shè)你參考的論文用等功率變換你自己實(shí)現(xiàn)的時(shí)候卻用了等幅值變換但是功率公式?jīng)]有做相應(yīng)調(diào)整結(jié)果就是轉(zhuǎn)矩常數(shù)差一個(gè)√3倍的系數(shù)電流環(huán)增益標(biāo)定全部錯(cuò)位。我?guī)н^(guò)的項(xiàng)目里真有同事因?yàn)镃larke變換系數(shù)選錯(cuò)導(dǎo)致額定電流下電機(jī)出力只有預(yù)期的70%左右排查了一整天才找到是變換系數(shù)的問(wèn)題。這里給一個(gè)實(shí)操建議無(wú)論你使用哪種約定必須在整個(gè)控制鏈路中貫徹始終。電流采樣標(biāo)定、坐標(biāo)變換、PI參數(shù)整定、PWM占空比換算、功率計(jì)算所有環(huán)節(jié)的系數(shù)要放到一起推導(dǎo)一遍確保從“實(shí)際電流值”到“實(shí)際電壓輸出”的整個(gè)增益鏈路是閉合的。最好的驗(yàn)證辦法是開(kāi)環(huán)測(cè)試給一個(gè)固定的ud或uq不加電流環(huán)直接測(cè)量電機(jī)端電壓或者母線電流看看和理論計(jì)算是不是一致。這一步能幫你提前暴露80%的系數(shù)錯(cuò)誤。5. 實(shí)操中的坑與排查技巧5.1 典型問(wèn)題速查表先把這些年我自己調(diào)試FOC過(guò)程中最常見(jiàn)的坐標(biāo)變換相關(guān)故障列出來(lái)供大家對(duì)照排查癥狀可能原因排查方向電流波形正弦但電機(jī)不轉(zhuǎn)或亂抖Park變換角度方向反了電流環(huán)正反饋檢查sin/cos符號(hào)約定對(duì)比編碼器方向和變換矩陣方向q軸給電流卻產(chǎn)生d軸方向出力角度補(bǔ)償偏差大θe沒(méi)有對(duì)準(zhǔn)轉(zhuǎn)子d軸重新做編碼器零位校準(zhǔn)檢查極對(duì)數(shù)補(bǔ)償電流PI參數(shù)調(diào)到很大仍然響應(yīng)慢Clarke變換系數(shù)錯(cuò)用2/3和√(2/3)兩種混搭增益標(biāo)定偏小從頭核對(duì)系數(shù)鏈路用開(kāi)環(huán)直流試驗(yàn)驗(yàn)證空載ok帶載就振蕩角度延遲太大控制周期內(nèi)θe更新滯后測(cè)量角度采樣到算法用的延遲考慮角度預(yù)估補(bǔ)償三相電流采樣不平衡導(dǎo)致id/iq有2倍頻波動(dòng)電流采樣只做了單點(diǎn)校準(zhǔn)沒(méi)做偏置和增益校準(zhǔn)加電流采樣偏置校準(zhǔn)和增益校準(zhǔn)流程高速時(shí)轉(zhuǎn)矩輸出明顯下降Park變換中角度分辨率不足位置傳感器精度不夠檢查編碼器線數(shù)和解算頻率必要時(shí)用觀測(cè)器5.2 排查角度問(wèn)題的現(xiàn)場(chǎng)實(shí)戰(zhàn)記錄有一次現(xiàn)場(chǎng)調(diào)試電機(jī)能轉(zhuǎn)但稍微帶一點(diǎn)負(fù)載就劇烈振蕩電流波形上有明顯的高頻分量。我第一反應(yīng)是電流環(huán)增益過(guò)大把PI參數(shù)降到很低結(jié)果問(wèn)題依然存在。后來(lái)用示波器同時(shí)抓編碼器Z信號(hào)和相電流波形發(fā)現(xiàn)電流過(guò)零點(diǎn)和Z脈沖之間的相對(duì)位置在每次啟動(dòng)后都不一樣于是懷疑是編碼器零位標(biāo)定漂了。進(jìn)一步檢查發(fā)現(xiàn)這個(gè)系統(tǒng)的編碼器安裝在電機(jī)尾部通過(guò)聯(lián)軸器連接聯(lián)軸器有微小打滑導(dǎo)致每次斷電再上電后編碼器零位和電機(jī)d軸的相對(duì)角度發(fā)生了變化。這個(gè)角度偏差直接進(jìn)Park變換電流環(huán)的d、q軸解耦就失敗了最終表現(xiàn)為帶載振蕩。解決辦法是換成了漲套連接方式消除打滑同時(shí)在軟件里加了啟動(dòng)時(shí)的自動(dòng)角度校準(zhǔn)流程——在每次上電時(shí)用短時(shí)脈沖把轉(zhuǎn)子拉到預(yù)定位置重新記錄零位偏移量。這個(gè)例子說(shuō)明一個(gè)道理坐標(biāo)變換的數(shù)學(xué)在紙上嚴(yán)謹(jǐn)?shù)搅藢?shí)際系統(tǒng)里角度信息的真實(shí)性才是決定控制品質(zhì)的關(guān)鍵。任何引入角度偏差的機(jī)械、電氣、軟件因素最終都等價(jià)于在Park變換里注入了一個(gè)擾動(dòng)量只是“背鍋”的往往是電流環(huán)PI參數(shù)。5.3 關(guān)于六步換相與FOC的選型觀點(diǎn)市面上有不少低速風(fēng)機(jī)、水泵應(yīng)用有人用六步換相方波控制有人堅(jiān)持上FOC。從坐標(biāo)變換的角度看六步換相本質(zhì)上是把電壓矢量離散成六個(gè)方向每隔60度電角度換一次導(dǎo)通區(qū)間控制精度受限于這60度內(nèi)的固定扇區(qū)。它不需要Clarke和Park變換控制簡(jiǎn)單成本低但轉(zhuǎn)矩脈動(dòng)大、噪聲高、高速效率差。而FOC每一步都在dq坐標(biāo)系里做精細(xì)的電流閉環(huán)轉(zhuǎn)矩響應(yīng)連續(xù)平滑。選型上我的建議是對(duì)成本極度敏感、對(duì)噪聲和效率不敏感的風(fēng)機(jī)水泵類應(yīng)用六步換相仍然有存在價(jià)值但凡是需要寬調(diào)速范圍、低噪聲、高動(dòng)態(tài)響應(yīng)的場(chǎng)合比如伺服、機(jī)器人關(guān)節(jié)、電動(dòng)工具高端款FOC是繞不開(kāi)的路線。前期投入多一點(diǎn)算法工程量后期產(chǎn)品競(jìng)爭(zhēng)力完全不一樣。6. 從變換到應(yīng)用FOC還能怎么升級(jí)6.1 坐標(biāo)變換與參數(shù)辨識(shí)的關(guān)系做FOC的人遲早會(huì)遇到一個(gè)瓶頸電機(jī)參數(shù)不準(zhǔn)控制性能上不去。電感Ld、Lq不準(zhǔn)電流環(huán)解耦項(xiàng)就補(bǔ)償不到位磁鏈ψf不準(zhǔn)MTPA最大轉(zhuǎn)矩電流比和弱磁控制就沒(méi)法做準(zhǔn)。而參數(shù)辨識(shí)算法里的很多推導(dǎo)也是建立在dq坐標(biāo)系下的電壓方程上的ud Rs*id Ld*did/dt - ωe*Lq*iq uq Rs*iq Lq*diq/dt ωe*(Ld*id ψf)在dq坐標(biāo)系下穩(wěn)態(tài)時(shí)導(dǎo)數(shù)項(xiàng)為零方程退化成兩個(gè)代數(shù)方程這就非常適合用最小二乘或者遞推辨識(shí)去做參數(shù)估計(jì)。你注入一個(gè)d軸電流脈沖觀察dq軸電壓響應(yīng)反解出Ld、Lq和ψf。所以可以認(rèn)為坐標(biāo)變換是整個(gè)FOC的中樞神經(jīng)系統(tǒng)參數(shù)辨識(shí)則是基于這個(gè)坐標(biāo)系下電壓方程的“逆向工程”兩者是深度綁定的。6.2 匝間短路等故障建模另一個(gè)比較進(jìn)階的方向是故障診斷。比如永磁同步電機(jī)定子繞組匝間短路故障后三相不再對(duì)稱dq坐標(biāo)系下的電壓方程里會(huì)多出故障分量項(xiàng)。很多論文里的匝間短路模型本質(zhì)上就是在Park變換的基礎(chǔ)上額外引入一個(gè)與故障位置、故障程度相關(guān)的附加項(xiàng)。通過(guò)對(duì)dq軸電流的諧波分析可以發(fā)現(xiàn)2倍頻成分的異常增大這就是匝間短路早期預(yù)警的特征量。這里的數(shù)學(xué)基礎(chǔ)還是坐標(biāo)變換——你只有先把正常工況下的dq分量算準(zhǔn)了才有可能把異常分量分離出來(lái)。6.3 表貼式和內(nèi)置式的坐標(biāo)變換差異最后順著熱搜詞“表貼式永磁同步電機(jī)DSP控制”多說(shuō)一句。表貼式PMSM的Ld約等于Lqdq坐標(biāo)系下的磁阻轉(zhuǎn)矩幾乎為零控制上只需要讓id0全部電流都給q軸就行簡(jiǎn)單直接。而內(nèi)置式IPMSM有磁阻轉(zhuǎn)矩可以利用通常要跑MTPAid要分配到負(fù)值區(qū)域。不管哪種坐標(biāo)變換矩陣本身是一樣的區(qū)別只在于你在dq坐標(biāo)系里怎么分配id、iq指令以及后續(xù)弱磁時(shí)的電壓限制策略。也就是說(shuō)坐標(biāo)變換是共用基礎(chǔ)設(shè)施差異在上層控制算法。最后聊幾句實(shí)戰(zhàn)體會(huì)我在做第一個(gè)FOC量產(chǎn)項(xiàng)目的時(shí)候最深的教訓(xùn)就是坐標(biāo)變換不是推完公式就能松口氣的事它貫穿了從仿真到上機(jī)到量產(chǎn)測(cè)試的每一個(gè)環(huán)節(jié)。你現(xiàn)在拿著Matlab仿真波形覺(jué)得一切正常不代表搬到DSP上代碼沒(méi)問(wèn)題你代碼里坐標(biāo)變換寫對(duì)了不代表編碼器零位對(duì)準(zhǔn)了你對(duì)準(zhǔn)了零位也不代表溫度漂移后還能一直準(zhǔn)。每次出現(xiàn)匪夷所思的故障回到坐標(biāo)變換的基本定義重新捋一遍往往就是破局點(diǎn)。還有一個(gè)建議是日常調(diào)試時(shí)一定要把變換前后各個(gè)點(diǎn)的量測(cè)值都打印或通過(guò)DAC輸出出來(lái)——三相電流、αβ電流、dq電流、角度、ud/uq這些信號(hào)串在一起看你才能肉眼判斷變換到底做得對(duì)不對(duì)。調(diào)試工具上花的時(shí)間會(huì)在排查疑難問(wèn)題時(shí)十倍的賺回來(lái)。這套方法我們一直用到現(xiàn)在不管是伺服項(xiàng)目還是電動(dòng)汽車驅(qū)動(dòng)項(xiàng)目都屢試不爽。