www.pudn.com > TMS320F2812Sci.rar > Pid.h


/* 
File Name  : pid.cpp 
Description: pid controller in c implement 
Version	   : 0.1 that is debug version 
Author     : he hai long 
Date       : 10/22/2003 
*/ 
 
//PID controller based on Tustin discretization 
/* 
the PID controller moudle is: 
P(k)=K*(b*uc(k)-y(k)) 
I(k+1)=I(k)+K*h*e(k)/Ti 
D(k)=Td*D(k-1)/(Td+N*h)-K*Td*N*(y(k)-y(k-1))/(Td+N*h) 
e(k)=uc(k)-y(k) 
*/ 
 
#ifndef PID_H 
#define PID_H 
struct PidData 
{ 
	struct 
	{ 
		double uc;	//input: Set point 
		double y;	//input: measured variable 
		double u;	//output: controller output 
		double v;	//output: Limited controller output 
	}Signals; 
	struct 
	{ 
		double P;	//proportional part 
		double I;	//integral part 
		double D;	//derivative part 
		double yold;	//delayed measured variable 
	}States; 
	struct 
	{ 
		double K;	//Controller gain 
		double Ti;	//integral time 
		double Td;	//Derivative time 
		double Tt;	//Reset time 
		double N;	//maximum derivative gain 
		double b;	//Fraction of setpoint in proportional.term 
		double ulow;	//low output limit 
		double uhigh;	//high output limit 
		double h;	//Sampling period 
		double bi, ar, bd, ad;	//coefficent 
	}Par;	//parameter 
}; 
 
void PidInit(struct PidData *data); 
 
void PidCalculateOutput(struct PidData *data); 
 
void PidUpdateStates(struct PidData *data); 
 
void PidReset(struct PidData *data); 
 
#endif 
/*========================================== 
	no more 
==========================================*/