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” :
?
?
總結
以上是生活随笔為你收集整理的STM32 电机教程 21 - 基于ST MCLIB无感FOC 与 有感FOC 代码差异分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ST CUBEMX 修改MCU型号
- 下一篇: STM32 电机教程 22 - 基于ST