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

📄 foc.lst

📁 电机最小电流控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
     177 007a 9042-          SACL      ITREFMIN
     178 007b bf80           LACC      #0
         007c 0000  
     179 007d 9034-          SACL      ITREF
     180 007e 9033-          SACL      IMREF
     181 007f 903e-          SACL      N_REF
     182 0080 9045-          SACL      INDEX
     183 0081 903c-          SACL      XIM
     184 0082 903b-          SACL      XIT
     185 0083 9040-          SACL      XISPEED
     186 0084 9046-          SACL      UPI
     187 0085 9047-          SACL      ELPI
     188 0086 9048-          SACL      ENCODEROLD 
     189 0087 903d-          SACL      N 
     190 0088 904a-          SACL      SPEEDTMP 
     191 0089 bf80           LACC      #SPEEDSTEP30           ;SPEEDSTEP=30
         008a 001e  
     192 008b 904b-          SACL      SPEEDSTEP
     193                     
     194 008c ae53-          SPLK #0H ,PWMCNT_LED     
         008d 0000  
     195 008e bf08           LAR        AR0,#DEC_MS       ;传送逆阵数据
         008f 0011- 
     196 0090 b117           LAR        AR1,#(24-1)          ; 24个
     197 0091 bf80           LACC       #ANGLES_          ; 指向源
         0092 0106" 
     198 0093 8b88           LARP       AR0 
     199 0094       INIT_TBL  
     200 0094 a6a9           TBLR       *+,AR1              ;下一个
     201 0095 b801           ADD        #1                  ;下一个地址
     202 0096 7b98           BANZ       INIT_TBL,AR0        ;AR1=0结束 
         0097 0094' 
     203 0098 b479           LAR        AR4,#79H            ;用于堆栈保存现场,B2(60H-80H)
     204                 
     205 0099 bce8           LDP   #232
     206 009a ae04           SPLK   #0000100001000010B,T1CON  ;使能T1
         009b 0842  
     207                
     208                        
     209 009c be40           CLRC  INTM                     ; 开总中断         
     210            
     211            
     212            ;-----------------------初始化结束-------------------------------------------------------------------
     213            
TMS320C24xx COFF Assembler Version 7.02  Mon Dec 18 17:13:42 2006
Copyright (c) 1987-2002  Texas Instruments Incorporated 
foc.asm                                                              PAGE    6

     214            ;----------------------主程序略----------------------------------------------------------------------
     215 009d 7980  MAIN  B MAIN
         009e 009d' 
     216            
     217            ;--------------------------------------假中断处理----------------------------------------------------------
     218 009f       PHANTOM   
     219 009f be40              CLRC     INTM
     220 00a0 ef00              RET
     221            ;------------------------PDPINTA Interrupt Service Routine------------------------------------------------  
     222 00a1       PDP_ISR
     223                        ;SETC  INTM
     224 00a1                   STOP_PWM
1                   
1        00a1 bce8                  LDP     #0E8H
1        00a2 6911                  LACL    COMCONA
1        00a3 bfb0                  AND     #0111110111111111B
         00a4 7dff  
1        00a5 9011                  SACL    COMCONA                 ;禁止PWM输出
1                                  
1        00a6 ae13                  SPLK #0FFFH ,ACTRA 
         00a7 0fff  
     225 00a8                   LED_D10_ON
1        00a8 bce1                 LDP #0E1H
1        00a9 6912                 LACL MCRB
1        00aa bfb0                 AND #0FFDFH
         00ab ffdf  
1        00ac 9012                 SACL MCRB
1        00ad 691c                 LACL PCDATDIR
1        00ae bfc0                 OR  #2020H
         00af 2020  
