pid.h

来自「MS320F2812 Sci驱动程序」· C头文件 代码 · 共 63 行

H
63
字号
/*
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
==========================================*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?