




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、三相交流異步電動機SVPWM開環調速控制程序(硬件法).include 240x.h ; 寄存器地址.global _c_int0 ;全局化標號;-以下定義變量-ST0 .set 0 ;狀態寄存器ST0ST1 .set 1 ;狀態寄存器ST1.bss TEMP,1 ;臨時變量.bss SET_F,1 ;頻率調節比,Q16格式(值為0-1,對應0-50Hz).bss F_OMEGA,1 ;頻率調節比-角頻率轉換率,Q5格式.bss OMEGA,1 ;調制波角頻率,Q5格式.bss SET_V,1 ;參考電壓,Q14格式.bss MAX_V,1 ;最大參考電壓幅值1/ ,Q14格式.bss T_S
2、AMPLE,1 ;采樣周期,Q24格式.bss THETA_H,1 ;參考電壓相位角高字,Q12格式.bss THETA_L,1 ;參考電壓相位角低字,Q12格式.bss THETA_R,1 ;相位角的圓整值,Q12格式.bss THETA_M,1 ;相位查表值(0-90度),Q12格式.bss THETA_I,1 ;相角查表索引,Q9格式.bss SS,1 ;SIN符號,Q0格式.bss SC,1 ;COS符號,Q0格式.bss SIN_INDX,1 ;SIN表索引,Q0格式.bss SIN_ENTRY,1 ;SIN表入口地址.bss SIN_END,1 ;SIN表結束地址.bss SIN_
3、THETA,1 ;SIN值,Q14格式.bss COS_THETA,1 ;COS值,Q14格式.bss UA,1 ;參考電壓D軸分量UA,Q12格式.bss UB,1 ;參考電壓Q軸分量UB,Q12格式.bss THETA_S,1 ;-扇區數轉換系數,Q15格式.bss SECTOR,1 ;參考電壓所在的扇區數,Q0格式.bss THETA_90,1 ;90度,Q12格式.bss THETA_180,1 ;180度,Q12格式.bss THETA_270,1 ;270度,Q12格式.bss THETA_360,1 ;360度,Q12格式.bss DEC_MS,24 ;6個逆陣,Q14格式.bs
4、s T1_PERIODS,1 ;定時器1周期值,Q5格式.bss CMP_1,1 ;第1基本矢量,Q0格式.bss CMP_2,1 ;第2基本矢量,Q0格式.bss SVPAT,1 ; ACTRA的空間矢量字 .bss ACCH,1 ;ACC高字保存單元 .bss ACCL,1 ;ACC低字保存單元 .bss AR0_SAVE,1 ;AR0保存單元 .bss P_HI,1 ;P寄存器高字保存單元 .bss P_LO,1 ;P寄存器低字保存單元; -CONTEXT段,定義保護現場數據區-ST0_SAVE .usect .context,1 ;狀態寄存器ST0保存單元ST1_SAVE .usect
5、 .context,1 ;狀態寄存器ST1保存單元;-定義主向量段-.sect .vectors ;定義主向量段RESET B _c_int0 ;地址0000H,復位,優先級1INT1 B PHANTOM ;地址0002H,INT1,優先級4INT2 B _C_INT2 ;地址0004H,INT2,優先級5INT3 B PHANTOM ;地址0006H,INT3,優先級6INT4 B PHANTOM ;地址0008H,INT4,優先級7INT5 B PHANTOM ;地址000AH,INT5,優先級8INT6 B PHANTOM ;地址000CH,INT6,優先級9 RESERVED B PH
6、ANTOM;地址000EH,測試,優先級10SW_INT8 B PHANTOM;地址0010H,自定義軟中斷SW_INT9 B PHANTOM;地址0012H,自定義軟中斷SW_INT10 B PHANTOM;地址0014H,自定義軟中斷SW_INT11 B PHANTOM;地址0016H,自定義軟中斷SW_INT12 B PHANTOM;地址0018H,自定義軟中斷SW_INT13 B PHANTOM;地址001AH,自定義軟中斷SW_INT14 B PHANTOM;地址001CH,自定義軟中斷SW_INT15 B PHANTOM;地址001EH,自定義軟中斷SW_INT16 B PHANT
7、OM;地址0020H,自定義軟中斷TRAP B PHANTOM;地址0022H,TRAP矢量NMI B PHANTOM;地址0024H,NMI,優先級3EMU_TRAP B PHANTOM;地址0026H,仿真Trap,優先級2SW_INT20 B PHANTOM;地址0028H,自定義軟中斷SW_INT21 B PHANTOM;地址002AH,自定義軟中斷SW_INT22 B PHANTOM;地址002CH,自定義軟中斷SW_INT23 B PHANTOM;地址002EH,自定義軟中斷SW_INT24 B PHANTOM;地址0030H,自定義軟中斷SW_INT25 B PHANTOM;地址
8、0032H,自定義軟中斷SW_INT26 B PHANTOM;地址0034H,自定義軟中斷SW_INT27 B PHANTOM;地址0036H,自定義軟中斷SW_INT28 B PHANTOM;地址0038H,自定義軟中斷SW_INT29 B PHANTOM;地址003AH,自定義軟中斷SW_INT30 B PHANTOM;地址003CH,自定義軟中斷SW_INT31 B PHANTOM;地址003EH,自定義軟中斷;-定義子向量段-.sect .pvecs ;定義子向量段PVECTORSBPHANTOM;偏移地址0000H BPHANTOM ;偏移地址0001HBPHANTOM;偏移地址00
9、02HBPHANTOM;偏移地址0003HBPHANTOM;偏移地址0004HBPHANTOM;偏移地址0005HBPHANTOM;偏移地址0006HBPHANTOM;偏移地址0007HBPHANTOM;偏移地址0008HBPHANTOM;偏移地址0009HBPHANTOM;偏移地址000AHBPHANTOM;偏移地址000BHBPHANTOM;偏移地址000CHBPHANTOM;偏移地址000DHBPHANTOM;偏移地址000EHBPHANTOM;偏移地址000FH BPHANTOM;偏移地址0010HBPHANTOM;偏移地址0011HBPHANTOM;偏移地址0012HBPHANTOM
10、;偏移地址0013HBPHANTOM;偏移地址0014HBPHANTOM;偏移地址0015HBPHANTOM;偏移地址0016HBPHANTOM;偏移地址0017H BPHANTOM;偏移地址0018HBPHANTOM;偏移地址0019H BPHANTOM;偏移地址001AHBPHANTOM;偏移地址001BHBPHANTOM;偏移地址001CHBPHANTOM;偏移地址001DHBPHANTOM;偏移地址001EHBPHANTOM;偏移地址001FHBPHANTOM;偏移地址0020HBPHANTOM;偏移地址0021H BPHANTOM;偏移地址0022HBPHANTOM;偏移地址0023
11、HBPHANTOM;偏移地址0024HBPHANTOM;偏移地址0025HBPHANTOM;偏移地址0026H BPHANTOM;偏移地址0027H BPHANTOM;偏移地址0028HBT1UF_ISR;偏移地址0029HBPHANTOM;偏移地址002AHBPHANTOM;偏移地址002BHBPHANTOM;偏移地址002CHBPHANTOM;偏移地址002DHBPHANTOM;偏移地址002EHBPHANTOM;偏移地址002FH BPHANTOM;偏移地址0030HBPHANTOM;偏移地址0031HBPHANTOM;偏移地址0032HBPHANTOM;偏移地址0033HBPHANTO
12、M;偏移地址0034HBPHANTOM;偏移地址0035HBPHANTOM;偏移地址0036HBPHANTOM;偏移地址0037HBPHANTOM;偏移地址0038HBPHANTOM;偏移地址0039HBPHANTOM;偏移地址003AHBPHANTOM;偏移地址003BHBPHANTOM;偏移地址003CHBPHANTOM;偏移地址003DHBPHANTOM;偏移地址003EHBPHANTOM;偏移地址003FHBPHANTOM;偏移地址0040HBPHANTOM;偏移地址0041H;-以下是主程序-.text;-系統初始化程序-_c_int0 SETC INTM ; 禁止中斷CLRC CN
13、F ;B0為數據存儲區LDP #224SPLK #0000001000000100B,SCSR1 ;CLKIN 10M,CLKOUT 20MSPLK #68H,WDCR ;不用看門狗LDP #225LACC MCRAOR #0FC0H ;設置PWM1-6引腳SACL MCRA;-中斷初始化程序-LDP #0 SPLK #0FFH,IFR ; 清所有系統中斷標志SPLK #00000010B,IMR ; 開INT2中斷LDP #232 SPLK #0FFFH,EVAIFRA ; 清事件管理器A所有中斷標志SPLK #0FH,EVAIFRB SPLK #0FH,EVAIFRC SPLK #0200
14、H,EVAIMRA ; 開T1下溢中斷SPLK #0,EVAIMRB ; 屏蔽所有中斷SPLK #0,EVAIMRC ; 屏蔽所有中斷;-初始化事件管理器A程序-SPLK #500,T1PR ; T1周期值=50 us/50ns/2=500SPLK #500,CMPR1 ; 占空比初值 0%SPLK #500,CMPR2SPLK #500,CMPR3SPLK #0000011001100110B,ACTRA ; 引腳PWM1,3,5高有效,2,4,6低有效SPLK #01F4H,DBTCONA ; 死區時間1*32*50ns=1.6usSPLK #1001001000000000B,COMCO
15、NA ;允許比較,使用硬件空間矢量SPLK #1000100000000010B,T1CON ;連續增減計數方式,預分頻=1;-變量初始化程序- LDP #6 ; 指向B1SPLK #0347H,T_SAMPLE ;采樣周期=50us *224=839秒=347H, Q24格式SPLK #16000,T1_PERIODS ;T1周期值的Q5格式,500*32SPLK #11585,MAX_V ; 最大參考電壓幅值1/,Q14格式SPLK #0,SET_F ; SET F=0SPLK #10053,F_OMEGA ;頻率調節比-角頻率轉換率,Q5格式 ;當SET_F=1時,對應最大角頻率250H
16、z*25=10053SPLK #0,THETA_L ;低字,Q12格式SPLK #0,THETA_H ; 高字,Q12格式LAR AR0,#THETA_90 ; 傳送常用角度和逆陣數據LAR AR1,#(28-1) ; 28個LACC #ANGLES_ ; 指向源LARP AR0 INIT_TBL TBLR *+,AR1 ; 下一個ADD #1 ; 下一個地址BANZ INIT_TBL,AR0 ;AR1=0結束 SPLK #29335,THETA_I ; 相角查表索引,180/,Q9格式SPLK #31291,THETA_S ; -扇區數轉換系數,6/(2),Q15格式SPLK #SIN_EN
17、TRY_,SIN_ENTRY ;SIN表起始地址SPLK #(SIN_ENTRY_+90),SIN_END ;SIN表結束地址LDP #232SPLK #0000100001000010B,T1CON ;使能T1CLRC INTM ; 開總中斷;-主循環程序(SET_F由外部輸入)-MAIN_LOOP LDP #6LT SET_F ; 將頻率調節比(Q16格式)轉換成角頻率MPYU F_OMEGA ; Q21PAC ; 積送ACC, Q5格式SACH OMEGA ; 保存角頻率,Q5格式 LT SET_F ;將頻率調節比(Q16格式)轉換成參考電壓MPYU MAX_V ; Q16*Q14=Q3
18、0PAC SACH SET_V ; 保存參考電壓幅值,Q14格式B MAIN_LOOP ; 循環;-假中斷處理-PHANTOM CLRC INTM RET;-T1下溢中斷處理子程序-_C_INT2 SST #ST0,ST0_SAVE ; 保存現場ST0SST #ST1,ST1_SAVE ; 保存ST1LDP #6 SACH ACCH SACL ACCL ; 保存ACCSPH P_HI SPL P_LO ; 保存 PMPY #1 ; P=TSPL T_SAVE ; 保存 T SAR AR0,AR0_SAVE ; 保存AR0CLRC SXMLDP #224 LACC PIVR ;讀偏移地址SUB
19、#029H ; T1 下溢中斷?BCND T1UF_ISR,EQ ;是下溢中斷跳T1UF_ISRREST LDP #6 ;否則恢復現場LAR AR0, AR0_SAVE ; 恢復AR0LT P_LO ;恢復PMPY #1 LPH P_HI LT T_SAVE ;恢復TLACC ACCH,16 ADDS ACCL ;恢復ACCLDP #0 ;指向B2LST #ST1,ST1_SAVE ; 恢復ST1LST #ST0,ST0_SAVE ; 恢復ST0CLRC INTM ; 開中斷RET ; 返回T1UF_ISR LDP #232SPLK #0FFFH,EVAIFRA ; 清中斷標志LDP #6 ;
20、 計算轉角增量LT OMEGA ; Q5MPY T_SAMPLE ;Q5*Q24PAC ;積存ACC, Q13SFR ; 右移一位成Q12格式ADD THETA_H,16 ; Q12 ADDS THETA_L ;計算絕對位置SACH THETA_H ;保存SACL THETA_L BCND CHK_UPLIM,GEQ ;如果大于0檢查上限ADD THETA_360,16 ;否則與2比較,Q12 SACH THETA_H ; 保存B RND_THETA CHK_UPLIM SUB THETA_360,16 ;與2比較,Q12 BCND REST_THETA,LEQ ; 如果在范圍內恢復THETA
21、_HSACH THETA_H B RND_THETA REST_THETA ADD THETA_360,16 ; 恢復THETA_HRND_THETA ADD #1,15 ; 圓整并保留高字SACH THETA_R ;保存LACC #1 ;假設THETA_H在第一象限SACL SS ; SIN符號=1SACL SC ; COS符號=1LACC THETA_R SACL THETA_M ; 存入THETA_MSUB THETA_90 ;BCND E_Q,LEQ ;在第一象限則跳轉SPLK #-1,SC ; COS符號=-1LACC THETA_180 SUB THETA_R ; 180-SACL
22、 THETA_M ;存入THETA_MBCND E_Q,GEQ ;在第二象限則跳轉SPLK #-1,SS ;SIN符號=-1LACC THETA_R SUB THETA_180 ;THETA-180SACL THETA_M ;存入THETA_MLACC THETA_270 SUB THETA_R BCND E_Q,GEQ ;在第三象限則跳轉SPLK #1,SC ; COS符號=1LACC THETA_360SUB THETA_R SACL THETA_M ; 在第四象限E_Q LT THETA_M ; Q12.計算查表索引MPYU THETA_I ; Q12*Q9PAC ; Q5SACH SI
23、N_INDX ; Q5LACC SIN_INDX,11 ;左移11位SACH SIN_INDX ;相當于右移5位變成Q0格式,即整數LACC SIN_ENTRY ;查SIN表ADD SIN_INDXTBLR SIN_THETA LACC SIN_END SUB SIN_INDX ;TBLR COS_THETA ;LT SS ;查COS表MPY SIN_THETA ;修改符號,Q14PAC SACL SIN_THETA ; 左移16位保存,Q14LT SC MPY COS_THETA ; 修改符號, Q14PAC SACL COS_THETA ;左移16位保存,Q14LT SET_V ;開始計算
24、UA , UB MPY COS_THETA ; Q14*Q14PAC ;存入ACC, Q12SACH UA ; UA ,Q12格式MPY SIN_THETA ; Q14*Q14PAC ; 存入ACC, Q12SACH UB ; UB, Q12格式LT THETA_R ; Q12格式.確定扇區MPY THETA_S ; Q12*Q15PACSACH SECTOR LACC SECTOR,5 SACH SECTOR ; 相當于右移11位變成Q0格式(整數)LACC #DEC_MS ;逆陣數據首地址ADD SECTOR,2 SACL TEMP ;產生地址指針LAR AR0,TEMP ; 指向逆陣表L
25、T UA ; Q12格式.計算UA*M(1,1)+UB*M(1,2)MPY *+ ; M(1,1) UA, Q12*Q14PAC ; Q10格式LT UB ; Q12MPY *+ ; M(1,2) UB, Q12*Q14APAC ; 0.5*C1, Q10BCND CMP1BIG0,GEQ ; 如果大于0繼續LACC #0 ; 否則0CMP1BIG0 SACH TEMP ; 0.5*C1,Q10格式LT TEMP ; Q10格式MPY T1_PERIODS ; Q10*Q5PAC ; Q15格式ADD #1,15 ; 防止C1=0SACH CMP_1,1 ; 0.5*C1*TP,Q0格式LT
26、UA ;計算UA*M(2,1)+UB*M(2,2)MPY *+ ; M(2,1) UA,Q12*Q14PAC ; Q10格式LT UB ; Q12格式MPY *+ ; M(2,2) UB: Q12*Q14APAC ; 0.5*C2,Q10BCND CMP2BIG0,GEQ ; 如果大于0繼續LACC #0 ;否則0CMP2BIG0 SACH TEMP ; 0.5*C2,Q10格式LT TEMP ; Q10格式MPY T1_PERIODS ; Q10*Q5 PAC ; Q15格式ADD #1,15 ; 防止C2 = 0SACH CMP_2,1 ; 0.5*C2*TP,Q0格式LACC #CCKW
27、ISE_ ; ACTRA寄存器值表首地址ADD SECTOR ; 查表地址TBLR SVPAT LAR AR0,#ACTRA ;指向ACTRALACC * ; 讀ACTRAAND #0FFFH ; 清高四位OR SVPAT ; 高四位賦新值SACL * ; 更新ACTRALAR AR0,#CMPR1 ; 指向CMPR1LACC CMP_1SACL *+ ; 更新CMPR1, 指向CMPR2ADD CMP_2 SACL * ; 更新CMPR2SUB #500 ;減T1周期值,CMPR2是否超限BCND IN_LMT,LEQ ;沒超跳轉SPLK #500,* ;否則賦T1周期值IN_LMT B R
28、EST ; 返回.data ;-數據段-ANGLES_ .word 01922H ; /2, Q12格式.word 03244H ; , Q12格式.word 04B66H ; 3/2, Q12格式.word 06488H ; 2, Q12格式.word 20066 ; 矩陣A的逆陣數據,每一個逆陣有4個數據,Q14格式.word 11585 ; 按參考電壓所在的扇區索引.word 0.word 23170.word 20066.word 11585.word -20066.word 11585.word 0.word 23170.word -20066.word -11585.word -20066.word 11
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工作與生活場景下的智能穿戴需求分析
- 工作中的心理調適與健康管理
- 工作中的時間管理與優化
- 工作場所心理健康關注與干預措施
- 工業設備涂裝的耐腐蝕性研究
- 工作分析與職位設置
- 工作環境創新與員工工作動力提升
- 工作報告的炫酷動態效果制作
- 工程師必 備的數據分析技能
- 工程質量管理與工程驗收標準研究
- 餐飲服務行業食品安全管理人員知識考試題庫(附答案)
- 太陽系中的有趣科學學習通超星期末考試答案章節答案2024年
- 上海市幼兒園幼小銜接活動指導意見(修訂稿)
- 培訓學校收費和退費管理制度
- 法社會學教程(第三版)教學
- 國內外高等教育教材比較研究課題
- 浙江省紹興市諸暨市2023-2024學年五年級下學期期末數學試卷
- 煤礦調度智能化培訓課件
- 基于PLC的啤酒發酵自動控制系統
- 重慶市沙坪壩區2022-2023學年八年級下學期期末英語試題
- 思辨與創新智慧樹知到期末考試答案章節答案2024年復旦大學
評論
0/150
提交評論