📄 ist_pid.lst
字号:
C:\tic2xx\c2000\cgtools\bin\dspa.exe IST_PID.asm IST_PID.obj -gls -v2xx
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:51 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
IST_PID.asm PAGE 1
1 ;====================================================================
2 ; Filename : IST_PID.asm
3 ; Module names: IST_PID
4 ; Initialization routines: IST_PID_INIT
5 ; Description: 转矩电流调节器
6 ;------------------------------------------------------------
7 ; UST0 = UST1 + IST_PID_K0 * ISTE0 + IST_PID_K1 * ISTE1 + IST_PID_K2 * ISTE2
8 ;
9 ; |~~~~~~~~~~~|
10 ; IST0,1 o------> | |
11 ; IST_ref o------> | PID | ----->o UST0
12 ; UST1 o------> | |
13 ; ISTE0,1,2 o------> | |
14 ; IST_PID_K0,K1,K2 o------> |___________|
15 ;
16 ; Modify: 2004.6.17
17 ;=====================================================================
18 .include "f2407.h"
19 .global IST_PID,IST_PID_INIT ; function call
20
21 .global IST0,IST_ref ; Inputs
22 .global IST_PID_K0,IST_PID_K1,IST_PID_K2;Inputs
23 .global ISTE0,ISTE1,ISTE2 ; Inputs
24 .global UST1,UST_TEMP ; Input
25 .global UST0 ; Outputs
26 .global USTmax,USTmin
27 ;=====================================================================
28 0000 IST_PID_INIT:
29 ;=====================================================================
30 0000 bc04 LDP #DP_DATA
31 0001 ae00! SPLK #28000,USTmax ;设最值输出,注意不要超过调制度0.866,28000差不多就是最大了。
0002 6d60
32 0003 ae00! SPLK #-28000,USTmin
0004 92a0
33
34 0005 ae00! SPLK #0,UST1 ;给初值
0006 0000
35 0007 ae00! SPLK #0,ISTE0
0008 0000
36 0009 ae00! SPLK #0,ISTE1
000a 0000
37 000b ae00! SPLK #0,ISTE2
000c 0000
38
39 000d ae00! SPLK #18030,IST_PID_K0
000e 466e
40 ;SPLK #7775,IST_PID_K0 ;根据实际来设定,现在先胡乱设。
41 000f ae00! SPLK #-18000,IST_PID_K1 ;比例积分调节。
0010 b9b0
42 0011 ae00! SPLK #0,IST_PID_K2 ;先设为0,微分增益。
0012 0000
43
44 0013 ef00 RET
45 ;=====================================================================
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:51 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
IST_PID.asm PAGE 2
46 0014 IST_PID:
47 ;=====================================================================
48 0014 be47 SETC SXM
49 0015 bf01 SPM 1 ;符号数相乘
50 ;------------------------------------------------------------
51 0016 bc04 LDP #DP_DATA
52 ; SPLK #500,ISTE0
53 0017 1000! LACC UST0
54 0018 9000! SACL UST1 ;UST0->UST1
55 0019 1000! LACC ISTE1
56 001a 9000! SACL ISTE2 ;ISTE1->ISTE2
57 001b 1000! LACC ISTE0
58 001c 9000! SACL ISTE1 ;ISTE0->ISTE1
59 ; calculate UST0
60 ; UST0 = UST1 + IST_PID_K0 * ISTE0 + IST_PID_K1 * ISTE1 + IST_PID_K2 * ISTE2
61 001d 1000! LACC IST_ref
62 001e 3000! SUB IST0
63 ;数据处理
64 001f 9000! SACL ISTE0 ;新的ISTE0
65
66 0020 6a00! LACC UST1,16
67 0021 2000! ADD UST_TEMP ;ACC为上一次的计算结果
68 0022 7300! LT ISTE0
69 0023 5400! MPY IST_PID_K0
70 0024 7000! LTA ISTE1
71 0025 5400! MPY IST_PID_K1
72 0026 7000! LTA ISTE2
73 0027 5400! MPY IST_PID_K2
74 0028 be04 APAC
75 ;数据处理
76 0029 9800! SACH UST0 ;存PID计算结果
77 002a 9000! SACL UST_TEMP ;存PID计算结果的低16位。
78 ;------------------------------------------------------------
79 ; 判断 UST0 是否饱和
80 002b 1000! LACC UST0
81 002c 3000! SUB USTmin
82 002d e38c BCND IST_PID_MIN,GEQ
002e 0032'
83 002f 1000! LACC USTmin
84 0030 7980 B IST_PID_RESULT
0031 003c'
85 0032 IST_PID_MIN:
86 0032 1000! LACC UST0
87 0033 3000! SUB USTmax
88 0034 e3cc BCND IST_PID_MAX,LEQ
0035 0039'
89 0036 1000! LACC USTmax
90 0037 7980 B IST_PID_RESULT
0038 003c'
91 0039 IST_PID_MAX:
92 0039 1000! LACC UST0
93 003a 7980 B IST_PID_RESULT
003b 003c'
94 003c IST_PID_RESULT:
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:51 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
IST_PID.asm PAGE 3
95 003c 9000! SACL UST0 ; 最终结果
96 ;------------------------------------------------------------
97 003d bf00 SPM 0
98 003e ef00 RET
No Errors, No Warnings
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -