Re: 關於課程302 MCW的Lab5程式問題請教!
|
||||
---|---|---|---|---|
中級會員
|
MCLV 各LAB中是沒有啟動Fault的功能需自行修改
另外LAB6程式是在描述如何用旋波輸出控制PMSM 其SineGen.c中SineTable的建立似乎有問題,而且依照程式的邏輯並搭配原廠馬達PHASE_ZERO 初始設定不應該在54613 不知是否有人知道相關正確答案
發表於: 2008/4/29 8:00
|
|||
|
Re: 關於課程302 MCW的Lab5程式問題請教!
|
||||
---|---|---|---|---|
資深會員
|
沒有錢上課, 單純猜測:
Q1~Q3同感, 應該是沒錯, 但感覺不一定是Q15! Q4: 還可以回授驅動電壓是否足夠, 以及回授BUS, 做除法運算, 降低漣波影響. 懂馬達跟懂控制器是兩大課題, 之間不是直接關係, 能整合者, 肯定下了很多功夫, 又何嘗願意完全分享?? 等你學會就會了解. 說個有趣現象, 以前還不會進階控制時, 也只是使用PID控制, 也是胡亂調, 也是想說, 怎麼都不願意教一下? 後來觀察結果, 既然是直接上機調的, 說穿就不值錢, 也顯露技窮之處. 然而調的好還是經驗, 但是你問他, 系統頻寬是多少? 我想講不出來的, 就是這類的. 看丟PWM的方式, 只是一般控制器方式, 尚未用到SVPWM, 不難理解才是, 控制可以很複雜, 可以很簡單, 這樣的拋磚引玉, 應該是起不了多大的漣漪!! 我想你還是單問題討論, 可能比較好一些. 例如你認為DC Motor控制簡單, 表示你已經懂線性自動控制, 但AC之類的控制是屬於非線性控制, 怎麼辦呢? 這樣範圍會小很多.
發表於: 2008/4/24 13:38
|
|||
Thanks,
Edward Lee |
||||
|
Re: 關於課程302 MCW的Lab5程式問題請教!
|
||||
---|---|---|---|---|
中級會員
|
Q1 是因為硬體電路的問題
Q2 由於程式是利用Q15格式運算,需作調整匹配,解釋起來需重A/D進來作說明 Q3 TRISF = 0xFFF7; //設定是用到RS232時規劃 TX as output Q4 DRIVER是否需要作回授給控制器部份呢, IPM需迴授過載命令或電流大小 MCLV課程上了好幾次,沒有解說程式的部分,希望可以開LAB5與LAB6的程式說明課程. 心聲告白 由於馬達控制內部用了很多數學,BLDC,PMSM,SR,ACIM不像DC MOTOR那麼簡單, 若馬達數學模型不懂很難把控制器做好,所以建議先唸一唸教課書中的電機機械. 目前業界會此方面的人都不太喜歡教人家,不知示對還是錯?連我自己也搞不太清楚WHY 但我願意分享我所了解的部分,也建議學控制器的朋友若作馬達控制需對馬達有所認識
發表於: 2008/4/24 13:14
|
|||
|
Re: 關於課程302 MCW的Lab5程式問題請教!
|
||||
---|---|---|---|---|
版主
|
在問馬達專家中,請等待!
發表於: 2008/4/23 16:13
|
|||
|
關於課程302 MCW的Lab5程式問題請教!
|
||||
---|---|---|---|---|
新會員
|
小弟上過302 MCW的課程,想請教~24V bldcm PID控制
問題1 void __attribute__((__interrupt__)) _ADCInterrupt (void) { IFS0bits.ADIF = 0; RefSpeed = (int)(((unsigned int)ADCBUF0) / 2); if (RefSpeed < 2000) RefSpeed = 2000; return; } 為何ADCBUF0要/2 RefSpeed 要給他限定 2000呢? 不太懂這樣設定影響為何? RefSpeed = ADCBUF0; 這樣不就可以了 問題2 void SixStepComm (int _Sector, int _Voltage) { if (_Voltage >= 0) { PDC1 = PDC2 = PDC3 = (unsigned int)_Voltage / 16; if (_Sector == -1) OVDCON = 0x0000; else OVDCON = StateLoTable[_Sector]; } else { PDC1 = PDC2 = PDC3 = (unsigned int)(-(_Voltage+1)) / 16; if (_Sector == -1) OVDCON = 0x0000; else OVDCON = StateLoTable[(_Sector + 3) % 6]; } return; 這裡的PDC1 = PDC2 = PDC3 = (unsigned int)(-(_Voltage+1)) / 16; 為什麼要/16這個值呢? 問題3 void InitUserInt(void) { TRISE |= 0x0100; // S8/RE8當輸入 // Analog pin for POT already initialized in ADC init subroutine PORTF = 0x0008; // RS232 Initial values TRISF = 0xFFF7; // TX as output return; } TX as output的功用為何? 問題4 pid控制硬體連結除了一個AN用於調控轉速,與6個PWM輸出,3個霍爾信號輸入,我目前DRIVER使用IPM-IGBT模組驅動bldc,DRIVER是否需要作回授給控制器部份呢?
發表於: 2008/4/23 15:06
|
|||
|