STM32 電機教程 28 - ST MCLIB實戰之 位置閉環控制

前言

      ST MotorControl Workbench 生成的工程默認實現了電機的電流閉環和速度閉環控制,有些應用場合需要對電機的位置也實現閉環控制,如舵機,伺服系統等,本節就給大家介紹一下基於ST MotorControl Workbench生成的電機工程,如何實現位置閉環控制。

      基於ST MotorControl Workbench生成的電機工程,電流(Iq,id)環的實現在mc_tasks.c文件FOC_CurrController函數中的兩個PI_Controller接口調用。其函數調用關係爲:ADC1_2_IRQHandler –》TSK_HighFrequencyTask -》CurrController -》PI_Controller。

電機的速度環的實現是基於電流環來實現的,即電流環是內環,速度環是外環,速度環的輸出是電流環的輸入:

在ST電機庫中,速度環的實現在speed_torq_ctrl.c中的STC_CalcTorqueReference函數中,函數調用關係爲:SysTick_Handler-》MC_RunMotorControlTasks-》MC_Scheduler-》TSK_MediumFrequencyTaskM1-》(RUN)FOC_CalcCurrRef -》STC_CalcTorqueReference-》PI_Controller。

其於上面對ST MotorControl Workbench生成的電機工程分析,給工程加入位置環也可以像速度環一樣的方式實現,即位置環爲外環,電流環爲內環來兩環串聯方式實現位置閉環控制,當然也可以位置環爲外環,速度環爲中間環,電流環爲內環三環串聯方式實現位置閉環控制。本節給大家介紹第一次即位置環爲外環,電流環爲內環來兩環串聯方式實現位置閉環控制的具體操作:

 

在三環控制中,不可避免的會涉及到加速度的計算,正常控制過程爲:加速、勻速、減速、定位過程。

那麼會涉及到加速度以及定位階段的控制,這邊我們可以按照加速度與速度差成反比,而定位階段可以直接設定速度爲0但是實際使用過程中我們會發現直接的速度模式在定位階段力量限。

方法一:PID 需要特別設定,更能夠定位到給定位置;

方法二:拋開速度環,直接力矩控制;

 實際框圖如上圖 

增加以下變量或函數用於位置環控制

 

1) 位置環PID 結構體PID_Handle_t PIDAngleHandle_M1   

2) 位置控制的結構體Position_Handle_t   

3) 位置角度誤差Position_GetErrorAngle   

4) 位置環速度參考輸出計算Position_CalcSpeedReferrence   

5) 位置環力矩參考輸出計算Position_CalcTorqueReferrence

 

具體操作爲:經工程加入事先準備好的mc_position.c和mc_position.h文件:

在mc_task.c的中頻任務函數TSK_MediumFrequencyTaskM1中增加位置環差值數據計算,根據差值計算,當差值在閾值之上的話進行速度控制,在RUN下調用函數Position_GetErrorAngle 和Position_CalcSpeedReferrence。

 

如果差值縮小到一定範圍內,則進行力矩控制,在函數FOC_CalcCurrRef中進行調用。

 

最後測試說明,要使用位置模式,需在spi_pwm_encoder.h 開啓對應的宏定義

#define POSITION_CONTROL

 

OK,本節內容到此結束,也歡迎大家留言!!最後喜歡這個公衆號的同學們記得加關注了,每天都會有技術乾貨推出!!

 

文中源碼及資料下載,微信關注 “張十三的博客” 公衆號: 在公衆號裏給十三發送 “下載|STM32 電機教程 28” 即可得到資料下載地址

 

 

 

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