⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aci31_x1.asm

📁 本程序来自TI公司网站原程序,其功能是通过传统的V/F控制算法来实现对感应电机的控制,控制程序可以采用.asm也可以采用.C。 程序的具体算法和介绍在软件压缩包有详细介绍!
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	.if (phase1_commissioning)

		LDP		#target_value
		BLDD	#speed_setpt, target_value

		CALL	RAMP_CNTL
                            
        LDP		#target_value
        LT		setpt_value
         

		POINT_B0
		MPY	rpm_scaler
		PAC
		SACH	freq_in,5
		
		LDP		#vhz_freq
		BLDD	#freq_in, vhz_freq
				
		CALL	V_Hz_PROFILE
 
 		LDP		#sv_gain
 		BLDD	#v_out, sv_gain
 		BLDD	#vhz_freq, sv_freq
				
		CALL	SVGEN_MF 
		

		CALL	Line2line

	.endif
;---------------------------------------------------------
;---------------------------------------------------------
	;Check PWM o/ps have Space vector shape with RC filter
	;Check ACI spins open loop with Inverter connected
	
	.if (phase2_commissioning)

 		LDP		#target_value
 		BLDD	#speed_setpt, target_value

		CALL	RAMP_CNTL  
		
		LDP		#target_value  
		
		LT		setpt_value
		
		POINT_B0
		MPY		rpm_scaler
		PAC
		SACH	freq_in,5
		
		LDP		#vhz_freq
		BLDD	#freq_in, vhz_freq
				
		CALL	V_Hz_PROFILE

		LDP		#sv_gain
		BLDD	#vhz_freq, sv_freq
		BLDD	#v_out, sv_gain
				
		CALL	SVGEN_MF

		POINT_B0
		
		LACC	direction
		SUB		#1
		BCND	CW, EQ
		
CCW		LDP		#Mfunc_c1
		BLDD	#Ta, Mfunc_c1
		BLDD	#Tb, Mfunc_c2
		BLDD	#Tc, Mfunc_c3  
		
		B		PWMDRV
		
CW		LDP		#Mfunc_c1
		BLDD	#Ta, Mfunc_c1
		BLDD	#Tb, Mfunc_c3
		BLDD	#Tc, Mfunc_c2      
		

PWMDRV	CALL	FC_PWM_O_DRV
        CALL    Line2line

	.endif

;---------------------------------------------------------
	.if (phase3_commissioning)
;---------------------------------------------------------
	;Start open loop & ramp to a pre-set speed
	;Close loop by "switching" PI controller into feedback loop
	;This phase need to be optimized

		
		LDP		#target_value
		BLDD	#speed_setpt, target_value
		
        CALL	RAMP_CNTL

		POINT_B0
        LACC    closed_loop_flag        ; get flag
        BCND    SKIP_PID,EQ             
        
        ; if closed loop flag ==0 then do open loop.
                        
DO_PID:
;---------------------------------------------------------
;---------------------------------------------------------
	;Use RPM scaled speed command to run PID_controller
;---------------------------------------------------------
 
 		LDP		#D_fb
 		BLDD	#BC_OUT, 		D_fb
 		BLDD	#setpt_value, 	D_ref
 		                                  
        CALL    D_PID_REG


        B       CLOSED_LOOP

SKIP_PID        LDP		#D_fb
				BLDD	#setpt_value, D_out
				BLDD	#speed_setpt, D_ref
				BLDD	#speed_rpm, D_fb


CLOSED_LOOP:    

;---------------------------------------------------------
        ; convert to Q15 from rpm scaling. 
        LDP	#D_out
		lt	D_out           ;input speed command (in RPM)   
		POINT_B0
		mpy	rpm_scaler
		pac
		sach	freq_in,5	;Q15 x Q11 = Q26 --> Q15
               	
        LDP		#vhz_freq
        BLDD	#freq_in, vhz_freq

		CALL	V_Hz_PROFILE
                                 
        LDP		#sv_gain
        BLDD	#v_out, sv_gain
        BLDD	#vhz_freq, sv_freq
        
		CALL	SVGEN_MF    
		
		POINT_B0
		LACC	direction
		SUB		#1
		BCND	CW, EQ

