版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、3.5 正弦波永磁同步電動(dòng)機(jī)驅(qū)動(dòng)控制程序/# #/ 采用矢量控制算法控制永磁同步電機(jī)/ TMS320F2812/# #/= /頭文件調(diào)用/= #include "DSP281x_Device.h"/= /常量附值/= #define Delta 5#define PI 3.1415926#define Kpspeed 0.7 /0.9 /轉(zhuǎn)速環(huán) PI 調(diào)節(jié)器低速時(shí)參數(shù)要大 一些#define Kispeed 0.7 /0.6 / 0.6 0.6 150轉(zhuǎn)時(shí)#define Kpd 0.1 /0.07#define Kid 0.1 /0.1#define Kpq 0.15 /0
2、.22 /0.22 /0.07#define Kiq 0.1 /0.04 /0.04 /0.1/= /全局變量/= unsigned int index1; /index1為轉(zhuǎn)子位置角用于 PARK PARKN變換 unsigned int index2;unsigned int testtime; /index2為轉(zhuǎn)子位置角加或減 2分之 PIint charge=0; /自舉充電時(shí)間控制位unsigned long rd=0; /轉(zhuǎn)子定位時(shí)間控制位int L2=0; /T2計(jì)數(shù)器當(dāng)前計(jì)數(shù)值int L1=0; /T2計(jì)數(shù)器上一次計(jì)數(shù)值int L; /計(jì)數(shù)器兩次差值用于 M 法轉(zhuǎn)速計(jì)算int
3、lin=0;unsigned int capcount=0;unsigned int cap50;/通過(guò) SCI 口發(fā)信息unsigned int scienable=0;unsigned int canchannel=0; /發(fā)送選項(xiàng)控制unsigned long a=0,b=0;unsigned int speedsci=0;unsigned int speedsd=0;unsigned int speedthousand=3; /轉(zhuǎn)速千位unsigned int speedhundred=3; /轉(zhuǎn)速百位unsigned int speeddecade=1; /轉(zhuǎn)速十位unsigned
4、int speedlow=0;unsigned int Udc=3500; /轉(zhuǎn)速個(gè)位unsigned int Udcthousand=0; /電壓千位unsigned int Udchundred=0; /電壓百位unsigned int Udcdecade=4; /電壓十位unsigned int Udclow=8; /電壓個(gè)位unsigned int Idc=0;unsigned int Idcthousand=0; /電流千位unsigned int Idchundred=0; /電流百位unsigned int Idcdecade=6; /電流十位unsigned int Idclo
5、w=0; /電流個(gè)位unsigned int scicount=0; /向上位機(jī)發(fā)送數(shù)據(jù)周期控制unsigned long setspeed=2500; /上位機(jī)設(shè)定的速度unsigned int scisend6;char ReceivedChar=0;char scired6;int p=0,q=0,sciflag=0,tenable=0;int i,j,t;/AD數(shù)字濾波unsigned int once=0;long Ia_now;long Ia_fore;long Ib_now;long Ib_fore;long Ic_now;unsigned int ad_count;unsign
6、ed int delay=0;unsigned int S_Ia=0;unsigned int ia18=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; unsigned int ib18=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;long Icb,Ica; /CLARK變換兩相靜止坐標(biāo)系電流 long Iat,Ibt; /AD數(shù)字濾波中間變量long Ia=0,Ib=0,Ic=0; /濾波后的電流值/轉(zhuǎn)速環(huán) PI 調(diào)節(jié)參數(shù)int direct=0; /轉(zhuǎn)向控制 0為正轉(zhuǎn) 1為反轉(zhuǎn)long speed_given=170; /轉(zhuǎn)速給定lo
7、ng speed_count=10; /轉(zhuǎn)速計(jì)算周期控制標(biāo)志long speed_feed=0; /轉(zhuǎn)速反饋long speed_out2=0; /上次轉(zhuǎn)速調(diào)節(jié)器輸出long speed_e1; /當(dāng)前轉(zhuǎn)速偏差long speed_e2=0; /上次轉(zhuǎn)速偏差/電流環(huán) PI 調(diào)節(jié)參數(shù)long Id_given=0; /Id給定long Iq_given=0; /Iq給定轉(zhuǎn)速調(diào)節(jié)器輸出 long Id_feed; /d軸電流反饋值long Iq_feed; /q軸電流反饋值long Id_e; /d軸當(dāng)前電流偏差long Id_e0=0; /d軸上次電流偏差long Iq_e; /q軸當(dāng)前電流偏差
8、long Iq_e0=0; /q軸上次電流偏差long Ud=-150; /d軸電流調(diào)節(jié)器輸出long Uq=1000; /q軸電流調(diào)節(jié)器輸出long Ud0=0; /上次 d 軸電流調(diào)節(jié)器輸出 long Uq0=0; /上次 q 軸電流調(diào)節(jié)器輸出 long Upa,Upb; /Ud Uq PARKN變換值 long Ua,Ub,Uc; /SPWM調(diào)制電壓void init_SCI(void; /串口初始化void scia_xmit(int a; /串口發(fā)送函數(shù)void init_eva(void; /EVA初始化void init_ADC(void; /ADC初始化void calcuin
9、dex(void; /轉(zhuǎn)子位置角計(jì)算void calcuspeed(void; /轉(zhuǎn)速計(jì)算void speed_PI(void; /轉(zhuǎn)速環(huán) PI 調(diào)節(jié)void AD(void; /AD采樣及濾波void I_PI(void; /電流環(huán) PI 調(diào)節(jié)void CLARK(void; /CLARK變換void CLARKN(void; /CLARK逆變換void PARK(void; /PARK變換void PARKN(void; /PARK逆變換interrupt void t1pint_isr(void; /定時(shí)器 1中斷服務(wù)程序 interrupt void cap3_isr(void; /捕
10、獲單元 3中斷服務(wù)程序 interrupt void sci_isr(void;signed int sintable512=/同 SPWM/Q15格式 , 將 2PI 弧度分成了 512份void main(void/初始化系統(tǒng)InitSysCtrl(;/關(guān)中斷DINT;IER = 0x0000;IFR = 0x0000;/初始化 PIE 中斷InitPieCtrl(;/初始化 PIE 中斷矢量表InitPieVectTable(;EALLOW;EDIS;EALLOW;PieVectTable.T1UFINT = &t1pint_isr;PieVectTable.CAPINT3 =
11、&cap3_isr;PieVectTable.RXAINT=&sci_isr;EDIS;IER |= M_INT2;IER |= M_INT3;IER |= M_INT9;EALLOW;EDIS;/開中斷init_SCI(;init_eva(; /初始化 EVAinit_ADC(; /初始化 ADCif(direct=0speed_given=speed_given; /正反轉(zhuǎn)速度設(shè)定elsespeed_given=-speed_given;EINT;ERTM;for(;if(scienable=1&&(tenable=1=1/speedsci=setspeed
12、;tenable=0;speedthousand=speedsci/1000;speedhundred=speedsci/100%10;speeddecade=speedsci/10%10;speedlow=speedsci%10;scisend0='s'scisend1=0x30+speedthousand; /speedthousand scisend2=0x30+speedhundred; /speedhundred scisend3=0x30+speeddecade; /speeddecade scisend4=0x30+speedlow; /speedlowscise
13、nd5='p'while(1scia_xmit(scisendp;p+;if(p>5p=0;break;void init_SCI(/ Note: Clocks were turned on to the SCIA peripheral/ in the InitSysCtrl( function/ No parity,8 char bits,/ async mode, idle-line protocolSciaRegs.SCIHBAUD =0x0001;SciaRegs.SCILBAUD =0x00E7;void scia_xmit(int aSciaRegs.SCIT
14、XBUF=a;void init_eva(EvaRegs.T1PR=7500; / Timer1 periodEvaRegs.T1CNT=0x0000; / Timer1 counterEvaRegs.T2PR=9999; /光電編碼器 2500線EvaRegs.T2CNT=0;void init_ADC(voidfor(i=0;i<1000;i+ ;for(i=0;i<500;i+ ;/*/ /根據(jù) L 正反轉(zhuǎn) 4種不同情況進(jìn)行轉(zhuǎn)速計(jì)算所得轉(zhuǎn)速均為正值/*/ void calcuspeed(voidif(L>=0&&(L<2000speed_feed=
15、L*3;if(L<0&&(L<-2000speed_feed=(10000+L*3;if(L>0&&(L>2000speed_feed=(10000-L*3;if(L<0&&(L>=-2000speed_feed=(-L*3;if(speed_feed>0speedsci=speed_feed;elsespeedsci=-speed_feed;void speed_PI(voidspeed_e1=speed_given-speed_feed;Iq_given=speed_out2+Kpspeed*(spe
16、ed_e1-speed_e2+Kispeed*speed_e1;if(Iq_given>500Iq_given=500;if(Iq_given<-500Iq_given=-500;speed_e2=speed_e1;speed_out2=Iq_given;/*/AD采樣及濾波連續(xù)采樣 18次,舍棄最大值和最小值剩下的再取平均值/*/void AD(voidfor(ad_count=0;ad_count<=17;ad_count+for(delay=0;delay<=10;delay+iaad_count=AdcRegs.ADCRESULT0>>4;ibad_
17、count=AdcRegs.ADCRESULT1>>4;/testtime=0;for(j=1;j<=17;j+for(i=0;i<=17-j;i+if(iai>iai+1t=iai;iai=iai+1;iai+1=t;if(ibi>ibi+1t=ibi;ibi=ibi+1;ibi+1=t;Iat=(ia5+ia6+ia7+ia8+ia9+ia10+ia11+ia12>>3;Ibt=(ib5+ib6+ib7+ib8+ib9+ib10+ib11+ib12>>3;Ia=Iat-2110;Ib=Ibt-2110;if(once=0Ia_fo
18、re=Ia;Ib_fore=Ib;once=1;Ia_now=(Delta*Ia+(8-Delta*Ia_fore>>3;Ib_now=(Delta*Ib+(8-Delta*Ib_fore>>3;Ia_fore=Ia_now;Ib_fore=Ib_now;Ic_now=-(Ia_now+Ib_now;/*/ /Ud Uq限幅值限定了最高轉(zhuǎn)速/*/ void I_PI(voidId_e=Id_given-Id_feed; /2*Id_feedUd=Ud0+Kpd*(Id_e-Id_e0+Kid*Id_e;Iq_e=Iq_given-Iq_feed; /2*Iq_feedU
19、q=Uq0+Kpq*(Iq_e-Iq_e0+Kiq*Iq_e;if(Ud>500Ud=500;if(Ud<-500Ud=-500;if(Uq>2500Uq=2500;if(Uq<-2500Uq=-2500;Ud0=Ud;Uq0=Uq;Id_e0=Id_e;Iq_e0=Iq_e;void CLARK(voidIca=(5017*Ia_now>>12;Icb=(2896*Ia_now>>12+(5793*Ic_now>>12;void CLARKN(voidUa=(Upa*3344>>12;Ub=(-Upa*1672>&
20、gt;12+(Upb*2896>>12;Uc=-(Ua+Ub;if(Ua>7500Ua=7500;if(Ua<-7500Ua=-7500;if(Ub>7500Ub=7500;if(Ub<-7500Ub=-7500;if(Uc>7500Uc=7500;if(Uc<-7500Uc=-7500;void PARK(voidId_feed=(Ica*sintableindex2>>15+(Icb*sintableindex1>>15; Iq_feed=-(Ica*sintableindex1>>15+(Icb*sintableindex2>>15; void PARKN(voidUpa=(Ud*sintableindex2>>15-(Uq*sintableindex1>>15;Upb=(Ud*sintableind
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年護(hù)士個(gè)人工作計(jì)劃范文
- 2025年年度健康教育工作計(jì)劃
- 2025護(hù)士個(gè)人年度工作計(jì)劃例文
- 2025年大學(xué)生學(xué)習(xí)計(jì)劃
- Unit 8 Talent show Lesson 1 I'm from china(說(shuō)課稿)-2023-2024學(xué)年北師大版(三起)英語(yǔ)四年級(jí)下冊(cè)
- 2025年變電站工作計(jì)劃
- 2025年電力工作計(jì)劃
- 2025年度室內(nèi)設(shè)計(jì)師工作計(jì)劃書
- 人教版八年級(jí)上冊(cè) 歷史與社會(huì) 說(shuō)課稿 3.2秦末農(nóng)民起義與漢朝的建立1
- 2025年醫(yī)師健康教育工作計(jì)劃
- 對(duì)外投資合作國(guó)別(地區(qū))指南 -泰國(guó)
- 2023年-2024年崗位安全教育培訓(xùn)試題及答案通用
- 口腔修復(fù)學(xué)(全套課件290p)課件
- 小學(xué)生心理問(wèn)題的表現(xiàn)及應(yīng)對(duì)措施【全國(guó)一等獎(jiǎng)】
- 小學(xué)生科普人工智能
- 初中學(xué)段勞動(dòng)任務(wù)清單(七到九年級(jí))
- 退耕還林監(jiān)理規(guī)劃
- GB/T 1335.2-2008服裝號(hào)型女子
- GB 31247-2014電纜及光纜燃燒性能分級(jí)
- DCC20網(wǎng)絡(luò)型監(jiān)視與報(bào)警
- 項(xiàng)目實(shí)施路徑課件
評(píng)論
0/150
提交評(píng)論