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

📄 foc.lst

📁 电机最小电流控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
     344 0132 733f-          LT        EPISPEED
     345 0133 5405-          MPY       KIN                     ;积分系数,Q12
     346 0134 be04           APAC
     347 0135 2c40-          ADD       XISPEED,12
     348 0136 9c40-          SACH      XISPEED,4               ;更新调节器积分累计量
     349            ;-----------------------计算编码增量累计值------------------------------------------------------------------
     350 0137       NOCALC  
     351 0137 104a-          LACC       SPEEDTMP               
     352 0138 2049-          ADD        ENCINCR 
     353 0139 904a-          SACL       SPEEDTMP 
     354            ;-----------------------将IA,IB,IC转换成IPUQ12格式---------------------------------------------------------
     355 013a bc06           LDP       #6
     356 013b 100c-          LACC      IA
     357 013c bfb0           AND       #3FFH                  ;屏蔽高位
         013d 03ff  
     358 013e bfa0           SUB       #512                    ;向下平移,产生正负电流值
         013f 0200  
     359 0140 900b-          SACL      TMP
     360 0141 730b-          LT         TMP
     361 0142 5401-          MPY       KCURRENT            ;转换系数,Q8格式
     362 0143 be03           PAC
     363 0144 be09           SFL
     364 0145 9f0c-          SACH       IA,7                  ;IA, Q12格式
     365 0146 100d-          LACC       IB
     366 0147 bfb0           AND        #3FFH
         0148 03ff  
     367 0149 bfa0           SUB        #512
         014a 0200  
TMS320C24xx COFF Assembler Version 7.02  Mon Dec 18 17:13:42 2006
Copyright (c) 1987-2002  Texas Instruments Incorporated 
foc.asm                                                              PAGE   10

     368 014b 900b-          SACL       TMP
     369 014c 730b-          LT         TMP
     370 014d 5401-          MPY       KCURRENT
     371 014e be03           PAC
     372 014f be09           SFL
     373 0150 9f0d-          SACH      IB,7                   ;IB, Q12格式
     374 0151 100d-          LACC      IB
     375 0152 200c-          ADD       IA
     376 0153 be02           NEG
     377 0154 900e-          SACL      IC                     ;IC = -(IB+IA)
     378            ;-----------------------CLARKE变换------------------------------------------------------------------------------
     379 0155 bc06           LDP       #6   
     380 0156 730c-                  LT            IA       
     381 0157 d39a       MPY      #5018                  ;乘 =5018,Q12格式
     382 0158 be03       PAC
     383 0159 9c2f-                  SACH      IALFA,4                        ;保存IALFA
     384 015a 110d-                  LACC     IB,1                    ;ACC =2*IB
     385 015b 200c-                  ADD       IA                     ;ACC =IA+2*IB
     386 015c 900b-                  SACL      TMP                    ;暂存
     387 015d 732f-                  LT            IALFA
     388 015e cb50                   MPY       #2896                              ;乘 =2896,Q12格式
     389 015f be03                   PAC           
     390 0160 9c30-      SACH          IBETA ,4                   ;保存IBETA 
     391            ;-----------------------根据TETA_E查SIN, COS表------------------------------------------------------------
     392 0161 102e-          LACC      TETA_E             ;TETA_E范围[0;1000H],[0;360]的Q12格式
     393 0162 bb03           RPT        #3                    ;右移4位,范围变为[0;255],
     394 0163 be0a           SFR
     395 0164 bfb0           AND        #0FFH                 ;屏蔽高位
         0165 00ff  
     396 0166 9045-          SACL       INDEX                ;生成查表指针
     397 0167 bf90           ADD        #SINTAB              ;加上表的首地址
         0168 0006" 
     398 0169 a60f-          TBLR       SIN                   ;保存SIN值
     399 016a 6945-          LACL       INDEX                ;COS(TETA)=SIN(TETA+90°)
     400 016b b840           ADD       #040H                  ;90°= 40H 
     401 016c bfb0           AND       #0FFH
         016d 00ff  
     402 016e bf90           ADD       #SINTAB
         016f 0006" 
     403 0170 a610-          TBLR       COS                   ;保存COS值
     404            ;-------------------------------------- PARK变换-------------------------------------------------------------
     405 0171 bf80                   LACC      #0                          ;累加器清零
         0172 0000  
     406 0173 7330-                  LT            IBETA 
     407 0174 540f-                  MPY       SIN                         ;Q12格式
     408 0175 702f-                  LTA           IALFA                       ;ACC=IBETA *SIN(TETA),T=IALFA
     409 0176 5410-                  MPY       COS                    ;Q12格式
     410 0177 500f-                  MPYA     SIN              ;ACC=IBETA*SIN(TETA)+IALFA*COS(TETA),
     411                                                       ;P=IALFA*SIN(TETA)
     412 0178 9c35-                  SACH      IM,4                        ;保存IM        
     413 0179 bf80                   LACC      #0                      ;累加器清零
         017a 0000  
     414 017b 7330-                  LT            IBETA  
     415 017c 5110-                  MPYS      COS              ;ACC = -IALFA*SIN(TETA) ,P=IBETA*COS(TETA)
