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

📄 pid.lst

📁 一个锅炉温度控制程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -