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

📄 sfoc_ti.asm

📁 本程序来自TI公司网站原程序,其功能是通过传统的矢量控制算法来实现对永磁同步电机的控制,矢量控制采用双闭环结构
💻 ASM
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.02       
*******************************************************
;	dspac -i../../../../rtmon/ -i../include -i../../../../lib/dmclib/clib/include -i../../../../lib/drvlib/clib/include -v2xx -iC:/t
;	dspopt NOT RUN
;	dspcg -o -v2xx -o C:\WINDOWS\TEMP\sfoc_ti.if C:\WINDOWS\TEMP\sfoc_ti.asm C:\WINDOWS\TEMP\sfoc_ti.tmp 
	.port
	.file	"sfoc_ti.c"
	.file	"../../../../lib/dmclib/clib/include\svgen.h"

	.stag	.fake0,144
	.member	_gain,0,4,8,16
	.member	_freq,16,4,8,16
	.member	_freq_max,32,4,8,16
	.member	_alpha,48,4,8,16
	.member	_sector,64,4,8,16
	.member	_va,80,4,8,16
	.member	_vb,96,4,8,16
	.member	_vc,112,4,8,16
	.member	_calc,128,148,8,16
	.eos
	.sym	_SVGENMF,0,8,13,144,.fake0
	.sym	_SVGENMF_handle,0,24,13,16,.fake0

	.stag	.fake1,96
	.member	_d,0,4,8,16
	.member	_q,16,4,8,16
	.member	_va,32,4,8,16
	.member	_vb,48,4,8,16
	.member	_vc,64,4,8,16
	.member	_calc,80,148,8,16
	.eos
	.sym	_SVGENDQ,0,8,13,96,.fake1
	.sym	_SVGENDQ_handle,0,24,13,16,.fake1
	.globl	_svgenmf_calc
	.globl	_svgendq_calc
	.file	"../../../../lib/dmclib/clib/include\pid_reg3.h"

	.stag	.fake2,304
	.member	_pid_ref_reg3,0,4,8,16
	.member	_pid_fdb_reg3,16,4,8,16
	.member	_e_reg3,32,4,8,16
	.member	_Kp_reg3,48,4,8,16
	.member	_up_reg3,64,4,8,16
	.member	_ui_hi_reg3,80,4,8,16
	.member	_ui_lo_reg3,96,4,8,16
	.member	_ud_lo_reg3,112,4,8,16
	.member	_ud_hi_reg3,128,4,8,16
	.member	_uprsat_reg3,144,4,8,16
	.member	_pid_out_max,160,4,8,16
	.member	_pid_out_min,176,4,8,16
	.member	_pid_out_reg3,192,4,8,16
	.member	_saterr_reg3,208,4,8,16
	.member	_Ki_reg3,224,4,8,16
	.member	_Kc_reg3,240,4,8,16
	.member	_Kd_reg3,256,4,8,16
	.member	_up1_reg3,272,4,8,16
	.member	_calc,288,148,8,16
	.eos
	.sym	_PIDREG3,0,8,13,304,.fake2
	.globl	_pid_reg3_calc
	.file	"../../../../lib/dmclib/clib/include\rmp_cntl.h"

	.stag	.fake3,128
	.member	_target_value,0,4,8,16
	.member	_rmp_dly_max,16,4,8,16
	.member	_rmp_lo_limit,32,4,8,16
	.member	_rmp_hi_limit,48,4,8,16
	.member	_rmp_delay_cntl,64,4,8,16
	.member	_setpt_value,80,4,8,16
	.member	_s_eq_t_flg,96,4,8,16
	.member	_calc,112,148,8,16
	.eos
	.sym	_RMPCNTL,0,8,13,128,.fake3
	.globl	_rmp_cntl_calc
	.file	"../../../../lib/dmclib/clib/include\rampgen.h"

	.stag	.fake4,112
	.member	_rmp_freq,0,4,8,16
	.member	_step_angle_max,16,4,8,16
	.member	_angle_rg,32,4,8,16
	.member	_rmp_gain,48,4,8,16
	.member	_rmp_out,64,4,8,16
	.member	_rmp_offset,80,4,8,16
	.member	_calc,96,148,8,16
	.eos
	.sym	_RAMPGEN,0,8,13,112,.fake4
	.sym	_RAMPGEN_handle,0,24,13,16,.fake4
	.globl	_rampgen_calc
	.file	"../../../../lib/dmclib/clib/include\smopos.h"

	.stag	.fake5,368
	.member	_vsalfa,0,4,8,16
	.member	_esalfa,16,4,8,16
	.member	_zalfa,32,4,8,16
	.member	_gsmopos,48,4,8,16
	.member	_isalfae,64,4,8,16
	.member	_fsmopos,80,4,8,16
	.member	_vsbeta,96,4,8,16
	.member	_esbeta,112,4,8,16
	.member	_zbeta,128,4,8,16
	.member	_isbetae,144,4,8,16
	.member	_isalfa,160,4,8,16
	.member	_isalfaerr,176,4,8,16
	.member	_kslide,192,4,8,16
	.member	_isbeta,208,4,8,16
	.member	_isbetaerr,224,4,8,16
	.member	_esalfalo,240,4,8,16
	.member	_kslf,256,4,8,16
	.member	_esbetalo,272,4,8,16
	.member	_thetau,288,4,8,16
	.member	_thetae,304,4,8,16
	.member	_comp_ang_flg,320,4,8,16
	.member	_speedref,336,4,8,16
	.member	_calc,352,148,8,16
	.eos
	.sym	_SMOPOS,0,8,13,368,.fake5
	.globl	_smopos_calc
	.file	"../../../../lib/dmclib/clib/include\speed_fr.h"

	.stag	.fake6,144
	.member	_theta_elec,0,4,8,16
	.member	_K1_fr,16,4,8,16
	.member	_theta_old,32,4,8,16
	.member	_K2_fr,48,4,8,16
	.member	_speed_frq,64,4,8,16
	.member	_K3_fr,80,4,8,16
	.member	_rpm_max,96,4,8,16
	.member	_speed_rpm,112,4,8,16
	.member	_calc,128,148,8,16
	.eos
	.sym	_SPEED_MEAS,0,8,13,144,.fake6
	.globl	_speed_frq
	.file	"../../../../lib/dmclib/clib/include\volt_cal.h"

	.stag	.fake7,160
	.member	_DC_bus,0,4,8,16
	.member	_Mfunc_V1,16,4,8,16
	.member	_Mfunc_V2,32,4,8,16
	.member	_Mfunc_V3,48,4,8,16
	.member	_Vphase_A,64,4,8,16
	.member	_Vphase_B,80,4,8,16
	.member	_Vphase_C,96,4,8,16
	.member	_Vdirect,112,4,8,16
	.member	_Vquadra,128,4,8,16
	.member	_calc,144,148,8,16
	.eos
	.sym	_PHASEVOLTAGE,0,8,13,160,.fake7
	.globl	_phase_voltage_calc
	.file	"../include\sfoc_ti.h"

	.stag	.fake8,48
	.member	_a,0,4,8,16
	.member	_b,16,4,8,16
	.member	_c,32,4,8,16
	.eos
	.sym	_triad,0,8,13,48,.fake8

	.stag	.fake9,32
	.member	_d,0,4,8,16
	.member	_q,16,4,8,16
	.eos
	.sym	_dq,0,8,13,32,.fake9

	.stag	.fake10,48
	.member	_D,0,4,8,16
	.member	_Q,16,4,8,16
	.member	_theta,32,4,8,16
	.eos
	.sym	_DQt,0,8,13,48,.fake10

	.stag	.fake11,2400
	.member	_GPR0,0,4,8,16
	.member	_GPR1,16,4,8,16
	.member	_GPR2,32,4,8,16
	.member	_speed_ref,48,4,8,16
	.member	_speed_ref_rpm,64,4,8,16
	.member	_Id_ref,80,4,8,16
	.member	_Iq_ref,96,4,8,16
	.member	_Vd_testing,112,4,8,16
	.member	_Vq_testing,128,4,8,16
	.member	_lockrtr_flg,144,4,8,16
	.member	_Mea_spd,160,4,8,16
	.member	_Est_spd,176,4,8,16
	.member	_shaft_theta_elec,192,4,8,16
	.member	_shaft_direction,208,4,8,16
	.member	_Vbus,224,4,8,16
	.member	_current_abc,240,8,8,48,.fake8
	.member	_current_dq,288,8,8,32,.fake9
	.member	_current_DQ,320,8,8,32,.fake9
	.member	_current_dqt,352,8,8,48,.fake10
	.member	_voltage_dq,400,8,8,32,.fake9
	.member	_voltage_DQt,432,8,8,48,.fake10
	.member	_svgen,480,8,8,96,.fake1
	.member	_pid_id,576,8,8,304,.fake2
	.member	_pid_iq,880,8,8,304,.fake2
	.member	_pid_spd,1184,8,8,304,.fake2
	.member	_smo,1488,8,8,368,.fake5
	.member	_rmpc,1856,8,8,128,.fake3
	.member	_rg,1984,8,8,112,.fake4
	.member	_speed,2096,8,8,144,.fake6
	.member	_volt,2240,8,8,160,.fake7
	.eos
	.sym	_SFOC_TI,0,8,13,2400,.fake11
	.sym	_SFOC_TI_handle,0,24,13,16,.fake11
	.globl	_SFOC_TI_Init
	.globl	_SFOC_TI_Run
	.globl	_mul_q
	.file	"sfoc_ti.c"
	.text

	.sym	_SFOC_TI_Init,_SFOC_TI_Init,32,2,0
	.globl	_SFOC_TI_Init

	.func	33
;>>>> 	void SFOC_TI_Init(SFOC_TI_handle v)
******************************************************
* FUNCTION DEF : _SFOC_TI_Init
******************************************************
_SFOC_TI_Init:

LF1	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR2

	.sym	_v,-3+LF1,24,9,16,.fake11
	.line	2
	.line	17
;>>>> 	    v->rg.step_angle_max = 874;   /* This is based on 15kHz sampling frequency */     
	LARK	AR2,-3+LF1
	MAR	*0+
	LAR	AR3,* ,AR3
	ADRK	125
	SPLK	#874,* 
	.line	22
;>>>> 	    v->rmpc.rmp_dly_max = 50;        
	LACK	50
	SBRK	8
	SACL	*+
	.line	23
;>>>> 	    v->rmpc.rmp_lo_limit = 0x8000;        
	SPLK	#-32768,*+
	.line	24
;>>>> 	    v->rmpc.rmp_hi_limit = 0x7FFF;   
	SPLK	#32767,* ,AR1
EPI0_1:
	.line	26
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	58,000000000H,1

	.sym	_SFOC_TI_Run,_SFOC_TI_Run,32,2,0
	.globl	_SFOC_TI_Run

	.func	389
;>>>> 	void SFOC_TI_Run(SFOC_TI_handle v)
******************************************************
* FUNCTION DEF : _SFOC_TI_Run
******************************************************
_SFOC_TI_Run:

LF2	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR2

	.sym	_v,-3+LF2,24,9,16,.fake11
	.line	2
	.line	7
;>>>> 	    v->rmpc.target_value = v->speed_ref;  
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* 
	LAR	AR4,* ,AR3
	ADRK	3
	LAC	* ,AR4
	ADRK	116
	SACL	* ,AR2
	.line	12
;>>>> 	    v->rmpc.calc((void *)&v->rmpc); 	/* Call RMPCNTL compute function */
	LAC	* ,AR1
	ADDK	116
	SACL	*+,AR3
	ADRK	120
	LAC	* ,AR1
	CALA
	MAR	*-,AR2
	.line	17
;>>>> 	    v->rg.rmp_freq = v->rmpc.setpt_value;  
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* 
	LAR	AR4,* ,AR3
	ADRK	121
	LAC	* ,AR4
	ADRK	124
	SACL	* ,AR2
	.line	22
;>>>> 	    v->rg.calc((void *)&v->rg); 	/* Call RAMPGEN compute function */
	LAC	* ,AR1
	ADDK	124
	SACL	*+,AR3
	ADRK	9
	LAC	* ,AR1
	CALA
	MAR	*-,AR2
	.line	27
;>>>> 	    v->voltage_DQt.D = v->Vd_testing;
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* 
	LAR	AR4,* ,AR3
	ADRK	7
	LAC	* ,AR4
	ADRK	27
	SACL	*+,AR3
	.line	28
;>>>> 	    v->voltage_DQt.Q = v->Vq_testing;
	MAR	*+
	LAC	* ,AR4
	SACL	* ,AR3
	.line	29
;>>>> 	    v->voltage_DQt.theta = v->rg.rmp_out;
	ADRK	120
	LAC	* ,AR4
	MAR	*+
	SACL	* ,AR2
	.line	34
;>>>> 		ipark((void *)&v->voltage_DQt,(void *)&v->voltage_dq);
	LAC	* ,AR1
	ADDK	25
	SACL	*+
	ADDK	2
	SACL	*+
	CALL	_ipark
	SBRK	2
	.line	39
;>>>> 	    v->svgen.d = v->voltage_dq.d;      
	MAR	* ,AR2
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* 
	LAR	AR4,* ,AR3
	ADRK	25
	LAC	* ,AR4
	ADRK	30
	SACL	*+,AR3
	.line	40
;>>>> 		v->svgen.q = v->voltage_dq.q;      
	MAR	*+
	LAC	* ,AR4
	SACL	* ,AR2
	.line	45
;>>>> 	    v->svgen.calc((void *)&v->svgen); 	/* Call SVGENDQ compute function */
	LAC	* ,AR1
	ADDK	30
	SACL	*+,AR3
	ADRK	9
	LAC	* ,AR1
	CALA
	MAR	*-
EPI0_2:
	.line	47
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	435,000000000H,1
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	_ipark
	.end

⌨️ 快捷键说明

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