TMS320C24xx COFF Assembler Version 7.02  Mon Dec 18 17:13:42 2006
Copyright (c) 1987-2002  Texas Instruments Incorporated 
foc.asm                                                              PAGE   11

     416 017d be04                   APAC                       ;ACC = -IALFA*SIN(TETA) +IBETA*COS(TETA)
     417 017e 9c36-                  SACH      IT,4                   ;保存IT 
     418            ;--------------------------------------转子磁链位置的计算-----------------------------------
     419 017f 1035-             LACC            IM                    ;Q12
     420 0180 304f-             SUB         IDK                   ;Q12
     421 0181 900b-             SACL            TMP
     422 0182 730b-             LT          TMP
     423 0183 544c-             MPY     KR                    ;Q15
     424 0184 be03              PAC
     425 0185 990b-             SACH            TMP,1
     426 0186 100b-             LACC            TMP
     427 0187 204f-             ADD     IDK
     428 0188 904f-             SACL            IDK                     ;IDK=IDK+KR*(IM-IDK), Q12格式
     429 0189 e308              BCND            IDKNOTZERO,NEQ      ;如果IDK≠0跳转
         018a 0190' 
     430 018b bf80              LACC            #0
         018c 0000  
     431 018d 900b-             SACL            TMP                 ;如果IDK=0,则TMP=IT/IDK=0
     432 018e 7980              B           ITPOS
         018f 019e' 
     433 0190       IDKNOTZERO
     434 0190 9052-             SACL            TMP1                   ;暂存IDK,Q12
     435 0191 1036-             LACC            IT
     436 0192 be00              ABS                                ;取绝对值
     437 0193 900b-             SACL            TMP                    ;暂存IT
     438 0194 1c0b-             LACC            TMP,12                 ;右移12位成Q24格式
     439 0195 bb0f              RPT         #15
     440 0196 0a52-             SUBC            TMP1                  ;除法
     441 0197 900b-             SACL            TMP                ;TMP=IT/IDK,Q12格式
     442 0198 1036-             LACC            IT                     ;根据IT的正负调整商的符号
     443 0199 e304              BCND            ITPOS,GT              ;IT>0跳转
         019a 019e' 
     444 019b 100b-             LACC            TMP                   ;否则求补
     445 019c be02              NEG
     446 019d 900b-             SACL            TMP
     447 019e       ITPOS
     448 019e 730b-             LT          TMP
     449 019f 544d-             MPY     KT                    ;Q12格式
     450 01a0 be03              PAC 
     451 01a1 9c0b-             SACH            TMP,4                      ;TMP=TMP*KT,Q12格式
     452 01a2 100b-             LACC            TMP
     453 01a3 203d-             ADD     N                      ;Q12
     454 01a4 be0a          SFR                                ;除2(2对磁极),变成机械转速比
     455 01a5 9050-             SACL            FS                      ;FS=N+KT*(IT/IDK),Q12格式
     456 01a6 1050-             LACC            FS
     457 01a7 be00              ABS
     458 01a8 900b-             SACL            TMP
     459 01a9 730b-             LT          TMP
     460 01aa 544e-             MPY     K                      ;Q0
     461 01ab be03              PAC                               ;计算TETA_E=TETA_E+K*FS
     462                                                       ;=TETA_E+TETAINCR
     463                                                              ;(0-360)->(0-65535)
     464 01ac 9c51-             SACH            TETAINCR,4           ;Q0格式
     465 01ad 4050-             BIT         FS,0                  ;根据FS的正负调整
