稍微乱了点,整理了一下:
BC31 TC30 编译过,可运行。
#include <stdio.h>
#include<math.h>
struct _pid
{
int pv; /*integer that contains the process value*/
int sp; /*integer that contains the set point*/
float integral; // 积分值 -- 偏差累计值
float pgain;
float igain;
float dgain;
int deadband;
int last_error;
};
struct _pid warm,*pid;
int process_point, set_point,dead_band;
float p_gain, i_gain, d_gain, integral_val,new_integ;;
/*------------------------------------------------------------------------
pid_init DESCRIPTION This function initializes the pointers in the _pid structure to the process variable and the setpoint. *pv and *sp are integer pointers.
------------------------------------------------------------------------*/
void pid_init(struct _pid *warm, int process_point, int set_point)
{
struct _pid *pid;
pid = warm;
pid->pv = process_point;
pid->sp = set_point;
}