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