試指南)
做電機(jī)控制這些年被問得最多的問題就是FOC控制過程到底是怎么一步步跑起來的。說實(shí)話硬件方案成熟之后FOC并不算難它更像一道邏輯題只要把相電流、轉(zhuǎn)子角度、電壓指令這幾件事在坐標(biāo)系里理順剩下的工作就是在每個PWM周期里按固定順序算完十幾條公式。真正難的是每一步背后的原因以及調(diào)試時碰到電流發(fā)散、啟動反轉(zhuǎn)、切換沖擊這些實(shí)際問題要怎么定位。這篇文章我就把FOC控制過程完整拆開從電流采樣到SVPWM輸出從PI參數(shù)估算到無感啟動與閉環(huán)切換寫成一份可以直接照著落地調(diào)試的工程筆記適合剛接觸FOC的嵌入式軟件工程師也適合想從方波控制轉(zhuǎn)向FOC的硬件和算法開發(fā)者。1. FOC的實(shí)質(zhì)把交流電機(jī)當(dāng)直流電機(jī)來騙FOC的英文全稱是Field-Oriented Control直譯就是磁場定向控制。不少人第一次聽到這個概念以為它是一種很玄的電機(jī)驅(qū)動波形生成技術(shù)其實(shí)它本質(zhì)上是在做一個控制目標(biāo)的翻譯工作把電機(jī)本體里三相交流電 旋轉(zhuǎn)磁場的復(fù)雜問題轉(zhuǎn)換成兩個直流電流分量的簡單問題。用一句話概括我的理解FOC不是在千方百計(jì)生成正弦波形而是在把交流電機(jī)當(dāng)作一臺直流電機(jī)來控制。1.1 三相電流為什么不能直接作為PI的反饋很多人一開始會疑惑三相電流本身就是正弦波PI控制器專門跟蹤直流量的為什么不能直接給三個PI呢這就涉及到控制對象的本質(zhì)。三相定子繞組在空間上相隔120度通入相位依次相差120度的正弦電流后氣隙里才會形成勻速旋轉(zhuǎn)的磁場。這三個相電流的頻率等于電頻率它隨轉(zhuǎn)速一直在變?nèi)绻肞I去跟蹤一個正弦信號跟蹤精度直接受PI帶寬限制帶寬再高也會出現(xiàn)相位滯后。更麻煩的是轉(zhuǎn)速升高時正弦頻率也在升高相當(dāng)于讓控制器去追一個永遠(yuǎn)追不上的目標(biāo)。還有一層數(shù)學(xué)上的簡化三相電流并不是獨(dú)立的。星形連接下ia ib ic 0知道任意兩相第三相就等于負(fù)的和。真正產(chǎn)生轉(zhuǎn)矩的并不是某一相電流的大小而是三相電流合成的定子電流空間矢量is。這個矢量有自己的幅值和方向控制目標(biāo)從讓三相電流分別等于三個正弦量變成讓合成電流矢量等于期望的矢量本身就是一次降維。后面的Clark變換和Park變換全都是圍繞這個空間矢量展開的。1.2 d-q軸電流控制目標(biāo)與電機(jī)物理的對應(yīng)關(guān)系把轉(zhuǎn)子永磁體的磁極方向定義為d軸也就是直軸再沿旋轉(zhuǎn)方向超前90度定義為q軸也就是交軸。于是定子電流矢量is被分解成兩個分量id和iq。id作用在d軸方向它不產(chǎn)生有效轉(zhuǎn)矩只影響氣隙磁場強(qiáng)弱iq作用在q軸方向和轉(zhuǎn)子磁場相互作用這才是真正產(chǎn)生電磁轉(zhuǎn)矩的分量。對于表貼式永磁同步電機(jī)Ld約等于Lq電磁轉(zhuǎn)矩近似正比于iq對于內(nèi)嵌式永磁電機(jī)Ld和Lq有明顯差異還會多出一項(xiàng)磁阻轉(zhuǎn)矩這時可以通過讓id為負(fù)值來提升單位電流的轉(zhuǎn)矩輸出也就是MTPA最大轉(zhuǎn)矩電流比控制。從控制角度看無論哪種電機(jī)核心動作都收斂到兩件事讓id收斂到目標(biāo)值讓iq跟隨速度環(huán)給出的轉(zhuǎn)矩電流指令。目標(biāo)值從變化的交流量變成穩(wěn)定的直流量之后PI控制器終于可以做它最擅長的事了。1.3 轉(zhuǎn)子磁鏈角度整個FOC的基準(zhǔn)坐標(biāo)d-q坐標(biāo)是旋轉(zhuǎn)坐標(biāo)它跟著轉(zhuǎn)子磁鏈的電角度θe走。這個角度是整個FOC的基準(zhǔn)坐標(biāo)角度不準(zhǔn)id和iq就沒有解耦iq指令里會混入id成分表現(xiàn)為同樣的電流指令下轉(zhuǎn)矩變小、電流偏大甚至出現(xiàn)電流震蕩。我第一版FOC調(diào)試時就吃過這個虧電流環(huán)參數(shù)怎么調(diào)都共振后來發(fā)現(xiàn)編碼器安裝時零位偏了幾度角度誤差直接把整個控制環(huán)路帶偏了。角度誤差并不是差不多就行。實(shí)測中3度左右的角度誤差在額定工況下就能讓電流明顯變大10度以上的誤差會把正向轉(zhuǎn)矩算成負(fù)向電機(jī)直接反轉(zhuǎn)。所以我的調(diào)試順序永遠(yuǎn)是第一步抓角度波形確認(rèn)旋轉(zhuǎn)方向和零位第二步才談電流環(huán)。有傳感器的FOC直接讀編碼器角度乘以極對數(shù)無感FOC靠反電動勢觀測器估計(jì)不管哪種方案角度這條線如果沒打通后面調(diào)得再久也是白費(fèi)。2. 一條完整的FOC鏈路從ADC到SVPWM到底走了多少步每個PWM周期內(nèi)FOC做的事情可以壓縮成一條固定順序的鏈路采樣相電流、偏置校正、坐標(biāo)變換、電流環(huán)PI、逆變換、SVPWM生成六路PWM。初學(xué)者最容易把SVPWM理解成生成正弦波的一種調(diào)制方式其實(shí)它只是一套把αβ坐標(biāo)系下的電壓指令翻譯成逆變器開關(guān)序列的規(guī)則。下面把這條鏈路一步步拆開。2.1 Clark與Park靜止坐標(biāo)和旋轉(zhuǎn)坐標(biāo)的切換Clark變換把三相靜止坐標(biāo)系變換到兩相靜止坐標(biāo)系。采用等幅值變換且在星形連接、三相平衡的前提下工程里最常用的簡化公式是iα iaiβ (1 / √3) * (ib - ic)如果三相不平衡或者在三角形連接下需要用完整公式包括ia、ib、ic三項(xiàng)的系數(shù)別為了一點(diǎn)運(yùn)算量犧牲魯棒性。Park變換把兩相靜止坐標(biāo)變換到兩相旋轉(zhuǎn)坐標(biāo)公式如下id iα * cos(θe) iβ * sin(θe)iq -iα * sin(θe) iβ * cos(θe)這個符號約定不是唯一的但一定要和逆Park變換保持配套。我建議統(tǒng)一用上面的約定并規(guī)定iq為正時對應(yīng)正向電磁轉(zhuǎn)矩。逆Park變換是這樣的vα vd * cos(θe) - vq * sin(θe)vβ vd * sin(θe) vq * cos(θe)注意PI輸出得到的是vd和vq它們不是直接加在電機(jī)端線上而是要經(jīng)過逆Park變換變成αβ坐標(biāo)系下的分量再送到SVPWM環(huán)節(jié)。這個PI輸出電壓指令、逆變器去執(zhí)行電壓指令的層次關(guān)系一定要清楚否則很容易把SVPWM和逆變器概念攪在一起。2.2 SVPWM的扇區(qū)判斷與矢量作用時間計(jì)算逆變器有六個開關(guān)管同一橋臂上下管不能同時導(dǎo)通只看上管狀態(tài)的話八個基本開關(guān)狀態(tài)里包含六個有效矢量U1到U6和兩個零矢量U0、U7。這六個有效矢量把平面分成六個扇區(qū)SVPWM要解決兩個問題判斷參考電壓矢量落在哪個扇區(qū)以及在這個扇區(qū)里讓相鄰的兩個矢量各作用多少時間。扇區(qū)判斷有現(xiàn)成做法根據(jù)vα和vβ計(jì)算三個中間量U1 vβU2 -vβ √3 * vαU3 -vβ - √3 * vαU1大于0時A記為1U2大于0時B記為1U3大于0時C記為1N A 2B 4C。根據(jù)N值就能映射出實(shí)際扇區(qū)這個映射我在DSP和普通MCU的FOC庫里都見過只是命名和符號略有差異核對一次自己手上的矢量圖就行。確定扇區(qū)后一種直觀且不易出錯的矢量作用時間計(jì)算方式是用幾何法。先求參考電壓矢量的幅值Umag和角度θ再求它在當(dāng)前扇區(qū)內(nèi)的相對角度γ于是相鄰兩個矢量的作用時間分別是T1 √3 * Umag * sin(60° - γ) * Ts / UdcT2 √3 * Umag * sin(γ) * Ts / UdcT0 Ts - T1 - T2就是零矢量作用時間。如果T1加T2已經(jīng)超過Ts說明進(jìn)入了過調(diào)制區(qū)必須按比例同時縮小T1和T2。這個飽和度處理一定要放在寫入PWM比較寄存器之前否則生成出來的占空比可能超過定時器周期波形直接亂套。有人會問為什么用這種帶sin的計(jì)算而不是網(wǎng)上常見的X、Y、Z查表法其實(shí)那些查表法本質(zhì)上就是把上面的三角函數(shù)公式按六個扇區(qū)展開后的代數(shù)化簡為了省掉FPU上的sin和atan2運(yùn)算。如果你的主控帶FPU幾何法完全夠用而且不容易寫錯如果是不帶FPU的8位或者低端MCU再去用查表法。實(shí)際工程里追求的是可維護(hù)性和不出錯不是把代碼寫得越繞越好。2.3 一個可以照著寫的FOC主循環(huán)偽代碼把整條鏈路串起來控制中斷里做的事情就是下面這個固定流程可以當(dāng)作模板來用。每個PWM周期進(jìn)入一次頻率通常取10kHz到20kHz。// 每個PWM周期Ts內(nèi)執(zhí)行一次 void FOC_ISR(void) { // 1. 讀取ADC采樣結(jié)果ia、ib ia ADC_GetChannel(ADC_CH_A); ib ADC_GetChannel(ADC_CH_B); ic -(ia ib); // 2. 偏置校正 ia - ia_offset; ib - ib_offset; // 3. 角度更新有編碼器時直接用無感時用觀測器結(jié)果 theta omega * Ts; // 4. Clark變換 i_alpha ia; i_beta (1.0f / SQRT3) * (ib - ic); // 5. Park變換 id i_alpha * cos(theta) i_beta * sin(theta); iq -i_alpha * sin(theta) i_beta * cos(theta); // 6. 電流環(huán)PI需要做輸出限幅和反飽和處理 vd PI_Update(pid_d, id_ref, id); vq PI_Update(pid_q, iq_ref, iq); // 7. 逆Park變換 v_alpha vd * cos(theta) - vq * sin(theta); v_beta vd * sin(theta) vq * cos(theta); // 8. SVPWM扇區(qū)判斷、計(jì)算比較值、更新定時器 svpwm_update(v_alpha, v_beta); }這套偽代碼是FOC的最小全集。實(shí)際項(xiàng)目里還要在鏈路上掛速度環(huán)、弱磁控制、MTPA、死區(qū)補(bǔ)償、故障保護(hù)甚至觀測器更新但無論加多少東西主鏈路的相對順序不要亂動。我見過有人把PI輸出限幅漏了結(jié)果積分瘋狂累加一恢復(fù)指令電機(jī)猛沖一下這種問題在代碼評審里一定要盯住反飽和處理。3. 電流環(huán)設(shè)計(jì)與PI整定先算后調(diào)再不行就掃電流環(huán)是FOC的內(nèi)環(huán)速度環(huán)再漂亮內(nèi)環(huán)帶寬跟不上外環(huán)全白搭。很多初學(xué)者一上來就亂試PID三個參數(shù)我強(qiáng)烈不建議這么做。電流環(huán)的對象是一階R-L電路PI參數(shù)完全可以先按電機(jī)參數(shù)估出一個能直接跑的初值再用示波器微調(diào)。3.1 用電機(jī)參數(shù)算出PI初值表貼式永磁同步電機(jī)的d-q軸電壓方程在忽略耦合項(xiàng)并做一定簡化后可以寫成vd R * id L * did/dtvq R * iq L * diq/dt ω * ψfd軸和q軸本質(zhì)上都是R-L一階慣性對象電流環(huán)PI開環(huán)傳遞函數(shù)和電機(jī)傳遞函數(shù)相乘后如果把PI零點(diǎn)放在電機(jī)極點(diǎn)位置也就是滿足Ki / Kp R / L那么閉環(huán)就近似成一階慣性環(huán)節(jié)開環(huán)增益Kp / L直接決定電流環(huán)帶寬。于是估算公式很簡單Kp L * ωcKi R * ωc其中ωc是期望的電流環(huán)帶寬單位是rad/s。舉個例子一臺小型無人機(jī)電機(jī)相電阻R是0.25Ω相電感L是35μH想把電流環(huán)帶寬做到3000rad/s也就是大約477Hz那么Kp 35e-6 * 3000 0.105Ki 0.25 * 3000 750。單位分別是V/A和V/(A·s)。PWM頻率20kHz時Ts只有50微秒電流環(huán)帶寬建議取1000到3000rad/s。超過5000rad/s后會非常難穩(wěn)因?yàn)閿?shù)字控制本身有1到2個PWM周期的延遲帶寬拉太高相位裕度會快速掉光表現(xiàn)為高頻抖動和噪音。這個公式估算出來的初值只要電感誤差不是特別離譜通常已經(jīng)能穩(wěn)定運(yùn)行接下來再用波形去修正。3.2 實(shí)測調(diào)參時讓波形開口有了初值后不建議直接帶著負(fù)載調(diào)最實(shí)用的做法是鎖軸調(diào)試。把電機(jī)軸機(jī)械鎖死電流環(huán)給定一個iq階躍用示波器看實(shí)際iq波形。電流環(huán)作為一階系統(tǒng)階躍理論上不應(yīng)該超調(diào)所以看到超調(diào)通常意味著環(huán)路延遲補(bǔ)償不到位或采樣噪聲過大。我把常見的現(xiàn)象和調(diào)整方向總結(jié)在下面這張表里實(shí)際調(diào)試時可以對著排查現(xiàn)象可能原因調(diào)整方向響應(yīng)太慢iq像斜坡一樣慢慢爬Kp偏小帶寬不夠增大Kp保持Ki/Kp比例不變階躍出現(xiàn)明顯超調(diào)和振鈴環(huán)路延遲導(dǎo)致相位裕度不足整體降低增益或者增大PWM頻率縮短Ts穩(wěn)態(tài)有小幅高頻抖動采樣噪聲或零漂檢查采樣時刻、偏置校準(zhǔn)必要時加一階低通指令方向切換時沖擊大PI輸出限幅或積分飽和檢查限幅邏輯加入反飽和處理注意一個反直覺的點(diǎn)電流環(huán)出現(xiàn)超調(diào)時很多人下意識去減小Kp但如果是相位裕度不足引起的減小Kp確實(shí)能穩(wěn)定代價是帶寬變低、動態(tài)變慢。我一般會在保證Ki/Kp R/L的前提下整體縮放增益把帶寬壓到一個穩(wěn)定且有余量的值然后觀察dq軸電流在階躍下的表現(xiàn)。d軸電流階躍比q軸更干凈因?yàn)閐軸沒有反電動勢項(xiàng)干擾所以調(diào)參時先看id回路的波形會更直觀。3.3 閉環(huán)帶寬與延遲預(yù)算數(shù)字FOC從采樣到PWM更新天然存在延遲ADC采樣需要時間算法計(jì)算需要時間占空比更新通常要等下一個PWM周期才能生效。這個總延遲大約1到2個PWM周期直接影響電流環(huán)能實(shí)現(xiàn)的最高帶寬。工程上用經(jīng)驗(yàn)公式粗估帶寬上限大約在1/(3Ts)附近20kHz PWM時約6600rad/s實(shí)際建議留足裕量只用到一半左右。也就是說把PWM頻率從8kHz提到16kHz或20kHz不只是讓波形更細(xì)膩而是直接給電流環(huán)爭取了帶寬空間。高帶寬的電流環(huán)能讓外環(huán)速度環(huán)更穩(wěn)定也讓無感觀測器在更高動態(tài)下不失步。所以設(shè)計(jì)FOC系統(tǒng)時PWM頻率通常是先定好的約束條件電流環(huán)帶寬跟著PWM頻率走速度環(huán)帶寬再比電流環(huán)帶寬低一個數(shù)量級左右這樣整個級聯(lián)系統(tǒng)才有足夠的穩(wěn)定裕度。4. 無感FOC從靜止到高速啟動流程和過渡邏輯無感FOC不用編碼器也不用霍爾硬件成本最低但代價是低速時反電動勢太小觀測器幾乎沒法用。所以從靜止到高速必須拆成幾個階段每個階段的控制策略都不同。這一步是很多無感方案一轉(zhuǎn)就飛的重災(zāi)區(qū)。4.1 初始位置預(yù)定位還是高頻脈沖注入轉(zhuǎn)子靜止時如果不知道磁極方向直接給一個旋轉(zhuǎn)磁場輕載下也許能轉(zhuǎn)起來重載或帶機(jī)械設(shè)備時大概率反轉(zhuǎn)或堵轉(zhuǎn)。工程上最簡單可靠的做法是預(yù)定位也叫alignment給定一個固定的d軸電流比如0.5到1倍額定電流持續(xù)200到500毫秒讓轉(zhuǎn)子被定子磁場強(qiáng)行拉到已知角度。這個方法的缺點(diǎn)很直白啟動瞬間電機(jī)會先動一下對靜摩擦小的水泵、風(fēng)機(jī)沒影響但精密傳動或壓縮機(jī)這類不允許反轉(zhuǎn)的應(yīng)用就不行。如果要求靜止啟動且不能有明顯位移就得用高頻信號注入法。向估計(jì)的d軸注入高頻電壓信號利用d-q電感差異帶來的電流響應(yīng)差異來判斷轉(zhuǎn)子位置。這個方案實(shí)現(xiàn)復(fù)雜度和計(jì)算量都高不少很多無感算法只在低速段用高頻注入中高速切換回反電動勢觀測器。我的選型習(xí)慣是允許啟動瞬間動一下用預(yù)定位要求靜止啟動優(yōu)先上高頻注入介于兩者之間的先用預(yù)定位跑通整個閉環(huán)鏈路再升級到注入法。4.2 開環(huán)強(qiáng)拉階段的電流控制有了初始位置接下來進(jìn)入開環(huán)強(qiáng)拉階段。所謂開環(huán)指的是控制用的角度不來自觀測器而是來自軟件積分器生成的給定電頻率ωe。這個頻率會按照預(yù)設(shè)斜坡從零往上爬同時電流指令幅值也從啟動值逐步提升。即使角度是假的電流環(huán)仍然正常工作d-q軸坐標(biāo)系跟著軟件角度旋轉(zhuǎn)把真實(shí)電流強(qiáng)行拽成期望的id和iq。這個階段最關(guān)鍵的是斜坡速率。電頻率增加太快轉(zhuǎn)子實(shí)際速度跟不上就會出現(xiàn)失步電流瞬間失控太慢又會讓啟動過程顯得拖沓。加速度斜率主要看負(fù)載慣量我做過的一個風(fēng)機(jī)項(xiàng)目里電頻率每秒加15Hz左右約1秒內(nèi)從0拉到15Hz電頻率帶負(fù)載實(shí)測電流波動很小。如果設(shè)備有大慣量負(fù)載斜坡要更緩必要時分段處理先慢速建立電流再逐漸提升頻率最后在切換點(diǎn)附近把加速度進(jìn)一步調(diào)小。4.3 切換閉環(huán)時如何避免咯噔一聲無感FOC最驚心動魄的時刻就是開環(huán)強(qiáng)拉切換到閉環(huán)觀測器的那一下。切換瞬間如果角度跳變電流環(huán)看到的坐標(biāo)系突然轉(zhuǎn)過一個角度電流沖擊會非常劇烈輕則電機(jī)咯噔一聲重則過流保護(hù)觸發(fā)。我的做法是讓觀測器從開環(huán)階段就一直運(yùn)行只估計(jì)不參與控制。在強(qiáng)拉過程中持續(xù)比較開環(huán)給定角度θ_open和觀測器估計(jì)角度θ_obs使用一個低成本的邏輯兩個角度的差值要先經(jīng)過2π跳變處理變成連續(xù)差值再判斷是否小于閾值比如5度以內(nèi)并且維持一小段時間才允許切換。切換時不要硬切而是做一個軟過渡窗口控制角度θ_ctrl (1-k) * θ_open k * θ_obsk從0平滑變化到1窗口持續(xù)幾十到幾百毫秒。這樣即使兩個角度有一點(diǎn)殘余誤差電流沖擊也會被平滑掉而不是瞬間全部接過來。切換完成后速度環(huán)才真正接管把速度指令和觀測器速度估計(jì)做閉環(huán)。整個啟動過程中電流環(huán)一直在線所以最怕的不是電流環(huán)不穩(wěn)而是角度源切換那一瞬間的坐標(biāo)系錯動。把這個過渡做平滑了無感啟動的成功率會大幅提升。5. 實(shí)際工程中容易忽略的坑采樣、死區(qū)、零漂寫完算法鏈路和啟動邏輯再聊幾個我在實(shí)際調(diào)試中踩過、也幫別人排查過的問題。這些問題單看都不難但藏在波形異常背后時很容易讓人在PI參數(shù)上白費(fèi)幾天時間。5.1 電流采樣時刻到底該選在哪最常用的低壓方案是雙電阻下橋臂采樣也就是在兩個下管導(dǎo)通時通過采樣電阻上的壓降獲得相電流。采樣時刻要選在下管導(dǎo)通區(qū)間的穩(wěn)定中點(diǎn)通常就是PWM計(jì)數(shù)器到達(dá)周期值或零點(diǎn)的時刻對應(yīng)三角載波的頂點(diǎn)。這時三相下橋臂在七段式調(diào)制里都處于導(dǎo)通或續(xù)流狀態(tài)采樣窗口最大電流紋波也最小ADC采出來的值最有代表性。如果采樣時刻沒選好正好落在開關(guān)沿附近ADC結(jié)果會混入振鈴和開關(guān)噪聲。比較詭異的一種現(xiàn)象是空載時電流波形很干凈一加載就全是毛刺很多人以為是干擾加濾波、換地線折騰半天最后發(fā)現(xiàn)是占空比增大把采樣窗口擠到了開關(guān)沿附近。解決思路不是加濾波器而是確認(rèn)ADC觸發(fā)源由定時器同步觸發(fā)并且采樣保持時間足夠而不是用軟件延時去碰運(yùn)氣。單電阻采樣方案更復(fù)雜一個PWM周期里的電流信息要靠多個采樣點(diǎn)重構(gòu)在低占空比和高占空比區(qū)域都存在天然盲區(qū)小型電機(jī)項(xiàng)目里能用雙電阻或三電阻采樣就不要為了省一個采樣電阻去選單電阻方案。5.2 偏置校準(zhǔn)為什么必須開機(jī)做電流采樣鏈路的運(yùn)放偏置不可能精準(zhǔn)為零。偏置不消除id和iq里會始終疊加一個固定偏置電機(jī)在零指令時也可能有電流表現(xiàn)為空載發(fā)熱、輕微抖動甚至低速時有一點(diǎn)點(diǎn)動靜。這個問題和PI參數(shù)沒有關(guān)系所以很多人調(diào)參數(shù)調(diào)到頭也解決不了。正確的做法是在PWM禁止輸出、電機(jī)不供電的狀態(tài)下多次采樣電流通道取平均把結(jié)果保存為偏置值。注意要在上電一段時間、電源穩(wěn)定之后再校準(zhǔn)如果環(huán)境溫度變化大最好定期重校。我遇到過一次很隱蔽的問題換了運(yùn)放芯片之后零漂比原來大了幾十毫安空載電流波形看起來還正常但帶上負(fù)載后力矩波動明顯。排查到最后才發(fā)現(xiàn)是偏置變了從那以后我都在初始化流程里加開機(jī)自校準(zhǔn)并保留運(yùn)行中空閑時定時重校的接口。5.3 死區(qū)補(bǔ)償和調(diào)制策略的配合死區(qū)是防止橋臂直通故意插入的等待時間但它會造成輸出電壓誤差和電流波形畸變。死區(qū)時間固定時誤差大小與電流方向相關(guān)電流方向?yàn)檎龑?shí)際輸出電壓會低于指令方向?yàn)樨?fù)實(shí)際輸出電壓高于指令。低速輕載時電流接近零的區(qū)域會出現(xiàn)平臺畸變聽上去像電機(jī)噪音變大轉(zhuǎn)矩脈動明顯增加。死區(qū)補(bǔ)償?shù)挠?jì)算式很簡單補(bǔ)償電壓為v_comp -sign(i) * Tdead * Udc / Ts實(shí)現(xiàn)時方向判斷很關(guān)鍵。電流接近零時sign()會來回跳如果盲目補(bǔ)償補(bǔ)償量反而成了擾動源。我習(xí)慣加一個滯回或者零區(qū)閾值電流絕對值小于某個門檻時不補(bǔ)償超過門檻才按方向補(bǔ)償。另外一個容易忽略的點(diǎn)是死區(qū)補(bǔ)償要和調(diào)制策略配合七段式SVPWM和五段式DPWM的零矢量插入方式不同死區(qū)誤差分布也不一樣切換調(diào)制策略時必須重新驗(yàn)證補(bǔ)償參數(shù)。最后說說我的實(shí)際體會。FOC調(diào)通的關(guān)鍵不在公式背得多熟而在能不能把每個環(huán)節(jié)的波形拿過來和理論對照。我調(diào)過的每一套FOC方案幾乎都經(jīng)歷過電流震蕩、啟動反轉(zhuǎn)、切換沖擊這些必經(jīng)之路每次排查問題按這個順序來先懷疑角度、再懷疑采樣、最后才懷疑控制器參數(shù)能省掉大量無效勞動。如果你正被某個電流震蕩折磨可以先把轉(zhuǎn)子機(jī)械鎖死單獨(dú)調(diào)電流環(huán)內(nèi)環(huán)穩(wěn)了再去碰速度環(huán)和無感切換。這個流程我反復(fù)用十次里有九次能快速定位問題。FOC本質(zhì)上不是什么高深莫測的算法它只是一套需要耐心對待坐標(biāo)變換和控制時序的工程實(shí)踐把主鏈路順序和每個環(huán)節(jié)的物理意義都弄清楚后剩下的就是按部就班地調(diào)、測、驗(yàn)證。