STM32 電機教程 21 - 基於ST MCLIB無感FOC 與 有感FOC 代碼差異分析

前言

磁場定向控制又稱矢量控制(FOC), 本質上爲控制定子電流的幅度和相位,使之產生的磁場和轉子的磁場正交,以產生最大的扭矩. PMSM的磁場定向控制框圖如下圖所示:

第19、20講分別實現了基於NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH及MotorControl Workbench的單電阻FOC有感(hall)算法及單電阻FOC無感並都讓電機運轉起來。本節將重點對比一下這兩種算法在代碼實現上的具體差別。

本節將用到Beyond Compare文件對比分析工具,對第19、20講的代碼進行差異分析。用文件夾比對方式將第19、20講的代碼加載到Beyond Compare:

從上面的兩個對比結果圖可以看到,有感FOC算法與無感FOC算法在代碼上差異區主要集中在INC和SRC兩個文件夾中,其中inc文件夾中的主要不同集中在drive_parameters.h、main.h、mc_config.h、parameters_conversion.h、pmsm_motor_parameters.h五個文件;Src文件夾中的主要不同集中在main.c、mc_config.c、mc_tasks.c、stm32f1xx_hal_msp.c、stm32f10x_mc_it.c、user_interface.c六個文件中:

drive_parameters.h中主要是工程配置時有些差數配置不一樣:

main.h中差異主要體現在無感foc(右側)算法沒有對HALL傳感器引腳的定義:

 

 

 

mc_config.h的差異:

parameters_conversion.h的差異主要在:

pmsm_motor_parameters.h差異主要體現在電機配置時對電機參數提輸入不同:

 

main.c中的差異主要體現在使用有感(HALL)的FOC算法多了一些硬件定時器的定義初始化配置等函數實現:

mc_config.c文件中的差異更能體現去有感FOC算法與無感FOC算法之間的差異:

mc_tasks.c兩種算法的真正核心差異集中體現在mc_tasks.c,清楚該文件間差異及其用用,通過修該文件,可以將無感FOC變換成有感(如絕對式磁編碼器,hall ,hall+增量編碼器),首先是在MCboot函數中:

在TSK_MediumFrequencyTaskM1中頻任務中調用不同的速度計算函數,和不同的狀態中具體操作也有點差別:

在TSK_HighFrequencyTask高頻任務中也有一些差異:

最後在mc_lock_pins函數中有感FOC算法多了對HALL傳感器引腳的保護操作:

stm32f1xx_hal_msp.c中有感FOC模式下多了對定時器及HALL傳感器引腳的配置工作:

stm32f10x_mc_it.c中,有感FOC算法中多了SPD_TIM_M1_IRQHandler(定時器2)中斷響應函數:

user_interface.c中無感FOC算法中多了多無法算法變量讀取與設置功能接口的支持:

到此,基於ST MCLIB的有感(hall)FOC算法與無感FOC算法代碼實現差異分析就算完成了,下一節我們將在ST MCLIB無感FOC算法代碼基礎上進行修改,將其變成有感(HALL)FOC算法,讓電機成功運轉。本本節內容到此結束,也歡迎大家留言!!最後喜歡這個公衆號的同學們記得加關注了,每天都會有技術乾貨推出!!

 

文中源碼及資料下載,關注十三公衆號:

在公衆號裏給十三發送 “下載|STM32 電機教程 21” :

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章