PID控制C源程序.docx
上传人:sy****28 上传时间:2024-09-14 格式:DOCX 页数:5 大小:13KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

PID控制C源程序.docx

PID控制C源程序.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include#includestruct_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_initDESCRIPTIONThisfunctioninitializesthepointersinthe_pidstructuretotheprocessvariableandthesetpoint.*pvand*spareintegerpointers.------------------------------------------------------------------------*/voidpid_init(struct_pid*warm,intprocess_point,intset_point){struct_pid*pid;pid=warm;pid->pv=process_point;pid->sp=set_point;}/*------------------------------------------------------------------------pid_tuneDESCRIPTIONSetstheproportionalgain(p_gain),integralgain(i_gain),derivitivegain(d_gain),andthedeadband(dead_band)ofapidcontrolstructure_pid.------------------------------------------------------------------------*/voidpid_tune(struct_pid*pid,floatp_gain,floati_gain,floatd_gain,intdead_band){pid->pgain=p_gain;pid->igain=i_gain;pid->dgain=d_gain;pid->deadband=dead_band;pid->integral=integral_val;pid->last_error=0;}/*------------------------------------------------------------------------pid_setintegDESCRIPTIONSetanewvaluefortheintegraltermofthepidequation.Thisisusefulforsettingtheinitialoutputofthepidcontrolleratstartup.------------------------------------------------------------------------*/voidpid_setinteg(struct_pid*pid,floatnew_integ){pid->integral=new_integ;pid->last_error=0;}/*------------------------------------------------------------------------pid_bumplessDESCRIPTIONBumplesstransferalgorithim.Whensuddenlychangingsetpoints,orwhenrestartingthePIDequationafteranextendedpause,thederivativeoftheequationcancauseabumpinthecontrolleroutput.Thisfunctionwillhelpsmoothoutthatbump.Theprocessvaluein*pvshouldbetheupdatedjustbeforethisfunctionisused.---------------------------------------------------------