數字運動控制方法可在機器人系統中精確調節電動機和執行器驅動末端執行器的運動和定位。然而,在實踐中,開發基于傳統比例積分(PI)控制器的運動控制系統的工程師通常會發現他們的項目因為難以調整敏感的控制器參數而停滯不前。更有效的方法可降低調諧復雜度,同時在各種工作條件下提供穩定的性能。
低成本,高性能微控制器推動了數字電機控制的迅速發展,能夠廣泛應對通過軟件控制的操作條件。通過在軟件中設計PI控制器,工程師可以創建具有最少數量組件的高響應電機控制系統。然而,在實踐中,找到最佳的PI控制器參數集給開發人員帶來了重大挑戰。很多時候,工程師發現每個電機的獨特特性(以及相關的電機控制系統實現)使確保電機在不同速度和負載下穩定運行的任務變得非常復雜。因此,電機控制開發團隊發現自己被迫擴展項目進度并解決微妙的調整問題。
PI控制器挑戰
傳統PI控制器使用生成的控制回路用于減少某些過程中預期值和測量值之間誤差的輸出。在控制回路的串行形式(圖1)中,Kb設置PI控制器的零點,而Ka設置閉環系統響應的帶寬。
圖1:在傳統PI控制器的串行形式中,工程師必須找到其零(Kb)和帶寬(Ka)的最佳設置 - 經常延遲運動控制項目的過程。 (圖像來源:德州儀器)
在電機控制應用中,PI控制器優化的復雜性變得更加復雜,因為工程師需要控制電流來控制速度。在典型的電機速度控制回路中,工程師將使用兩個PI控制器 - 一個在內環中控制電機電流,另一個在外環中控制電機速度(圖2)。當電機速度低于指令值時,外環需要更多電流;內環糾正電機電流以匹配所需的值。
圖2:典型的速度控制回路使用兩個PI控制器來控制電機電流和速度本身,從而使尋找最佳控制器參數的任務更加復雜。 (圖像來源:德州儀器)
實際上,在整個運行條件下實現穩定的性能變成了一項復雜,耗時的任務。工程師需要調整多個參數以針對特定速度和負載工作點調整控制器。然而,特定的調整解決方案可能只能解決非常小的速度和負載范圍。因此,工程師可能會發現具有不同速度和負載點的高動態系統可能需要為每個點調整PI控制器,從而進一步延遲項目進度。
高級控制算法
TI InstaSPIN-MOTION解決方案為數字電機控制設計提供了一種簡單明了的方法。作為InstaSPIN-MOTION的核心,LineStream Technologies的SpinTAC可在系統的動態速度,位置和負載范圍內提供強大的控制。這種專有方法提供先進的速度和位置控制,并具有主動干擾抑制控制(ADRC)。
ADRC適應電機模型的高度不確定性。它將未建模的電機動力學和系統的不良行為視為可以估計,拒絕或糾正的干擾。這允許SpinTAC控制器通過一個調整參數(稱為帶寬)控制各種位置,速度和負載,這些參數決定了系統的剛度,并決定了系統拒絕干擾的積極程度。
當設計人員通過這種調諧方法增加控制器的帶寬時,對扭矩干擾的響應變得更快并且具有更小的過沖(圖3)。如果帶寬設置得太高,則當從系統中消除扭矩干擾時,系統開始圍繞目標速度振蕩。設計者只需找到帶寬,當扭矩消除時,該帶寬導致目標速度值附近的最小振蕩。
圖3:SpinTAC調整只需要設置一個參數 - 帶寬。在該示例中,理想帶寬是40rad/s。在該帶寬處,當扭矩被移除時,響應在目標速度附近表現出最小的振蕩。 (圖片來源:德州儀器公司)
簡化開發
InstaSPIN-MOTION不是處理傳統PI控制器中優化多個參數的復雜性,而是讓工程師只需設置單帶寬參數。與使用傳統PI控制器的設計相比,這種簡單而強大的方法可以顯著縮短開發時間。同時,這種方法提供的解決方案具有更少的過沖和更快的建立時間,從而最終降低了最終應用的功耗(圖4)。
圖4:響應應用的扭矩干擾,InstaSPIN比傳統的PI控制器回路明顯更快地恢復。 (圖片來源:德州儀器)
TI進一步提供了一個結合了軟件和硬件的廣泛的開發和部署平臺。 TI的MotorWare產品包括特定于器件的驅動器和支持軟件,以及完整的系統示例和技術培訓。
為了更快地部署這些設計,TI提供了包含InstaSPIN-MOTION庫的C2000 Piccolo MCU的專用版本在片上ROM和Flash中,無需額外電荷(圖5)。基于90 MIPS C28x處理內核,C2000 InstaSPIN TMS320F28069M MCU將片上InstaSPIN-MOTION電機控制軟件與完整的片上外設相結合,包括一個16通道模數轉換器(ADC),用于采集電機控制算法中使用的數據(例如,參見圖5右側的ADC輸入)。
圖5:德州儀器(TI)的TMS320F28069M MCU采用片上InstaSPIN-MOTION軟件庫,進一步簡化了運動控制系統的開發。 (圖像來源:德州儀器)
TMS320F28069M還具有8個片上增強型脈沖寬度調制器(ePWM)模塊,提供16個PWM通道。因此,工程師可以使用最少的附加組件快速設計完整的電機控制系統。 MCU的PWM可以直接驅動專用隔離柵極驅動器,如TI ISO5851(圖6)。 ISO5851具有CMOS輸入,使微控制器能夠直接驅動它們 - 與典型的基于光耦合器的柵極驅動器不同,后者需要外部電流驅動器和偏置電路來提供輸入控制信號。
圖6:與高度集成的微控制器(如TI TMS320F28069M)配合使用,CMOS隔離柵極驅動器(如TI ISO5851)使設計人員能夠創建具有最少數量附加組件的復雜電機控制系統。 (圖像來源:德州儀器)
在軟件方面,由于SpinTAC控制器算法,電機控制實現同樣簡單明了。工程師以最少的步驟配置SpinTAC速度控制,包括適當的頭文件(例如,spintac_velocity.h)以將SpinTAC軟件組件帶入應用程序。 (此示例解決了SpinTAC速度控制,但SpinTAC位置控制配置遵循類似的方法。)
然后開發人員在主源文件中聲明全局結構:
ST_VelCtl_t stVelCtl;//SpinTAC速度控制器對象
ST_VELCTL_Handle stVelCtlHandle;//SpinTAC速度控制器句柄
在應用程序的主要功能中,開發人員會將配置變量初始化為其默認值。對于許多電機,此配置通常包括以下變量:
復制
ST_VelCtl_t stVelCtl;//SpinTAC速度控制器對象
ST_VELCTL_Handle stVelCtlHandle;//SpinTAC速度控制器句柄
在應用程序的主要功能中,開發人員會將配置變量初始化為其默認值。對于許多電機,此配置通常包括以下變量:
//初始化SpinTAC速度控制器組件stVelCtlHandle = STVELCTL_init(& stVelCtl,sizeof(stVelCtl));
//設置PU中的最大電流
_iq maxCurrent_PU = _IQ(USER_MOTOR_MAX_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A);
//速度控制器的實例
STVELCTL_setAxis(stVelCtlHandle,ST_AXIS0);
//采樣時間[s],(0,1)
STVELCTL_setSampleTime_sec(stVelCtlHandle,_IQ(ST_SPEED_SAMPLE_TIME));
//系統慣性上限(0,127.9999)和下限(0,SgiMax)限制[PU/(pu/s ^ 2)] STVELCTL_setInertiaMaximums(stVelCtlHandle,_IQ(10.0),_IQ(0.001));
//系統控制信號高(0,OutMax)和低[OutMin,0]限制[PU] STVELCTL_setOutputMaximums(stVelCtlHandle,maxCurrent_PU,-maxCurrent_PU);
//系統最大值( 0,1.0]和最小[-1.0,0]速度[pu/s] STVELCTL_setVelocityMaximums(stVelCtlHandle,_IQ(1.0),_ IQ(-1.0));
//系統上限(0,0.2/(T * 20)]和帶寬標度的下限[0,BwScaleMax]限制STVELCTL_setBandwidthScaleMaximums(stVelCtlHandle,
_IQ24((0.2)/(ST_SPEED_SAMPLE_TIME * 20.0)),_ IQ24(0.01));
//系統慣性[PU/(pu/s ^ 2)],[SgiMin,SgiMax]
STVELCTL_setInertia(stVelCtlHandle,_IQ(USER_SYSTEM_INERTIA));
//控制器帶寬比例[BwMin,BwMax]
ST VELCTL_setBandwidthScale(stVelCtlHandle,_IQ24(USER_SYSTEM_BANDWIDTH_SCALE));
//最初未啟用ST_VelCtl
STVELCTL_setEnable(stVelCtlHandle,false);
//最初ST_VelCtl未重置
STVELCTL_setReset(stVelCtlHandle,false);
在運行期間,主中斷服務程序將更新速度參考,加速度參考和速度反饋,然后以適合該部件的抽取率(在ISR_TICKS_PER_SPINTAC_TICK中指定)調用SpinTAC速度控制功能。
< p> 復制
CTRL_Obj * obj =(CTRL_Obj *)ctrlHandle;//獲取指向CTRL對象的指針
//獲取pu/s中的機械速度
_iq speedFeedback = EST_getFm_pu(obj-> estHandle);//獲取pu/s中的機械速度//更新速度參考
STVELCTL_setVelocityReference(stVelCtlHandle,
STVELMOVE_getVelocityReference(stVelMoveHandle));
//更新加速參考
STVELCTL_setAccelerationReference(stVelCtlHandle,
STVELMOVE_getAccelerationReference(stVelMoveHandle));
//更新速度反饋STVELCTL_setVelocityFeedback(stVelCtlHandle,speedFeedback);//運行SpinTAC速度控制器STVELCTL_run(stVelCtlHandle);
//從SpinTAC速度控制器獲取扭矩參考
iqReference = STVELCTL_getTorqueReference(stVelCtlHandle);
//設置來自SpinTAC速度控制的Iq參考
CTRL_setIq_ref_pu(ctrlHandle,iqReference);
開發人員可以使用TI C2000 Piccolo F28069M LaunchPad快速啟動電機控制開發,該產品具有所有硬件和功能。基于F2806x微處理器開發應用程序所需的軟件。 TI還提供完整的電機控制解決方案套件,如高壓電機控制套件,該套件全面介紹了對最常見類型的高壓三相電機的控制,包括交流感應(ACI),無刷直流(BLDC)和永磁同步電機(PMSM)。 TI還提供補充套件,如BLDC電機套件,其中包括帶內置霍爾效應傳感器的無刷直流電機,可直接與電機控制套件軟件配合使用。
結論
使用傳統PI控制器的傳統電機控制設計由于調整這些控制器的復雜過程而可能面臨嚴重的延遲。 TI的InstaSPIN-MOTION內置于專用微控制器中,可將調諧功能簡化為單一參數,為設計人員提供簡單性和穩定性的組合,使其成為機器人系統等多種狀態轉換或體驗動態變化等應用的理想選擇。
-
mcu
+關注
關注
146文章
17316瀏覽量
352226 -
控制器
+關注
關注
112文章
16444瀏覽量
179032 -
電動機
+關注
關注
75文章
4128瀏覽量
96849
發布評論請先 登錄
相關推薦
評論