TMS320C24xx COFF Assembler Version 7.02  Mon Dec 18 17:13:42 2006
Copyright (c) 1987-2002  Texas Instruments Incorporated 
foc.asm                                                              PAGE   12

     466 01ae e100              BCND            FS_NEG,TC           ;为负则跳转
         01af 01b5' 
     467 01b0 6951-             LACL            TETAINCR            ;否则为正
     468 01b1 622e-             ADDS            TETA_E
     469 01b2 902e-             SACL            TETA_E
     470 01b3 7980              B           FS_POS
         01b4 01b8' 
     471 01b5       FS_NEG  
     472 01b5 692e-             LACL            TETA_E
     473 01b6 6651-             SUBS            TETAINCR
     474 01b7 902e-             SACL            TETA_E
     475 01b8       FS_POS
     476 01b8 1c2e-         LACC       TETA_E,12               ;除24,变成0-4096范围
     477 01b9 982e-         SACH       TETA_E                 ;保存TETA_E
     478            ;-----------------------T轴电流PI调节,输出VTREF-----------------------------
     479 01ba 1034-          LACC      ITREF
     480 01bb 3036-          SUB       IT
     481 01bc 9039-          SACL      EPIT                     ;T轴电流偏差
     482 01bd 1c3b-          LACC      XIT,12                   ;电流调节器积分累计量
     483 01be 7339-          LT         EPIT
     484 01bf 5403-          MPY       KP                      ;比例系数,Q12
     485 01c0 be04           APAC
     486 01c1 9c46-          SACH      UPI,4
     487 01c2 4046-           BIT       UPI,0                    ;检测调节器输出的正负
     488 01c3 e200           BCND      UPIMAGZEROT,NTC      ;如果正,跳转
         01c4 01cf' 
     489 01c5 1008-          LACC       VMIN                   ;否则是负,检测是否超过电压下限
     490 01c6 3046-          SUB        UPI
     491 01c7 e304           BCND      NEG_SATT,GT            ;超过下限进入饱和区则跳转
         01c8 01cc' 
     492 01c9 1046-          LACC UPI                            ;否则正常调整
     493 01ca 7980           B          LIMITERT
         01cb 01d7' 
     494 01cc       NEG_SATT  
     495 01cc 1008-          LACC       VMIN                  ;ACC =下限值
     496 01cd 7980           B          LIMITERT
         01ce 01d7' 
     497 01cf       UPIMAGZEROT 
     498 01cf 1009-          LACC      VMAX                  ;检测是否超过电压上限
     499 01d0 3046-          SUB       UPI 
     500 01d1 e344           BCND     POS_SATT,LT             ;超过上限进入饱和区则跳转
         01d2 01d6' 
     501 01d3 1046-          LACC      UPI                      ;否则正常调整
     502 01d4 7980           B          LIMITERT
         01d5 01d7' 
     503 01d6       POS_SATT  
     504 01d6 1009-          LACC      VMAX                  ;ACC =上限值
     505 01d7       LIMITERT  
     506 01d7 9038-          SACL      VTREF                   ;输出VTREF
     507 01d8 3046-          SUB        UPI
     508 01d9 9047-          SACL      ELPI                      ;求极限偏差
     509 01da 7347-          LT         ELPI
     510 01db 5404-          MPY       KC                       ;积分修正系数,Q12
     511 01dc be03           PAC
TMS320C24xx COFF Assembler Version 7.02  Mon Dec 18 17:13:42 2006
Copyright (c) 1987-2002  Texas Instruments Incorporated 
foc.asm                                                              PAGE   13

     512 01dd 7339-          LT        EPIT
     513 01de 5402-          MPY       KI                        ;积分系数,Q12
     514 01df be04           APAC
     515 01e0 2c3b-          ADD      XIT,12
     516 01e1 9c3b-          SACH     XIT,4                     ;更新调节器积分累计量
     517            ;-----------------------M轴电流PI调节,输出VMREF-------------------------------------------------------
     518 01e2 1033-          LACC      IMREF
     519 01e3 3035-          SUB       IM
     520 01e4 903a-          SACL      EPIM                     ;M轴电流偏差
     521 01e5 1c3c-          LACC      XIM,12                   ;电流调节器积分累计量
     522 01e6 733a-          LT        EPIM
     523 01e7 5403-          MPY       KP                       ;比例系数,Q12
     524 01e8 be04           APAC
     525 01e9 9c46-          SACH      UPI,4
     526 01ea 4046-          BIT       UPI,0                     ;检测调节器输出的正负
     527 01eb e200           BCND     UPIMAGZEROM,NTC       ;如果正,跳转
         01ec 01f7' 
     528 01ed 1008-          LACC      VMIN                   ;否则是负,检测是否超过电压下限
     529 01ee 3046-          SUB       UPI
     530 01ef e304           BCND     NEG_SATM,GT             ;超过下限进入饱和区则跳转
         01f0 01f4' 
     531 01f1 1046-          LACC      UPI                      ;否则正常调整
     532 01f2 7980           B         LIMITERM
         01f3 01ff' 
     533 01f4       NEG_SATM  
     534 01f4 1008-          LACC     VMIN                     ;ACC =下限值
     535 01f5 7980           B         LIMITERM
         01f6 01ff' 
     536 01f7       UPIMAGZEROM 
     537 01f7 1009-          LACC      VMAX                  ;检测是否超过电压上限
     538 01f8 3046-          SUB       UPI 
     539 01f9 e344           BCND      POS_SATM,LT            ;超过上限进入饱和区则跳转
         01fa 01fe' 
     540 01fb 1046-          LACC      UPI                      ;否则正常调整
     541 01fc 7980           B         LIMITERM
         01fd 01ff' 
     542 01fe       POS_SATM  
     543 01fe 1009-          LACC      VMAX                   ;ACC =上限值
     544 01ff       LIMITERM  
     545 01ff 9037-          SACL      VMREF                   ;输出VMREF
     546 0200 3046-          SUB       UPI
     547 0201 9047-          SACL      ELPI

⌨️ 快捷键说明

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