📄 omiga_pid.lst
字号:
C:\tic2xx\c2000\cgtools\bin\dspa.exe Omiga_PID.asm Omiga_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
Omiga_PID.asm PAGE 1
1 ;====================================================================
2 ; Filename : Omiga_PID.asm
3 ; Module names: Omiga_PID
4 ; Initialization routines: Omiga_PID_INIT
5 ; Description: Omiga的PID调节器
6 ;------------------------------------------------------------
7 ; IST_ref = IST_ref1 + Omiga_PID_K0 * OmigaE0 + Omiga_PID_K1 * OmigaE1 + Omiga_PID_K2 * OmigaE2
8 ;
9 ; |~~~~~~~~~~~|
10 ; OmigaR0,1 o------> | |
11 ; Omiga_ref o------> | PID | ----->o IST_ref
12 ; IST_ref1 o------> | |
13 ; OmigaE0,1,2 o------> | |
14 ; Omiga_PID_K0,K1,K2 o------> |___________|
15 ;
16 ; Modify: 2004.8.30
17 ;=====================================================================
18 .include "f2407.h"
19 .global Omiga_PID,Omiga_PID_INIT ; function call
20 .global OMIGAE0_FILTER
21
22 .global OmigaR0,Omiga_ref ; Inputs
23 .global Omiga_PID_K0,Omiga_PID_K1,Omiga_PID_K2;Inputs
24 .global OmigaE0,OmigaE1,OmigaE2 ; Inputs
25 .global IST_ref1 ; Input
26 .global IST_ref,IST_ref_TEMP ; Outputs
27 .global IST_refmax,IST_refmin
28 .global OMIGAE0_FILTER_RESULT
29 .global TEMP
30 ;=====================================================================
31 0000 Omiga_PID_INIT:
32 ;=====================================================================
33 0000 bc04 LDP #DP_DATA
34 0001 ae00! SPLK #14000,IST_refmax ; 设定最值输出,7.5A
0002 36b0
35 0003 ae00! SPLK #-14000,IST_refmin ; -7.5A
0004 c950
36
37 0005 ae00! SPLK #0,IST_ref1 ;给初值
0006 0000
38 0007 ae00! SPLK #0,OmigaE0
0008 0000
39 0009 ae00! SPLK #0,OmigaE1
000a 0000
40 000b ae00! SPLK #0,OmigaE2
000c 0000
41
42 000d ae00! SPLK #31200,Omiga_PID_K0
000e 79e0
43 ;SPLK #4065,Omiga_PID_K0 ;根据实际来设定,现在先胡乱设。
44 000f ae00! SPLK #-31000,Omiga_PID_K1
0010 86e8
45 0011 ae00! SPLK #0,Omiga_PID_K2 ;Kp=10000,Ki=25,Kd=0
0012 0000
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:51 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
Omiga_PID.asm PAGE 2
46
47 0013 ef00 RET
48 ;=====================================================================
49 0014 Omiga_PID:
50 ;=====================================================================
51 0014 be47 SETC SXM
52 0015 bf01 SPM 1 ;符号数相乘
53 ;------------------------------------------------------------
54 0016 bc04 LDP #DP_DATA
55 ; SPLK #330,Omiga_ref
56 ; SPLK #270,OmigaR0
57
58 0017 1000! LACC IST_ref
59 0018 9000! SACL IST_ref1 ;IST_ref->IST_ref1
60 0019 1000! LACC OmigaE1
61 001a 9000! SACL OmigaE2 ;OmigaE1->OmigaE2
62 001b 1000! LACC OmigaE0
63 001c 9000! SACL OmigaE1 ;OmigaE0->OmigaE1
64 ; calculate IST_ref
65 ; IST_ref = IST_ref1 + Omiga_PID_K0 * OmigaE0 + Omiga_PID_K1 * OmigaE1 + Omiga_PID_K2 * OmigaE2
66 001d 1000! LACC Omiga_ref
67 001e 3000! SUB OmigaR0
68 ;Omiga_PID_K0,1,2系数用16位表示不够,要增加位数。相当于OmigaE0,1,2放大。
69 001f 9400! SACL OmigaE0,4 ;新的OmigaE0,按最大OmigaE0为1200计算(75Hz),左移4位不会溢出。
70
71 ; SPLK #600,OmigaE0
72
73 0020 7a80 CALL OMIGAE0_FILTER
0021 0000!
74 0022 1000! LACC OMIGAE0_FILTER_RESULT
75 0023 9000! SACL OmigaE0
76
77 0024 6a00! LACC IST_ref,16
78 0025 2000! ADD IST_ref_TEMP ;ACC为上一次PID运算结果。
79 0026 7300! LT OmigaE0
80 0027 5400! MPY Omiga_PID_K0
81 0028 7000! LTA OmigaE1
82 0029 5400! MPY Omiga_PID_K1
83 002a 7000! LTA OmigaE2
84 002b 5400! MPY Omiga_PID_K2
85 002c be04 APAC
86 ;数据处理
87 002d 9800! SACH IST_ref ;存PID计算结果
88 002e 9000! SACL IST_ref_TEMP ;存PID计算结果低16位。
89 ;------------------------------------------------------------
90 ; 判断 IST_ref 是否饱和
91 002f 1000! LACC IST_ref
92 0030 3000! SUB IST_refmin
93 0031 e38c BCND Omiga_PID_MIN,GEQ
0032 0036'
94 0033 1000! LACC IST_refmin
95 0034 7980 B Omiga_PID_RESULT
0035 0040'
96 0036 Omiga_PID_MIN:
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Wed Jun 8 17:23:51 2005
Copyright (c) 1987-1999 Texas Instruments Incorporated
Omiga_PID.asm PAGE 3
97 0036 1000! LACC IST_ref
98 0037 3000! SUB IST_refmax
99 0038 e3cc BCND Omiga_PID_MAX,LEQ
0039 003d'
100 003a 1000! LACC IST_refmax
101 003b 7980 B Omiga_PID_RESULT
003c 0040'
102 003d Omiga_PID_MAX:
103 003d 1000! LACC IST_ref
104 003e 7980 B Omiga_PID_RESULT
003f 0040'
105 0040 Omiga_PID_RESULT:
106 0040 9000! SACL IST_ref ; 最终结果
107 ; SPLK #4096,IST_ref
108 ;------------------------------------------------------------
109 0041 bf00 SPM 0
110 0042 ef00 RET
No Errors, No Warnings
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -