MATLAB到底有多厲害?
效果不好就在代碼里改來(lái)改去,暈暈乎乎調(diào)了一周進(jìn)展也不大。這種情況就是陷入了調(diào)參數(shù)的怪圈,惡性循環(huán)進(jìn)而打擊自信,進(jìn)步也很緩慢。
后來(lái)學(xué)會(huì)了simulink,才明白學(xué)習(xí)FOC一定要配合MATLAB,進(jìn)步快很多。
正文:1、理解離散系統(tǒng):
在FOC中經(jīng)常涉及到上個(gè)開(kāi)關(guān)周期的角度,電壓,或者預(yù)測(cè)下個(gè)周期的角度,電流,一般都是通過(guò)延時(shí)模塊實(shí)現(xiàn)。圖1 delay延時(shí)模塊
為什么要使用這個(gè)模塊呢?比如一般PWM比較值寄存器被改寫后都是使能了預(yù)裝載,采樣后觸發(fā)計(jì)算到比較值生效可以延時(shí)0.5個(gè)開(kāi)關(guān)周期Ts,也可以延時(shí)1個(gè)開(kāi)關(guān)周期Ts,或者1.5個(gè)Ts。不同的延時(shí)對(duì)于控制效果有什么區(qū)別呢?只需要在simulink定義延時(shí)時(shí)間即可,非常方便對(duì)比不同的方案下的區(qū)別。這種調(diào)試在實(shí)物上實(shí)現(xiàn)要復(fù)雜很多!
2、實(shí)現(xiàn)參數(shù)自整定:
把所有的環(huán)路參數(shù)放在m文件里,在運(yùn)行工程前,修改電機(jī)參數(shù),環(huán)路參數(shù)等等,先運(yùn)行m文件,可以實(shí)現(xiàn)參數(shù)自整定。要修改參數(shù)也只用改m文件,類似宏定義一樣,環(huán)路的參數(shù)自整定和這個(gè)也差不多了。圖2 m文件實(shí)現(xiàn)參數(shù)自整定
3、強(qiáng)大示波器功能:
simulink的示波器功能非常強(qiáng)大,可以不限制查看任意波形,這在實(shí)物調(diào)試中也很難做到,除非去開(kāi)發(fā)上位機(jī)配合查看,但是也有通道和數(shù)據(jù)量的限制。一般ARM M0的平臺(tái)也沒(méi)有資源去開(kāi)發(fā)上位機(jī)。圖3 相電壓和相電流
尤其是現(xiàn)在比較通用的直流側(cè)單電阻采樣波形,可以清晰看到每個(gè)扇區(qū)對(duì)應(yīng)的電流波形和單電阻波形的對(duì)應(yīng)關(guān)系:圖4 單電阻采樣波形
4、模塊化的平臺(tái),縮短開(kāi)發(fā)周期:
一般開(kāi)發(fā)一種新的觀測(cè)器,閱讀文獻(xiàn)之后,經(jīng)過(guò)simulink驗(yàn)證。在搭建好平臺(tái)之后,把觀測(cè)器,速度環(huán),電流環(huán),轉(zhuǎn)矩補(bǔ)償?shù)鹊确庋b成各自的模塊。需要驗(yàn)證哪個(gè)模塊,即進(jìn)行對(duì)應(yīng)的修改。經(jīng)過(guò)simulink驗(yàn)證的方法,基本都可以在實(shí)物中實(shí)現(xiàn)。如果simulink仿真失敗,基本就直接放棄了。一般一個(gè)新的觀測(cè)器仿真需要一到兩周,可以大大縮短開(kāi)發(fā)周期。
在搭建了完整的仿真平臺(tái)后,實(shí)物和仿真模型基本可以做到95%以上的對(duì)應(yīng),除了一些非線性相關(guān)的因素,因?yàn)樵诜抡嬷袩o(wú)法模擬,需要在實(shí)物中實(shí)現(xiàn)。對(duì)于有經(jīng)驗(yàn)的開(kāi)發(fā)人員,拿到了離散的仿真模型,基本就等于拿到了代碼。
當(dāng)然如果模型在連續(xù)域仿真,會(huì)以很大的計(jì)算量得出很好的波形,掩蓋環(huán)路中實(shí)際存在的很多問(wèn)題。畢竟控制系統(tǒng)實(shí)際是以離散的形式在計(jì)算和工作。
圖5 多個(gè)模型集成到一個(gè)框圖圖6 滑模模型,和公式一一對(duì)應(yīng)
5、s函數(shù)代碼級(jí)仿真:如果有足夠的精力,simulink是可以實(shí)現(xiàn)c語(yǔ)言代碼級(jí)仿真的。用s函數(shù)替代離散模塊,代碼放在s函數(shù)里,完全可以實(shí)現(xiàn)跟實(shí)物對(duì)應(yīng)的仿真。移植到實(shí)物中代碼也可以快速調(diào)試通過(guò)。
s函數(shù)運(yùn)行的指令是在命令窗口輸入:”mex xx.c“,xx是s函數(shù)文件名。
圖7 s函數(shù)框圖
6、在線參數(shù)變化的仿真:
一般來(lái),Ld和Lq會(huì)隨著電流出現(xiàn)飽和特性,所以可以通過(guò)m文件編程,實(shí)現(xiàn)Ld和Lq在線根據(jù)電流查表確定電感值。但是實(shí)際的無(wú)感FOC控制依然使用固定值,電機(jī)模型使用的飽和模型,這樣子可以評(píng)估無(wú)感FOC的控制方法對(duì)電感飽和是否敏感,或者對(duì)電感的敏感程度。
圖8 Ld在線查表
提供一種方法作參考:
用如下文檔里的代碼生成電感表格:https://ww2.mathworks.cn/help/physmod/sps/ref/elec_generateidealpmsmfluxdata.html
將表格導(dǎo)入如何可編輯的電機(jī)模型即可:https://ww2.mathworks.cn/help/autoblks/ref/fluxbasedpmsm.html?requestedDomain=zh
表格需要自己對(duì)應(yīng)代碼整理一下。
7、模擬MCU的運(yùn)行方式:
使用Simulink離散模塊搭建的方式,可以模擬MCU的硬件執(zhí)行的結(jié)構(gòu)。一般MCU最重要的是主頻和中斷,分別對(duì)應(yīng)Simulink的最上層執(zhí)行時(shí)間和定時(shí)執(zhí)行的中斷部分。如下圖:圖9 powergui模塊設(shè)置仿真步長(zhǎng)和類型
使用powergui模塊設(shè)置成離散模式,設(shè)置仿真步長(zhǎng)5e-7,相當(dāng)于仿真最上層是2MHz的執(zhí)行頻率,這個(gè)2M就類似于MCU的主頻,顯示,電機(jī)模型本體響應(yīng)的計(jì)算就以這個(gè)頻率執(zhí)行。
然后通過(guò)脈沖模塊設(shè)置定時(shí)觸發(fā)執(zhí)行的控制模塊,就相當(dāng)于是定時(shí)執(zhí)行的中斷:圖10 Pulse Generator模塊
使用Pulse Generator模塊,執(zhí)行周期1e-4,相當(dāng)于中斷頻率10k,控制環(huán)路都放在中斷里,就跟MCU的運(yùn)行結(jié)構(gòu)非常類似了。執(zhí)行頻率對(duì)于離散控制來(lái)說(shuō)是核心參數(shù),不同的執(zhí)行頻率仿真結(jié)果區(qū)別很大。
千萬(wàn)不要在powergui里設(shè)置成continous仿真模式,那樣會(huì)通過(guò)很高的計(jì)算頻率掩蓋環(huán)路的問(wèn)題,與實(shí)際產(chǎn)品中電機(jī)運(yùn)行狀態(tài)不符。
8、評(píng)估環(huán)路的階躍響應(yīng):
在伺服中比較常見(jiàn)的測(cè)試電流環(huán)帶寬,一般測(cè)試交流給定幅相曲線。
以階躍響應(yīng)為例,可以把電機(jī)角度固定成0,電流解耦角度和逆變角度都強(qiáng)制給0,然后電流環(huán)的Id給參考,測(cè)試Id環(huán)路的參考和反饋,即可得到節(jié)約響應(yīng)。如下圖:圖11 電流環(huán)階躍響應(yīng)
9、評(píng)估參數(shù)敏感性:
以磁鏈模型為例,當(dāng)電機(jī)模型磁鏈跟計(jì)算使用磁鏈相等時(shí),觀測(cè)角度和誤差如下:
圖12 磁鏈準(zhǔn)確時(shí)的觀測(cè)誤差
當(dāng)溫度上升,磁鏈降低到只有計(jì)算值的80%,再去比較估算角度和誤差,就能判斷控制方法對(duì)磁鏈的變化敏感程度。
圖13 磁鏈下降時(shí)的觀測(cè)誤差
總結(jié):對(duì)于研究電機(jī)控制來(lái)說(shuō),前期的主要工作放在文獻(xiàn)和仿真上,到了代碼已經(jīng)是很后期的工作了。這種工作并不是靠代碼量來(lái)決定工作進(jìn)展,也許研究了一個(gè)月就改了一行代碼卻能夠解決大問(wèn)題。
對(duì)于我來(lái)說(shuō),如果不讓我使用simulink我覺(jué)得自己就基本失業(yè)了,工作也沒(méi)有任何樂(lè)趣可言。轉(zhuǎn)電機(jī)并不是無(wú)腦的去寫代碼做實(shí)驗(yàn),而是通過(guò)simulink去打磨模型,通過(guò)模型的搭建深入理解了方法才去開(kāi)始實(shí)物階段的實(shí)驗(yàn)。要想深入理解FOC,使用MATLAB是必經(jīng)之路,沒(méi)有捷徑可走。模型對(duì)電機(jī)的詮釋是無(wú)法用實(shí)驗(yàn)來(lái)代替的。
到現(xiàn)在為止,MATLAB的功能也許我才用了不到1‰。如果單純能把MATLAB玩得很溜,我覺(jué)得年薪百萬(wàn)也不是難題。至少我的工作離不開(kāi)MATLAB。
往期文章:
基于磁鏈模型的非線性觀測(cè)器
HFI高頻注入代碼解讀
產(chǎn)品級(jí)IPMSM高頻注入低速無(wú)傳感器控制方法
作者簡(jiǎn)介:
虛懷若谷,熱愛(ài)永存!
我是轉(zhuǎn)子磁場(chǎng)定向,十年FOC開(kāi)發(fā)經(jīng)驗(yàn),精通永磁同步電機(jī)和異步電機(jī)無(wú)感控制。
可提供長(zhǎng)期技術(shù)顧問(wèn)咨詢或者項(xiàng)目開(kāi)發(fā),商務(wù)合作請(qǐng)加V: PMSM_RFO