CCW		LDP		#Mfunc_c1
		BLDD	#Ta, Mfunc_c1
		BLDD	#Tb, Mfunc_c2
		BLDD	#Tc, Mfunc_c3
		B		PWMGEN	

CW		LDP		#Mfunc_c1
		BLDD	#Ta, Mfunc_c1
		BLDD	#Tb, Mfunc_c3
		BLDD	#Tc, Mfunc_c2

PWMGEN	CALL	FC_PWM_O_DRV
	;Check for Capture event from Hall sensor
		POINT_EV
		BIT	IFRC, BIT0		;Check CAP flag for edge transition on CAP3 pin
		BCND	SKIP_SPEED4, NTC	;If no edge present skip speed routine
		LACC	FIFO1			;Else fetch "Time-stamp" & proceed with Speed meas.

;****************************************************************************************
		LDP		#time_stamp		
		SACL	time_stamp

		LACC	speed_rpm 
		POINT_B0
		SACL	speed_rpm_old

		CALL	SPEED_PRD
        
		POINT_EV
		SPLK	#0FFFFh, IFRC	;Clear all CAP flags

 
 		LDP		#speed_rpm
        lacc    speed_rpm,16 
        
        LDP		#BC_IN
        SACH    BC_IN                 
		
		SPLK	#0100H,GPR4  
		LDP		#speed_rpm
		LACC	speed_rpm,16  
		LDP		#speed_setpt
		SUB	    speed_setpt,16
		SETC    SXM
		ABS                  
		SUB		GPR4,16
		BCND	SKIP_SPEED4,GT

		CALL    BC_CALC 
;****************************************************************************************

SKIP_SPEED4     NOP

                POINT_B0

      
                
	.endif
;---------------------------------------------------------

; Testing of Box Car subroutine erase after testing
	
		CALL    BC_CALC
	

;House keeping & debug prior to ISR exit.
;-----------------------------------------

		CALL	DATA_LOG 

;=========================================================
;End main section of ISR
;=========================================================
;Context restore regs
END_ISR:
		POINT_PG0

		MAR	*, AR1    	;make stack pointer active
		LACL	*-		;Restore Acc low
		ADDH	*-		;Restore Acc high
		LST	#0, *-      ;load ST0
		LST     #1, *-      ;load ST1
		EINT
		RET

;==============================================================================
; Subroutine - Line2Line
; Description: This subroutine calculates line to line voltages
;              from line to neutral voltage
; Van	- Phase A line to neutral voltage
; Vbn	- Phase B line to neutral voltage
; Vcn	- Phase C line to neutral voltage
; Vab = Van-Vbn	Line to line voltage between phases A & B
; Vbc = Vbn-Vcn Line to line voltage between phases B & C
; Vca = Vcn-Van Line to line voltage between phases C & A
;===============================================================================

Line2line

		POINT_B0
		BLDD	#Ta, Van
		BLDD	#Tb, Vbn
		BLDD	#Tc, Vcn
		
		SPLK	#3FFFh, HALF
		SPLK	#8001h, MINUS_ONE
		
		LT		HALF
		MPY		Van
		PAC
		SACH	Van,1
		MPY		Vbn
		PAC
		SACH	Vbn,1
		MPY		Vcn
		PAC
		SACH	Vcn,1
		
		LT		MINUS_ONE
		LACC	Van
		SUB		Vbn		
		SACL	Vab
		LACC	Vbn
		SUB		Vcn
		SACL	Vbc
		LACC	Vcn
		SUB		Van
		SACL	Vca  
		
		RET
;==============================================================================
; I S R  -  PHANTOM
;
; Description:	Dummy ISR, used to trap spurious interrupts.
;
; Modifies:
;
; Last Update:	16-06-95
;==============================================================================
PHANTOM 	B	PHANTOM
PHANTOM1 	B	PHANTOM1
PHANTOM2 	B	PHANTOM2
PHANTOM3 	B	PHANTOM3
PHANTOM4 	B	PHANTOM4
PHANTOM5 	B	PHANTOM5
PHANTOM6 	B	PHANTOM6







    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -