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

📄 ac_tvc.asm

📁 用TI TMS320LF2407A DSP实现交流异步电动机的矢量控制包括CLARKE变换
💻 ASM
📖 第 1 页 / 共 3 页
字号:
         B         LIMITERS
NEG_SAT   
         LACC      ITREFMIN              ;ACC =下限值
         B          LIMITERS
UPIMAGZEROS 
         LACC      ITREFMAX             ;检测是否超过电流上限
         SUB       UPI 
         BCND     POS_SAT,LT              ;超过上限进入饱和区则跳转
         LACC      UPI                     ;否则正常调整
         B          LIMITERS
POS_SAT   
         LACC     ITREFMAX               ;ACC =上限值
LIMITERS  
         SACL     ITREF                    ;输出ITREF
         SUB       UPI
         SACL      ELPI                     ;求极限偏差
         LT         ELPI
         MPY       KCN                    ;积分修正系数,Q12
         PAC
         LT        EPISPEED
         MPY       KIN                     ;积分系数,Q12
         APAC
         ADD       XISPEED,12
         SACH      XISPEED,4               ;更新调节器积分累计量
;-----------------------计算编码增量累计值------------------------------------------------------------------
NOCALC  
         LACC       SPEEDTMP               
         ADD        ENCINCR 
         SACL       SPEEDTMP 
;-----------------------将IA,IB,IC转换成IPUQ12格式---------------------------------------------------------
         LDP       #0
         LACC      IA
         AND       #3FFH                  ;屏蔽高位
         SUB       #512                    ;向下平移,产生正负电流值
         SACL      TMP
         LT         TMP
         MPY       KCURRENT            ;转换系数,Q8格式
         PAC
         SFL
         SACH       IA,7                  ;IA, Q12格式
         LACC       IB
         AND        #3FFH
         SUB        #512
         SACL       TMP
         LT         TMP
         MPY       KCURRENT
         PAC
         SFL
         SACH      IB,7                   ;IB, Q12格式
         LACC      IB
         ADD       IA
         NEG
         SACL      IC                     ;IC = -(IB+IA)
;-----------------------CLARKE变换--------------------------------------------------------------------------------
         LDP       #0   
		 LT	       IA	
     MPY      #5018                  ;乘 =5018,Q12格式
     PAC
		 SACH	   IALFA,4	  	          ;保存IALFA
		 LACC     IB,1                    ;ACC =2*IB
		 ADD	   IA                     ;ACC =IA+2*IB
		 SACL	   TMP                    ;暂存
		 LT	       IALFA
		 MPY	   #2896		              ;乘 =2896,Q12格式
		 PAC           
     SACH	   IBETA ,4  		      ;保存IBETA 
;-----------------------根据TETA_E查SIN, COS表------------------------------------------------------------
         LACC      TETA_E             ;TETA_E范围[0;1000H],[0;360]的Q12格式
         RPT        #3                    ;右移4位,范围变为[0;255],
         SFR
         AND        #0FFH                 ;屏蔽高位
         SACL       INDEX                ;生成查表指针
         ADD        #SINTAB              ;加上表的首地址
         TBLR       SIN                   ;保存SIN值
         LACL       INDEX                ;COS(TETA)=SIN(TETA+90°)
         ADD       #040H                  ;90°= 40H 
         AND       #0FFH
         ADD       #SINTAB
         TBLR       COS                   ;保存COS值
;-------------------------------------- PARK变换-------------------------------------------------------------
		 LACC	   #0		               ;累加器清零
		 LT	       IBETA 
		 MPY	   SIN          	       ;Q12格式
		 LTA	       IALFA      	           ;ACC=IBETA *SIN(TETA),T=IALFA
		 MPY	   COS                    ;Q12格式
		 MPYA     SIN              ;ACC=IBETA*SIN(TETA)+IALFA*COS(TETA),
                                           ;P=IALFA*SIN(TETA)
		 SACH      IM,4  	               ;保存IM        
		 LACC      #0          	           ;累加器清零
		 LT	       IBETA  
		 MPYS      COS  	    ;ACC = -IALFA*SIN(TETA) ,P=IBETA*COS(TETA)
		 APAC              	    ;ACC = -IALFA*SIN(TETA) +IBETA*COS(TETA)
		 SACH      IT,4                   ;保存IT 
;--------------------------------------转子磁链位置的计算-----------------------------------
	    LACC	    IM                    ;Q12
	    SUB	        IDK                   ;Q12
	    SACL	    TMP
	    LT	        TMP
	    MPY	    KR                    ;Q15
	    PAC
	    SACH	    TMP,1
	    LACC	    TMP
	    ADD	    IDK
	    SACL	    IDK	                    ;IDK=IDK+KR*(IM-IDK), Q12格式
	    BCND	    IDKNOTZERO,NEQ      ;如果IDK≠0跳转
	    LACC	    #0
	    SACL	    TMP	                ;如果IDK=0,则TMP=IT/IDK=0
	    B	        ITPOS
IDKNOTZERO
	    SACL	    TMP1                   ;暂存IDK,Q12
	    LACC	    IT
	    ABS                                ;取绝对值
	    SACL	    TMP                    ;暂存IT
	    LACC	    TMP,12                 ;右移12位成Q24格式
	    RPT	        #15
	    SUBC	    TMP1                  ;除法
	    SACL	    TMP	               ;TMP=IT/IDK,Q12格式
	    LACC	    IT                     ;根据IT的正负调整商的符号
	    BCND	    ITPOS,GT              ;IT>0跳转
	    LACC	    TMP                   ;否则求补
	    NEG
	    SACL	    TMP
ITPOS
	    LT	        TMP
	    MPY	    KT                    ;Q12格式
	    PAC	
	    SACH	    TMP,4	               ;TMP=TMP*KT,Q12格式
	    LACC	    TMP
	    ADD	    N                      ;Q12
        SFR                                ;除2(2对磁极),变成机械转速比
	    SACL	    FS	                    ;FS=N+KT*(IT/IDK),Q12格式
	    LACC	    FS
	    ABS
	    SACL	    TMP
	    LT	        TMP
	    MPY	    K                      ;Q0
	    PAC                               ;计算TETA_E=TETA_E+K*FS
                                           ;=TETA_E+TETAINCR
		                                  ;(0-360)->(0-65535)
	    SACH	    TETAINCR,4           ;Q0格式
	    BIT	        FS,0                  ;根据FS的正负调整
	    BCND	    FS_NEG,TC           ;为负则跳转
	    LACL	    TETAINCR            ;否则为正
	    ADDS	    TETA_E
	    SACL	    TETA_E
	    B	        FS_POS
FS_NEG	
	    LACL	    TETA_E
	    SUBS	    TETAINCR
	    SACL	    TETA_E
FS_POS
        LACC       TETA_E,12               ;除24,变成0-4096范围
        SACH       TETA_E                 ;保存TETA_E
;-----------------------T轴电流PI调节,输出VTREF-----------------------------
         LACC      ITREF
         SUB       IT
         SACL      EPIT                     ;T轴电流偏差
         LACC      XIT,12                   ;电流调节器积分累计量
         LT         EPIT
         MPY       KP                      ;比例系数,Q12
         APAC
         SACH      UPI,4
          BIT       UPI,0                    ;检测调节器输出的正负
         BCND      UPIMAGZEROT,NTC      ;如果正,跳转
         LACC       VMIN                   ;否则是负,检测是否超过电压下限
         SUB        UPI
         BCND      NEG_SATT,GT            ;超过下限进入饱和区则跳转
         LACC UPI                            ;否则正常调整
         B          LIMITERT
NEG_SATT  
         LACC       VMIN                  ;ACC =下限值
         B          LIMITERT
UPIMAGZEROT 
         LACC      VMAX                  ;检测是否超过电压上限
         SUB       UPI 
         BCND     POS_SATT,LT             ;超过上限进入饱和区则跳转
         LACC      UPI                      ;否则正常调整
         B          LIMITERT
POS_SATT  
         LACC      VMAX                  ;ACC =上限值
LIMITERT  
         SACL      VTREF                   ;输出VTREF
         SUB        UPI
         SACL      ELPI                      ;求极限偏差
         LT         ELPI
         MPY       KC                       ;积分修正系数,Q12
         PAC
         LT        EPIT
         MPY       KI                        ;积分系数,Q12
         APAC
         ADD      XIT,12
         SACH     XIT,4                     ;更新调节器积分累计量
;-----------------------M轴电流PI调节,输出VMREF-------------------------------------------------------
         LACC      IMREF
         SUB       IM
         SACL      EPIM                     ;M轴电流偏差
         LACC      XIM,12                   ;电流调节器积分累计量
         LT        EPIM
         MPY       KP                       ;比例系数,Q12
         APAC
         SACH      UPI,4
         BIT       UPI,0                     ;检测调节器输出的正负
         BCND     UPIMAGZEROM,NTC       ;如果正,跳转
         LACC      VMIN                   ;否则是负,检测是否超过电压下限
         SUB       UPI
         BCND     NEG_SATM,GT             ;超过下限进入饱和区则跳转
         LACC      UPI                      ;否则正常调整
         B         LIMITERM
NEG_SATM  
         LACC     VMIN                     ;ACC =下限值
         B         LIMITERM
UPIMAGZEROM 
         LACC      VMAX                  ;检测是否超过电压上限
         SUB       UPI 
         BCND      POS_SATM,LT            ;超过上限进入饱和区则跳转
         LACC      UPI                      ;否则正常调整
         B         LIMITERM
POS_SATM  
         LACC      VMAX                   ;ACC =上限值
LIMITERM  
         SACL      VMREF                   ;输出VMREF
         SUB       UPI
         SACL      ELPI
         LT        ELPI
         MPY      KC                        ;积分修正系数,Q12
         PAC
         LT        EPIM
         MPY       KI                        ;积分系数,Q12
         APAC

⌨️ 快捷键说明

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