1        00b0 901c                 SACL PCDATDIR
     226 00b1 ef00              RET
     227            ;-----------------------T1下溢中断处理子程序-----------------------------------------------------
     228 00b2       _C_INT2
     229            ;-----------------------保存现场------------------------------------------------------------------------
     230 00b2 8b8c           MAR       *,AR4                ;AR4作为堆栈指针
     231 00b3 8b90           MAR       *-
     232 00b4 8f90           SST        #1,*-                 ;保存状态寄存器1
     233 00b5 8e90           SST        #0,*-                 ;保存状态寄存器0
     234 00b6 9890           SACH      *-                    ;保存ACC高位
     235 00b7 9090           SACL       *-                    ;保存ACC低位
     236 00b8 be46           CLRC  SXM
     237 00b9 bce0           LDP   #224  
     238 00ba 101e           LACC  PIVR                  ;读偏移地址
     239 00bb ba29           SUB   #029H                  ; T1 下溢中断?
     240 00bc e388           BCND    T1UF_ISR,EQ           ;是下溢中断跳T1UF_ISR
         00bd 00c6' 
     241 00be       REST       
     242            ;-----------------------恢复现场------------------------------------------------------------------------
     243 00be 8b8c           LARP      AR4
     244 00bf 8ba0           MAR       *+
     245 00c0 69a0           LACL       *+ 
     246 00c1 61a0           ADD       *+,16
     247 00c2 0ea0           LST       #0,*+
TMS320C24xx COFF Assembler Version 7.02  Mon Dec 18 17:13:42 2006
Copyright (c) 1987-2002  Texas Instruments Incorporated 
foc.asm                                                              PAGE    7

     248 00c3 0fa0           LST       #1,*+
     249 00c4 be40           CLRC      INTM
     250 00c5 ef00           RET
     251 00c6       T1UF_ISR 
     252            
     253 00c6 bce8              LDP   #232
     254 00c7 ae2f              SPLK   #0FFFH,EVAIFRA         ; 清中断标
         00c8 0fff  
     255            ; /*=============设置几个有用的计数器=============*/   
     256 00c9 bc06          LDP  #6
     257 00ca 1053-         LACC PWMCNT_LED
     258 00cb b801          ADD #1H
     259 00cc 9053-         SACL PWMCNT_LED
     260                    
     261 00cd 6953-         LACL PWMCNT_LED
     262             
     263 00ce ba01          SUB #1H 
     264            
     265 00cf e388          BCND  ON   ,EQ
         00d0 00dd' 
     266 00d1 1053-         LACC PWMCNT_LED
     267 00d2 bfa0          SUB #800H
         00d3 0800  
     268 00d4 e388          BZ OFF 
         00d5 00e8' 
     269 00d6 1053-         LACC PWMCNT_LED
     270 00d7 bfa0          SUB #PWMCNT_LED_
         00d8 1000  
     271 00d9 e388          BZ   NEWCNT 
         00da 00f3' 
     272 00db 7980          B IN
         00dc 00f5' 
     273 00dd       ON
     274                
     275 00dd               LED_D8_ON  
1        00dd bce1                 LDP #0E1H
1        00de 6910                 LACL MCRA
1        00df bfb0                 AND #7FFFH
         00e0 7fff  
1        00e1 9010                 SACL MCRA
1        00e2 691a                 LACL PBDATDIR
1        00e3 bfc0                 OR  #8080H
         00e4 8080  
1        00e5 901a                 SACL PBDATDIR
     276 00e6 7980          B   IN
         00e7 00f5' 
     277 00e8       OFF  
     278              
     279 00e8               LED_D8_OFF
1        00e8 bce1                 LDP #0E1H
1        00e9 6910                 LACL MCRA
1        00ea bfb0                 AND #7FFFH
         00eb 7fff  
1        00ec 9010                 SACL MCRA
TMS320C24xx COFF Assembler Version 7.02  Mon Dec 18 17:13:42 2006
Copyright (c) 1987-2002  Texas Instruments Incorporated 
foc.asm                                                              PAGE    8

1        00ed 691a                 LACL PBDATDIR
1        00ee bfb0                 AND  #7F7FH
         00ef 7f7f  
1        00f0 901a                 SACL PBDATDIR
     280 00f1 7980          B IN
         00f2 00f5' 
     281 00f3       NEWCNT   
     282 00f3 ae53-         SPLK #0H ,PWMCNT_LED 
         00f4 0000  
     283 00f5       IN
     284            ;-----------------------电流采样和AD转换------------------------------------------------------
     285 00f5 7a80        CALL   ADC_measure
         00f6 0288' 
     286            ;-----------------------读编码器脉冲数,计算转角增量------------------------------------------------    
     287 00f7 bce8           LDP        #0E8H
     288 00f8 1005           LACC       T2CNT                ;读编码脉冲
     289                     ;NEG                              ;编码器反接线时
     290 00f9 bc06           LDP        #6
     291 00fa 900b-          SACL       TMP
     292 00fb 3048-          SUB       ENCODEROLD          ;减去前一个周期测的脉冲数
     293 00fc 9049-          SACL      ENCINCR             ;得到编码增量
     294 00fd 100b-          LACC      TMP                    
     295 00fe 9048-          SACL      ENCODEROLD         ;更新ENCODEROLD
     296            ;-----------------------计算转速---------------------------------------------------------------------------
     297 00ff 104b-          LACC      SPEEDSTEP            ;检测是否该采样速度
     298 0100 ba01           SUB       #1 
     299 0101 904b-          SACL     SPEEDSTEP
     300 0102 e304           BCND     NOCALC,GT            ;没到采样时刻,退出
         0103 0137' 
     301 0104 734a-          LT        SPEEDTMP              ;到采样时刻,计算编码器增量累计值
     302 0105 cd57           MPY      #KSPEED               ;Q8格式
     303 0106 be03           PAC
     304 0107 be09           SFL
     305 0108 9f3d-          SACH     N,7                    ;相当于右移8位,Q12格式的PU值
     306 0109 bf80           LACC     #0 
         010a 0000  
     307 010b 904a-          SACL     SPEEDTMP             ;SPEEDTMP清零
     308 010c bf80           LACC     #SPEEDSTEP30          ;SPEEDSTEP=30
         010d 001e  
     309 010e 904b-          SACL     SPEEDSTEP            ;SPEEDSTEP重新赋初值
     310            ;-----------------------转速PI调节,输出ITREF----------------------------------------------------------
     311 010f 103e-          LACC     N_REF                 ;转速给定值,外部输入,已转化成Q12格式
     312 0110 303d-          SUB       N
     313 0111 903f-          SACL      EPISPEED             ;转速偏差
     314 0112 1c40-          LACC      XISPEED,12            ;转速调节器积分累计量
     315 0113 733f-          LT         EPISPEED
     316 0114 5406-          MPY       KPN                   ;乘比例系数,Q12格式
     317 0115 be04           APAC                             ;累加
     318 0116 9c46-          SACH      UPI,4                  ;相当于右移12位
     319 0117 4046-          BIT        UPI,0                  ;检测调节器输出的正负
     320 0118 e200           BCND      UPIMAGZEROS,NTC    ;如果正,跳转
         0119 0124' 
     321 011a 1042-          LACC      ITREFMIN             ;否则是负,检测是否超过电流下限
     322 011b 3046-          SUB       UPI
TMS320C24xx COFF Assembler Version 7.02  Mon Dec 18 17:13:42 2006
Copyright (c) 1987-2002  Texas Instruments Incorporated 
foc.asm                                                              PAGE    9

     323 011c e304           BCND     NEG_SAT,GT            ;超过下限进入饱和区则跳转
         011d 0121' 
     324 011e 1046-          LACC     UPI                     ;否则正常调整
     325 011f 7980           B         LIMITERS
         0120 012c' 
     326 0121       NEG_SAT   
     327 0121 1042-          LACC      ITREFMIN              ;ACC =下限值
     328 0122 7980           B          LIMITERS
         0123 012c' 
     329 0124       UPIMAGZEROS 
     330 0124 1043-          LACC      ITREFMAX             ;检测是否超过电流上限
     331 0125 3046-          SUB       UPI 
     332 0126 e344           BCND     POS_SAT,LT              ;超过上限进入饱和区则跳转
         0127 012b' 
     333 0128 1046-          LACC      UPI                     ;否则正常调整
     334 0129 7980           B          LIMITERS
         012a 012c' 
     335 012b       POS_SAT   
     336 012b 1043-          LACC     ITREFMAX               ;ACC =上限值
     337 012c       LIMITERS  
     338 012c 9034-          SACL     ITREF                    ;输出ITREF
     339 012d 3046-          SUB       UPI
     340 012e 9047-          SACL      ELPI                     ;求极限偏差
     341 012f 7347-          LT         ELPI
     342 0130 5407-          MPY       KCN                    ;积分修正系数,Q12
     343 0131 be03           PAC

⌨️ 快捷键说明

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