?? ac_tvc.asm
字號:
/*三相交流異步電動機(jī)矢量控制程序*/
.INCLUDE "240X.H"
;-----------------------以下定義變量和常數(shù)-------------------------------------------------------------
.DATA
KSPEED .SET 3415 ;將脈沖數(shù)轉(zhuǎn)換成速度系數(shù),13.34的Q8格式
;速度基值1500rpm,速度采樣周期3ms
SPEEDSTEP .SET 30 ;速度采樣周期30個中斷
.BSS T1_PERIODS,1 ;T1周期值的Q5格式
.BSS KCURRENT,1 ;電流ipuQ12的轉(zhuǎn)換系數(shù),Q8格式
.BSS KI,1 ;電流積分系數(shù),Q12格式
.BSS KP,1 ;電流比例系數(shù),Q12格式
.BSS KC,1 ;電流積分修正系數(shù),Q12格式
.BSS KIN,1 ;速度積分系數(shù),Q12格式
.BSS KPN,1 ;速度比例系數(shù),Q12格式
.BSS KCN,1 ;速度積分修正系數(shù),Q12
.BSS VMIN,1 ;電壓最小極限-1.25 pu,Q12
.BSS VMAX,1 ;電壓最大極限1.25 pu,Q12
.BSS IMAX,1 ;相電流最大極限,Q12
.BSS TMP,1 ;臨時變量
.BSS IA,1 ;相電流IA
.BSS IB,1 ;相電流IB
.BSS IC,1 ;相電流IC
.BSS SIN,1 ;SIN值Q12
.BSS COS,1 ;COS值Q12
.BSS DEC_MS,24 ;6個逆陣,Q14格式
.BSS CMP_1,1 ;第1基本矢量,Q0格式
.BSS CMP_2,1 ;第2基本矢量, Q0格式
.BSS CMP_0,1 ;0基本矢量/2, Q0格式
.BSS FIRST_TOG,1 ;存放第一次比較匹配的比較器地址
.BSS SEC_TOG,1 ;存放第二次比較匹配的比較器地址
.BSS TETA_E,1 ;轉(zhuǎn)子電角度[0;1000H],對應(yīng)[0;360]Q12格式
.BSS IALFA,1 ;ALFA軸電流
.BSS IBETA,1 ;BETA軸電流
.BSS VALF_REF,1 ;ALFA軸參考電壓
.BSS VBET_REF,1 ;BETA軸參考電壓
.BSS IMREF,1 ;M軸參考電流
.BSS ITREF,1 ;T軸參考電流
.BSS IM,1 ;M軸電流
.BSS IT,1 ;T軸電流
.BSS VMREF,1 ;M軸參考電壓
.BSS VTREF,1 ;T軸參考電壓
.BSS EPIT,1 ;T軸電流調(diào)節(jié)偏差
.BSS EPIM,1 ;M軸電流調(diào)節(jié)偏差
.BSS XIT,1 ;T軸電流調(diào)節(jié)器積分累計量
.BSS XIM,1 ;M軸電流調(diào)節(jié)器積分累計量
.BSS N,1 ;速度
.BSS N_REF,1 ;速度參考值
.BSS EPISPEED,1 ;速度偏差
.BSS XISPEED,1 ;速度調(diào)節(jié)器積分累計量
.BSS P,1 ;SVPWM扇區(qū)索引
.BSS ITREFMIN,1 ;T軸電流最小極限
.BSS ITREFMAX,1 ;T軸電流最大極限
.BSS SECTOR,1 ;SVPWM扇區(qū)數(shù)
.BSS INDEX,1 ;查SIN表索引
.BSS UPI,1 ;PI調(diào)節(jié)器輸出
.BSS ELPI,1 ;PI調(diào)節(jié)器極限偏差
.BSS ENCODEROLD,1 ;前一個采樣周期時編碼脈沖數(shù)
.BSS ENCINCR,1 ;編碼脈沖增量
.BSS SPEEDTMP,1 ;編碼脈沖增量累計值
.BSS SPEEDSTEP,1 ;速度采樣周期減計數(shù)器
.BSS KR,1 ;常數(shù),見式(4-36)
.BSS KT,1 ;常數(shù), 見式(4-37)
.BSS K,1 ;轉(zhuǎn)換常數(shù),見式(4-39)
.BSS IDK,1 ;轉(zhuǎn)子勵磁電流,Q12
.BSS FS,1 ;轉(zhuǎn)子磁鏈角頻率與額定角頻率之比
.BSS TETAINCR,1 ;TETA轉(zhuǎn)角增量
.BSS TMP1,1 ;臨時變量
;-----------------------以下是程序-----------------------------------------------------------------------------
.TEXT
;-----------------------初始化程序-----------------------------------------------------------------------------
CLRC CNF ; B0
SETC OVM
SPM 0
SETC SXM ;擴(kuò)展符號
LAR AR0,#DEC_MS ;傳送逆陣數(shù)據(jù)
LAR AR1,#(24-1) ; 24個
LACC #ANGLES_ ; 指向源
LARP AR0
INIT_TBL
TBLR *+,AR1 ;下一個
ADD #1 ;下一個地址
BANZ INIT_TBL,AR0 ;AR1=0結(jié)束
LAR AR4,#79H ;用于堆棧保存現(xiàn)場,B2(60H-80H)
LDP #0E0H
SPLK #68H, WDCR ;不用看門狗
SPLK #0284H,SCSR1 ;CLKIN 10MHZ,CLKOUT 20MHZ
LDP #0E1H
SPLK #0900H,ADCTRL1 ;ADC預(yù)分頻10,1MHZ
SPLK #0001H,MAXCONV ;兩個通道
SPLK #0010H,CHSELSEQ1 ;選擇ADCIN0和ADCIN1通道
LACC MCRA
OR #0FD8H ;設(shè)置PWM1-6,QEP1-2
SACL MCRA
;-----------------------變量初始化-----------------------------------------------------
LDP #0
SPLK #32000,T1_PERIODS ;T1周期值的Q5格式,1000*32
SPLK #KI,KI ;給電流積分系數(shù)賦值,Q12
SPLK #KP,KP ;給電流比例系數(shù)賦值,Q12
SPLK #KC,KC ;給電流積分修正系數(shù)賦值,Q12
SPLK #KIN,KIN ;給速度積分系數(shù)賦值,Q12
SPLK #KPN,KPN ;給速度比例系數(shù)賦值,Q12
SPLK #KCN,KCN ;給速度積分修正系數(shù)賦值,Q12
SPLK #VMIN,VMIN ;給電壓最小極限賦值-1.25 pu,Q12
SPLK #VMAX, VMAX ;給電壓最大極限賦值1.25 pu,Q12
SPLK #IMAX,IMAX ;給相電流最大極限賦值,Q12
SPLK #1383H,KCURRENT ;電流ipuQ12的轉(zhuǎn)換系數(shù)19.5的Q8格式
SPLK #39,KR ;(Lr=0.169,Rr=2.011,T=0.0001)Q15格式
SPLK #156,KT ; (Lr=0.169,Rr=2.011)Q12格式
SPLK #328,K ;轉(zhuǎn)換系數(shù),采樣周期100微秒,Q0
SPLK #0,IDK
SPLK #0,FS
SPLK #0,TETAINCR
SPLK #0,TMP
SPLK #0,TMP1
LACC IMAX
SACL ITREFMAX
NEG
SACL ITREFMIN
LACC #0
SACL ITREF
SACL IMREF
SACL N_REF
SACL INDEX
SACL XIM
SACL XIT
SACL XISPEED
SACL UPI
SACL ELPI
SACL ENCODEROLD
SACL N
SACL SPEEDTMP
LACC #SPEEDSTEP ;SPEEDSTEP=30
SACL SPEEDSTEP
;-----------------------事件管理器A初始化-------------------------------------------------------------------
LDP #0E8H
SPLK #0666H,ACTRA ;引腳PWM1,3,5高有效,2,4,6低有效
SPLK #300,CMPR1 ;占空比初值為0
SPLK #300,CMPR2
SPLK #300,CMPR3
SPLK #01F4H,DBTCONA ;死區(qū)時間1.6us
SPLK #8200H,COMCONA ;定時器下溢比較器重載,允許比較
SPLK #1000,T1PR ;周期寄存器值1000
SPLK #0,T1CNT
SPLK #0840H,T1CON ;連續(xù)增減計數(shù)方式,預(yù)分頻為1,允許T1
SPLK #0,T2CNT ;編碼脈沖計數(shù)器
SPLK #0FFFFH,T2PR
SPLK #9870H,T2CON ;定向增減,允許編碼接口
;-----------------------中斷初始化--------------------------------------------------------------------
SPLK #0FFFH,EVAIFRA ;清事件管理器A所有中斷標(biāo)志
SPLK #000FH,EVAIFRB
SPLK #000FH,EVAIFRC
SPLK #0200H,EVAIMRA ;開T1下溢中斷
SPLK #0000H,EVAIMRB
SPLK #0000H,EVAIMRC
LDP #0H
LACC #0FFH
SACL IFR ;清所有系統(tǒng)中斷標(biāo)志
LACC #0000010B
SACL IMR ;開INT2中斷
CLRC INTM ;開總中斷
;-----------------------初始化結(jié)束-------------------------------------------------------------------
;-----------------------T1下溢中斷處理子程序-----------------------------------------------------
_C_INT2
;-----------------------保存現(xiàn)場------------------------------------------------------------------------
MAR *,AR4 ;AR4作為堆棧指針
MAR *-
SST #1,*- ;保存狀態(tài)寄存器1
SST #0,*- ;保存狀態(tài)寄存器0
SACH *- ;保存ACC高位
SACL *- ;保存ACC低位
LDP #0E0H
LACC PIVR ;讀中斷向量
LDP #0E8H
SPLK #0200H,EVAIFRA ;清中斷標(biāo)志位
;-----------------------電流采樣和AD轉(zhuǎn)換------------------------------------------------------
LDP #0E1H
SPLK #2000H,ADCTRL2 ;啟動AD轉(zhuǎn)換,IA-ADCIN0,IB-ADCIN1
CONVERSION
BIT ADCTRL2,3 ;將忙狀態(tài)位復(fù)制到TC
BCND CONVERSION,TC ;等待
LACC RESULT0,10
LDP #0
SACH IA
LDP #0E1H
LACC RESULT1,10
LDP #0
SACH IB
;-----------------------讀編碼器脈沖數(shù),計算轉(zhuǎn)角增量------------------------------------------------
LDP #0E8H
LACC T2CNT ;讀編碼脈沖
;NEG ;編碼器反接線時
LDP #0
SACL TMP
SUB ENCODEROLD ;減去前一個周期測的脈沖數(shù)
SACL ENCINCR ;得到編碼增量
LACC TMP
SACL ENCODEROLD ;更新ENCODEROLD
;-----------------------計算轉(zhuǎn)速---------------------------------------------------------------------------
LACC SPEEDSTEP ;檢測是否該采樣速度
SUB #1
SACL SPEEDSTEP
BCND NOCALC,GT ;沒到采樣時刻,退出
LT SPEEDTMP ;到采樣時刻,計算編碼器增量累計值
MPY #KSPEED ;Q8格式
PAC
SFL
SACH N,7 ;相當(dāng)于右移8位,Q12格式的PU值
LACC #0
SACL SPEEDTMP ;SPEEDTMP清零
LACC #SPEEDSTEP ;SPEEDSTEP=30
SACL SPEEDSTEP ;SPEEDSTEP重新賦初值
;-----------------------轉(zhuǎn)速PI調(diào)節(jié),輸出ITREF----------------------------------------------------------
LACC N_REF ;轉(zhuǎn)速給定值,外部輸入,已轉(zhuǎn)化成Q12格式
SUB N
SACL EPISPEED ;轉(zhuǎn)速偏差
LACC XISPEED,12 ;轉(zhuǎn)速調(diào)節(jié)器積分累計量
LT EPISPEED
MPY KPN ;乘比例系數(shù),Q12格式
APAC ;累加
SACH UPI,4 ;相當(dāng)于右移12位
BIT UPI,0 ;檢測調(diào)節(jié)器輸出的正負(fù)
BCND UPIMAGZEROS,NTC ;如果正,跳轉(zhuǎn)
LACC ITREFMIN ;否則是負(fù),檢測是否超過電流下限
SUB UPI
BCND NEG_SAT,GT ;超過下限進(jìn)入飽和區(qū)則跳轉(zhuǎn)
LACC UPI ;否則正常調(diào)整
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -