📄 pid.lst
字号:
189 1 signed long tempDeltU;
190 1 float tempU;
191 1
192 1 tempU = U;
193 1
194 1 /*计算Kp,Ki,Kd*/
195 1
196 1 /*================================
将float乘以1000,转化成long型进行计算
===================================*/
199 1 Kp = 100000/p;
200 1 Ki = Kp/I*Ts;
201 1
202 1 /*Kd少乘100,方便与上层通讯*/
203 1 Kd = Kp*D/(Ts*100);
204 1
205 1 /*计算DeltU*/
206 1 /*================================
将float乘以1000,转化成long型进行计算
===================================*/
209 1
210 1 //扩大1000倍,ymax-ymin = 1000*/
211 1 DeltYk = (signed int)(Yk - Yk1);
212 1 Ek = (signed int)(Rk-Yk);
213 1
214 1 DeltEk = Ek - Ek1;
215 1
216 1 tempDeltU = Kp*DeltEk;
217 1 tempDeltU += Ki*Ek;
218 1 tempDeltU += Kd*(DeltYk - DeltYk1);
219 1
220 1 //反归一化
221 1
222 1 DeltU = (float)tempDeltU/10000.0;
223 1
224 1 //控制量变化量限幅
225 1 if(DeltU >= DUmax) {
226 2 U += DUmax;
227 2 }
228 1 else if(DeltU <= -DUmax) {
229 2 U -= DUmax;
230 2 }
231 1 else {
232 2 U += DeltU;
233 2 }
234 1
235 1 /*控制量限幅*/
236 1 CheckU();
237 1
238 1 /*防止出现控制量突变*/
239 1 if(abs(U-tempU) > DUmax) {
240 2 U = tempU;
241 2 }
C51 COMPILER V3.20, SN-0 PID 05/24/04 10:40:00 PAGE 5
242 1
243 1
244 1
245 1 /*动作继电器*/
246 1 if ((U-Angle)>Sens) {
247 2 set_jdq_mode(2);
248 2 MotorDir =2;
249 2 } /*正转*/
250 1
251 1 else if((U-Angle)<-Sens){
252 2 set_jdq_mode(1);
253 2 MotorDir =1;
254 2 } /*反转*/
255 1
256 1 else {
257 2 set_jdq_mode(0);
258 2 MotorDir =0;
259 2 }
260 1
261 1 /*保存参数*/
262 1 Ek1 = Ek;
263 1 DeltEk1 = DeltEk;
264 1 Yk1 = Yk;
265 1 DeltYk1 = DeltYk;
266 1
267 1 clear_watchdog();
268 1 }
C51 COMPILER V3.20, SN-0 PID 05/24/04 10:40:00 PAGE 6
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1
T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
T2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
Update_PID_Para. . . . . . . . . . . . PUBLIC CODE PROC ----- -----
CalcTemp . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
airtemp. . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
bias_vol . . . . . . . . . . . . . . AUTO DATA FLOAT 0002H 4
ad_vol . . . . . . . . . . . . . . . AUTO DATA FLOAT 0006H 4
vol. . . . . . . . . . . . . . . . . AUTO DATA FLOAT 000AH 4
T2IE . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CDH 1
RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
_abs . . . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1
ad_val_bk. . . . . . . . . . . . . . . EXTERN IDATA ARRAY ----- 4
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
INT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1
BGEN . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CBH 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
INT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
_temp2vol. . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
_vol2temp. . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
T2IP . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CEH 1
PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1
T2EX . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1
C_T2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C9H 1
WR . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
_save_pid. . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
nrfrm. . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
dat. . . . . . . . . . . . . . . . . AUTO DATA PTR 0001H 1
CheckU . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1
IE1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008BH 1
clear_watchdog . . . . . . . . . . . . EXTERN CODE PROC ----- -----
CP_RL2 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C8H 1
_CheckPara . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
Para . . . . . . . . . . . . . . . . AUTO DATA FLOAT 0000H 4
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
ET2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ADH 1
TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1
TF2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CFH 1
RB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009AH 1
EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1
IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1
TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1
EX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AAH 1
IT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008AH 1
P. . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D0H 1
SM0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009FH 1
SM1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009EH 1
SM2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009DH 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
C51 COMPILER V3.20, SN-0 PID 05/24/04 10:40:00 PAGE 7
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
PT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1
RS0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D3H 1
PT2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BDH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
RS1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D4H 1
_set_jdq_mode. . . . . . . . . . . . . EXTERN CODE PROC ----- -----
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
TR2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CAH 1
PX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1
PX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1
PID. . . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
tempDeltU. . . . . . . . . . . . . . AUTO DATA LONG 0000H 4
tempU. . . . . . . . . . . . . . . . AUTO DATA FLOAT 0004H 4
PID. . . . . . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 54
ReceiveValue . . . . . . . . . . . . MEMBER ----- UNION 0000H 18
CalValue . . . . . . . . . . . . . . MEMBER ----- UNION 0012H 18
SendValue. . . . . . . . . . . . . . MEMBER ----- UNION 0024H 18
CalcAngle. . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
vol. . . . . . . . . . . . . . . . . AUTO DATA FLOAT 0000H 4
DUmax. . . . . . . . . . . . . . . . . PUBLIC DATA INT 0000H 2
UpdateData . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1
OnNewData. . . . . . . . . . . . . . . EXTERN IDATA U_CHAR ----- 1
RXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
TXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
T2RSE. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CCH 1
FPBUF. . . . . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 16
save . . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0000H 16
F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1
uValue . . . . . . . . . . . . . . . . * TAG * ----- UNION ----- 18
sValue . . . . . . . . . . . . . . . MEMBER ----- STRUCT 0000H 18
bValue . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0000H 18
cool_temp_bk . . . . . . . . . . . . . EXTERN IDATA U_INT ----- 2
Init_Para. . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
Update_Calbuffer_Para2Send . . . . . . PUBLIC CODE PROC ----- -----
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2015 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 34
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -