📄 main.asm
字号:
;=========================================================================================
; System Name: ACTIVE POWER FILTER
;
; File Name: MAIN.ASM
;
; Description:This program implements closed loop control of
; ACTIVE POWER FILTER WITH 4-ORDER DIGITER FILTER
;
;
; Originator: ZHENG WEWNBING
; NANJING ELECTRIC POWER AUTOMATION EQUIPMENT GENERAL FACTORY
;
; Target Device:F240, F243, F2407
; To Select the target device see x24x_app.h file.
;-----------------------------------------------------------------------------
; External references
;-----------------------------------------------------------------------------
.include "x24x_app.h"
.global MON_RT_CNFG
;
.ref SYS_INIT
;system current model
.ref SYS_CUR,SYS_CUR_INIT ;function call
.ref iap,ibp,ipla,iplb ;inputs
.ref ia_total,ib_total ;outputs
;
.ref CLARKE, CLARKE_INIT ;function call
.ref clark_a, clark_b ;Inputs
.ref clark_d, clark_q ;Outputs
;Module definitions for external reference.
.ref PARK, PARK_INIT ;function call
.ref park_d, park_q, theta_p ;Inputs
.ref park_D, park_Q ;Outputs
.ref cos_theta,sin_theta
;
.ref IIR_BWT4, IIR_BWT4_INIT ;function call
.ref Xin_IIR ;Inputs
.ref Yout_IIR ;Outputs
.ref I_PARK, I_PARK_INIT ;function call
.ref ipark_D, ipark_Q, theta_ip ;Inputs
.ref ipark_d, ipark_q ;Outputs
.ref sin_theta1,cos_theta1
.ref I_CLARKE, I_CLARKE_INIT ;function call
.ref Iclark_d, Iclark_q ;Inputs
.ref Iclark_a, Iclark_b, Iclark_c ;Outputs
;
.ref CUR_CON_INIT,CUR_CON ;function call
.ref DELTA_IA,DELTA_IB,DELTA_IC ;Inputs
.ref Ta,Tb,Tc ;Outputs
.ref PID_REG2, PID_REG2_INIT ;function call
.ref pid_fb_reg2, pid_ref_reg2 ;Inputs
.ref pid_out_reg2 ;Output
.ref pid_max_reg2, pid_min_reg2
.ref K0_reg2, K1_reg2, Kc_reg2
.ref En0_reg2,Un_reg2
.ref DATA_LOG, DATA_LOG_INIT ;function call
.ref input1,input2,input3,input4
.ref DC_INIT
.ref DC_MAIN
.ref DC_ref
.ref DC_zhi
;
;on-chip ADC model
;-----------------------------------------------------------------------------
; Local Variable Declarations
;-----------------------------------------------------------------------------
.def GPR0 ;General purpose registers.
.def GPR1
.def GPR2
.def GPR3
.def GPR4
.def COMCON
.def U
.def adc_sel
.def theta
.def isa
.def isb
.def ila
.def ilb
.def ia
.def ib
.def ic
.def idc
.def Udc
.def iia
.def iib
.def iic
.def pid_K
.def iq
.def wc
.def iqq
.def as
.def qjia
.def cishu
.def WDPD
.def WDJS
.def jishu1
.bss jishu1
.bss GPR0,1 ;General purpose registers.
.bss GPR1,1
.bss GPR2,1
.bss GPR3,1
.bss GPR4,1
.bss isa,1
.bss isb,1
.bss ila,1
.bss ilb,1
.bss ia,1
.bss ib,1
.bss ic,1
.bss idc,1
.bss Udc,1
.bss iia,1
.bss iib,1
.bss iic,1
.bss U,1
.bss theta,1
.bss adc_sel,1
.bss pid_K,1
.bss iq,1
.bss wc,1
.bss iqq,1
.bss D,1
.bss Q,1
.bss as,1 ;isa-Iclark_a
.bss qjia,1
.bss qxishu,1
.bss cishu,1
.bss WDJS,1
.bss WDPD,1
.bss ling,1
.bss ifcase,1
.bss fuhao1,1
.bss cishu1,1
.bss counter1,1
.bss counter2,1
;Udc_ref .set 2018; 50V DE CAN KAO DIAN YA
;Udc_ref .set 2220; 55v DE CAN KAO DIAN YA
;Udc_ref .set 2613 ; 65v
;Udc_ref .set 2800 ; 70v
;Udc_ref .set 2000;50v
;Udc_ref .set 1200;30v
;Udc_ref .set 4000 ;100v
;Udc_ref .set 1200 ;80V
;Udc_ref .set 2400
;Udc_ref .set 4800 ;120v
;Udc_ref .set 2100
;Udc_ref .set 2079 ;88V
;Udc_ref .set 1100 ; 9,20ri 50v
;Udc_ref .set 1200
;Udc_ref .set 3150
;==============================================================================
; V E C T O R T A B L E ( including RT monitor traps )
;==============================================================================
.sect ".vectors"
.def _c_int0
RESET B _c_int0 ; 00
INT1 B PHANTOM ; 02
INT2 B T1UF_ISR ; 04
INT3 B PHANTOM ; EV interrupt Group B
INT4 B PHANTOM ; PM 8 Int level 4
INT5 B PHANTOM ; PM A Int level 5
INT6 B PHANTOM ; PM C Int level 6
RESERVED B PHANTOM ; PM E (Analysis Int)
SW_INT8 B PHANTOM ; PM 10 User S/W int
SW_INT9 B PHANTOM ; PM 12 User S/W int
SW_INT10 B PHANTOM ; PM 14 User S/W int
SW_INT11 B PHANTOM ; PM 16 User S/W int
SW_INT12 B PHANTOM ; PM 18 User S/W int
SW_INT13 B PHANTOM ; PM 1A User S/W int
SW_INT14 B PHANTOM ; PM 1C User S/W int
SW_INT15 B PHANTOM ; PM 1E User S/W int
SW_INT16 B PHANTOM ; PM 20 User S/W int
TRAP B PHANTOM ; PM 22 Trap vector
NMI B PHANTOM ; PM 24 Non maskable Int
EMU_TRAP B PHANTOM ; PM 26 Emulator Trap
SW_INT20 B PHANTOM ; PM 28 User S/W int
SW_INT21 B PHANTOM ; PM 2A User S/W int
SW_INT22 B PHANTOM ; PM 2C User S/W int
SW_INT23 B PHANTOM ; PM 2E User S/W int
; Note : The above include line must be AFTER the user configurable
; vectors. Do not change the place where this line is included.
;==============================================================================
; M A I N C O D E - starts here
;==============================================================================
.text
_c_int0:
CALL SYS_INIT
CALL SYS_CUR_INIT
CALL CLARKE_INIT
CALL PARK_INIT
CALL IIR_BWT4_INIT
CALL I_PARK_INIT
CALL I_CLARKE_INIT
CALL DC_INIT
CALL CUR_CON_INIT
CALL PID_REG2_INIT
CALL DATA_LOG_INIT
; ----------------------------------------------------
LDP #qxishu
SPLK #152,qxishu
;====================================
;chu shi hua qian yi ge dian liu zhi
LDP #cishu
SPLK #0,cishu
LDP #ia
SPLK #0,ia
SPLK #0,ib
SPLK #0,ic
LDP #WDPD
SPLK #1,WDPD
SPLK #0,WDJS
LDP #ling
SPLK #0,ling
SPLK #0,ifcase
SPLK #1,fuhao1
SPLK #0,cishu1
SPLK #0,counter2
SPLK #0,jishu1
; -------------------------------------------------------
;SYSTEM COMMISSIONING OPTIONS - Initialisation
;---------------------------------------------------------
; LDP #232
; SPLK #01F4h,T1PER
; SPLK #0100h,CMPR1
; SPLK #0100h,CMPR2
; SPLK #0100h,CMPR3
;======================================================
MAIN: ;Main system background loop
;======================================================
; Reset wd timer
; Point at Sys Module reg page 0
; Reset watchdog timer
M_1 KICK_DOG
B MAIN ; Branch back
;======================================================
.sect ".subr"
;===========================================================================
; Routine Name: T1UF_ISR Routine Type: ISR
;
; Description:
;
;
; Originator: Digital control systems Group - Texas Instruments
;
; History:
;
;
; Last Update: 3-26-2001
;===========================================================================
T1UF_ISR:
;Context save regs
MAR *,AR1 ;AR1 is stack pointer
MAR *+ ;skip one position
SST #1, *+ ;save ST1
SST #0, *+ ;save ST0
SACH *+ ;save acc high
SACL * ;save acc low
;NOTE: should use "read-modify-write" to clear Int flags & not SPLK!
POINT_EV
SPLK #0FFFFh,IFRA ; Clear all Group A interrupt flags (T1 ISR)
;=========================================================
;Start main section of ISR
;=========================================================
;---------------------------------------------------------
;SYSTEM COMMISSIONING OPTIONS - Main code
;---------------------------------------------------------
LDP #0E1h
LACC PBDATDIR
AND #0FFEFh
SACL PBDATDIR
* bits 15 0: 0-IOPB7 is input, 1-IOPB7 is output
* bits 14 0: 0-IOPB6 is input, 1-IOPB6 is output
* bits 13 0: 0-IOPB5 is input, 1-IOPB5 is output T3PWM/IOPB5 INT2
* bits 12 1: 0-IOPB4 is input, 1-IOPB4 is output T2PWM CONVST2
* bits 11 1: 0-IOPB3 is input, 1-IOPB3 is output T1PWM CONVST1
* bits 10 0: 0-IOPB2 is input, 1-IOPB2 is output PWM9/IOPB2 INT1
* bits 9 0: 0-IOPB1 is input, 1-IOPB1 is output PWM8
* bits 8 0: 0-IOPB0 is input, 1-IOPB0 is output PWM7
* bits 7 0: 0-IOPB7 low 1-IOPB7 high
* bits 6 0: 0-IOPB6 low 1-IOPB6 high
* bits 5 0: 0-IOPB5 low 1-IOPB5 high
* bits 4 0: 0-IOPB4 low 1-IOPB4 high
* bits 3 0: 0-IOPB3 low 1-IOPB3 high
* bits 2 0: 0-IOPB2 low 1-IOPB2 high
* bits 1 0: 0-IOPB1 low 1-IOPB1 high
* bits 0 0: 0-IOPB0 low 1-IOPB0 high
SETC SXM
LDP #isa
;first off-chip adc
;Read 1st converted value
IN isa,0h
LACC isa,14
SACH isa
;Read 2nd converted value
IN isb,0h
LACC isb,14
SACH isb
;Read 3rd converted value
IN ila,0h
LACC ila,14
SACH ila
;Read 4th converted value
IN ilb,0h
LACC ilb,14
SACH ilb
LDP #0E1h
LACC PBDATDIR
OR #10h
SACL PBDATDIR
LDP #jishu1
LACC #jishu1
BCND TIAO1,GT
SPLK #1011100001010101b,CAPCON
;5432109876543210
TIAO1 SPLK #1010000000000000b,CAPCON
LDP #0E8H
LACC CAPFIFO
AND #1000H ;LI YONG DE SHI CAPTURE4
BCND OZ,EQ
***************************************
LDP #jishu1
SPLK #300,jishu1
SPLK #1010000000000000b,CAPCON
; AND #2000H
; BCND OZ1,EQ
; LACC FIFO4
; LDP #ling
; SACL ling
; BLDD #FIFO3,ling
; NOP
; NOP
OZ1 LDP #ling
BLDD #FIFO3,ling
BLDD #FIFO3,ling
SPLK #1500,ifcase
LDP #cishu1
SPLK #0,cishu1
SPLK #1,fuhao1
BLDD #ling,counter2
OZ NOP
NOP
LDP #counter1
BLDD #T2CNT,counter1
LACC counter1
SUB counter2
BCND DYL1,GEQ
LDP #cishu1
LACC cishu1
ADD #1000
SACL cishu1
DYL1 NOP
BLDD #counter1,counter2
TIAO LDP #cishu1
LACC cishu1
ADD counter1
SUB ling
SUB #3125
BCND DYL3,GT
ADD #3125
DYL3 NOP
NOP
SACL theta
LDP #jishu1
LACC #jishu1
SUB #1
SACL jishu1
LDP #input1
BLDD #theta,input1
BLDD #ifcase,input2
BLDD #CAPFIFO,input3
CALL DATA_LOG
LDP #ifcase
SPLK #0,ifcase
LDP #iap
BLDD #isa,iap
BLDD #isb,ibp
BLDD #ila,ipla
BLDD #ilb,iplb
CALL SYS_CUR
LDP #clark_a
BLDD #ila,clark_a
BLDD #ilb,clark_b
CALL CLARKE
LDP #park_d
BLDD #clark_d,park_d
BLDD #clark_q,park_q
BLDD #theta,theta_p
CALL PARK
SETC SXM
LDP #park_D
LACC park_D
LDP #Xin_IIR
SUB Yout_IIR
; SUB #1061
LDP #D
SACL D
; LDP #input1
; BLDD #park_D,input1
; BLDD #Yout_IIR,input2
; BLDD #D,input3
; CALL DATA_LOG
LDP #park_Q
LACC park_Q
LDP #Xin_IIR
SUB Yout_IIR
; SUB #1161
LDP #Q
SACL Q
; LDP #input1
; BLDD #park_Q,input1
; BLDD #Yout_IIR,input2
; BLDD #Q,input3
; CALL DATA_LOG
; B KPP
LDP #cishu
LACC cishu
BCND XUHUAN,EQ
KPP
SETC SXM
LDP #ia
;Read 1st converted value
IN ia,1h
LACC ia,14
SACH ia
;Read 2nd converted value
IN ib,1h
LACC ib,14
SACH ib
;Read 3rd converted value
IN idc,1h
LACC idc,14
SACH idc
;Read 4th converted value
XUHUAN:
LDP #Udc
SETC SXM
IN Udc,1h
; LACC Udc,13
; SACH Udc
; B KPP
LDP #cishu
SPLK #1,cishu
LDP #WDPD
LACC WDPD
BCND SUB111,EQ
;PID SUH CHU * DING BIAO
; LT pid_out_reg2
; LDP #qxishu
; MPY qxishu
; PAC
; LDP #pid_out_reg2
; SACH pid_out_reg2,1
;==================================
; LDP #A4_ch_sel
; SPLK #5432h,A4_ch_sel
; CALL ADC04U_DRV
; LT C1_out ;wrong spm 0
; MPY wc
; PAC
; LDP #iq
; ADD iq,15
; SACH iqq,1
;=============================================
;Q ZHOU DE FEN LIANG JIA RU YI GE CHANG SHU
; ZHI HOU JIN RU 2-3 FAN BIAN HUAN
; SETC SXM
; LDP #Q
; LACC Q
; LACC #0
; ADD #400
; LDP #qjia
; SACL qjia
;===============================================
;===============================================
;JIANG PID DE SHU CHU JIA DAO D ZHOU SHANG
; LDP #D
; LACC D
; LACC #0
; LDP #pid_out_reg2
; ADD pid_out_reg2
; LDP #D
; SACL D
;=============================================
;=========================================
; PID TIAO JIE O ZHOU FEN LIANG
; LDP #ipark_D
; SPLK #0,ipark_D
; BLDD #pid_out_reg2,ipark_Q
; BLDD #theta,theta_ip
; CALL I_PARK
;===============================================
;==============================================
;PID TIAO JIE D ZHOU FEN LIANG
; LDP #ipark_D
; SPLK #0,ipark_Q
; BLDD #pid_out_reg2,ipark_D
; BLDD #theta,theta_ip
; CALL I_PARK
;================================================
;======================================================
;ZHEN ZHENG DE 2-3 FAN BIAN HUAN
;JIA RU LE YI GE CHANG LIANG
;JIA RU LE PID
LDP #ipark_D
BLDD #D,ipark_D
BLDD #qjia,ipark_Q
BLDD #sin_theta,sin_theta1
BLDD #cos_theta,cos_theta1
CALL I_PARK
;============================================
;=============================================
;Q ZHOU FAN ZHI JIE JIN RU 2-3
; LDP #ipark_D
; BLDD #Yout_IIR,ipark_Q
; SPLK #0,ipark_D
; CALL I_PARK
;======================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -