|
這個測試程序顯然不是pmsm3_1的主體,但是有很多地方都不好理解,以下是蟲蟲個人的見解,可能有不對的地方,希望大家看完后能多提點意見,歡迎交流。
一, 這個程序是個開環(huán)控制,輸入量主要有3個,定子電流的d,q軸以及速度給定量speedref,這3個量實質(zhì)是通過一個電流ipark變換模塊聯(lián)系起來的,為什么這樣說呢?
因為派克變換不但需要d,q軸的分量,同時也需要旋轉(zhuǎn)坐標(biāo)軸的實時角度theta,而Theta角在閉環(huán)的時候可以通過觀測器或者傳感器得到,但是在開環(huán)的條件下,這個角度又有他另外的作用和意義了,那就是要配合你的速度給定量,把你的速度給定量轉(zhuǎn)化成的實時角度。
其實道理也不復(fù)雜,角速度和角度之間的轉(zhuǎn)換無非是一個比例和累加的關(guān)系,那就是拿你的當(dāng)前角度加上采樣周期內(nèi)角度的增量,而對于恒給定的系統(tǒng)來說也是個常量,這個常量就是采樣周期乘上速度。
二, 下面說說子程序rmp_cntl.c的主要作用,該程序?qū)嶋H上是一個用階梯波模擬正弦波的函數(shù)發(fā)生器,為什么要產(chǎn)生這個信號呢,這個信號的作用是什么呢?
我個人認為:這個階梯波的發(fā)生器產(chǎn)生的是系統(tǒng)的輸入信號,確切的說是速度給定信號,為什么要用這么一個波做為速度給定信號呢?不是已經(jīng)給定了一個speedref了么?
我的理解是這樣的:如果你僅僅把speedref作為給定而不做任何處理,那么這個程序就是一個開環(huán)調(diào)速的應(yīng)用程序了,而本程序的作者的目的不是做一個一般的應(yīng)用程序,而是一個測試程序,什么是測試程序呢,測試程序就要制造出各種輸入信號而看看咱們設(shè)計的系統(tǒng)會有怎么樣的表現(xiàn),因此這個測試程序就要加上測試信號,測試信號的種類有很多,在電機控制系統(tǒng)中比較常見的就是正弦信號,通過給系統(tǒng)加上一個正弦信號,看看輸出信號的幅度和相位會不會失真。(對于線形系統(tǒng),這個輸出信號也是三角函數(shù)波)
而我們給定的speedref在這時就變成了TargetValue,也就是階梯波的最值。
三, 最后,著重說下子程序rampgen.c。這個程序就是個斜坡函數(shù)生成器,角度的作為輸出實際上是一個斜坡信號,當(dāng)你的角度增大到360度的時候又要從0開始循環(huán),而不是從361度再繼續(xù),因為計算機的三角函數(shù)系統(tǒng)只有這360以內(nèi)的數(shù),就算查表也是這樣的情況,不然要占用多大空間才足夠呢!
下面的問題是,我每個中斷周期斜坡信號要增大多少呢?這主要由3個因素決定:1,給定的速度,本測試程序的速度是由rmp_cntl.c給的階梯波信號;
2,中斷周期的時間;
3,電機的基準(zhǔn)頻率:這個頻率一般就是調(diào)速的上限了,再增大就要弱磁了。
后兩個因素不是很直接,也沒有很嚴(yán)格的數(shù)量關(guān)系,但是這個程序的作者為了讓該程序能適應(yīng)不同的電機和硬件,把這兩個因素考慮了進來,如果別人想用其他型號的電機,只需要在某些頭文件或者主程序里修改這些參數(shù)就不必在修改其他程序里相關(guān)的量了。
在該程序內(nèi),后兩個量的乘積實際上就是系數(shù)StepAngleMax。他影響了斜坡信號在一個中斷周期內(nèi)增大的幅度。
最后一個問題,那就是為什么要把Angle限制在正負1之間內(nèi),這個問題有的同學(xué)說是因為他是三角函數(shù),我個人認為這樣說不大正確,建議關(guān)注這個的朋友看看IQ_math的說明文擋,看看里面對于_IQsinPU函數(shù)定義域的說明。
這樣你就明白為什么了
好了就說到這里,有什么問題可以聯(lián)系我的QQ。歡迎!
將運動控制進行到底!
|
|