C 语言实现 PID 算法
#include <stdio.h>
struct_pid{
intpv;/*integerthatcontainstheprocessvalue*/
intsp;/*integerthatcontainsthesetpoint*/
floatintegral;
floatpgain;
floatigain;
floatdgain;
intdeadband;
intlast_error;
};
struct_pidwarm,*pid;
intprocess_point,set_point,dead_band;
floatp_gain,i_gain,d_gain,integral_val,new_integ;;
/*------------------------------------------------------------------------
pid_init
DESCRIPTIONThisfunctioninitializesthepointersinthe_pidstructure
totheprocessvariableandthesetpoint.*pvand*spare
integerpointers.
------------------------------------------------------------------------*/
voidpid_init(struct_pid*warm,intprocess_point,intset_point)
{
struct_pid*pid;
pid=warm;
pid->pv=process_point;
pid->sp=set_point;
}
/*------------------------------------------------------------------------
pid_tune
DESCRIPTIONSetstheproportionalgain(p_gain),integralgain(i_gain),
derivitivegain(d_gain),andthedeadband(dead_band)of
apidcontrolstructure_pid.
------------------------------------------------------------------------*/