资源描述:
《pid算法C语言》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、PID算法(c语言)BC31TC30编译过,可运行。#include#include struct_pid{ intpv;/*integerthatcontainstheprocessvalue*/ intsp;/*integerthatcontainsthesetpoint*/ floatintegral; floatpgain; floatigain; floatdgain; intdeadband; intlast_error; }; struct_pidwarm,*pid; intprocess_poin
2、t,set_point,dead_band; floatp_gain,i_gain,d_gain,integral_val,new_integ;; /*------------------------------------------------------------------------ pid_init DESCRIPTIONThisfunctioninitializesthepointersinthe_pidstructure totheprocessvariableandthesetpoint.*pvand*spare intege
3、rpointers. ------------------------------------------------------------------------*/ voidpid_init(struct_pid*warm,intprocess_point,intset_point) { struct_pid*pid; pid=warm; pid->pv=process_point; pid->sp=set_point; } /*-------------------------------------------------------
4、----------------- pid_tune DESCRIPTIONSetstheproportionalgain(p_gain),integralgain(i_gain), derivitivegain(d_gain),andthedeadband(dead_band)of apidcontrolstructure_pid. ------------------------------------------------------------------------*/ voidpid_tune(struct_pid*pid,floatp_g
5、ain,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_setinteg DESCRIPTIONS
6、etanewvaluefortheintegraltermofthepidequation. Thisisusefulforsettingtheinitialoutputofthe pidcontrolleratstartup. ------------------------------------------------------------------------*/ voidpid_setinteg(struct_pid*pid,floatnew_integ) { pid->integral=new_integ; pid->last_error=0;
7、 } /*------------------------------------------------------------------------ pid_bumpless DESCRIPTIONBumplesstransferalgorithim.Whensuddenlychanging setpoints,orwhenrestartingthePIDequationafteran extendedpause,thederivativeoftheequationcancause ab