资源描述:
《增量式pid地算法程序1[1].doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、#include #include struct_pid{ intpv;/*integerthatcontainstheprocessvalue*/ intsp;/*integerthatcontainsthesetpoint*/ floatintegral; floatpgain; floatigain; floatdgain; intdeadband; intlast_error; }; struct_pidwarm,*pid; intprocess_point,set_
2、point,dead_band; floatp_gain,i_gain,d_gain,integral_val,new_integ;; /*------------------------------------------------------------------------ pid_init DESCRIPTIONThisfunctioninitializesthepointersinthe_pidstructure totheprocessvariableandthesetpoint.*pvand*spa
3、re integerpointers. ------------------------------------------------------------------------*/ 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. ------------------------------------------------------------------------
5、*/ 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; } /*--------------------------------------------
6、---------------------------- pid_setinteg DESCRIPTIONSetanewvaluefortheintegraltermofthepidequation. Thisisusefulforsettingtheinitialoutputofthe pidcontrolleratstartup. ------------------------------------------------------------------------*/ voidpid_setinteg(struc
7、t_pid*pid,floatnew_integ) { pid->integral=new_integ; pid->last_error=0; } /*------------------------------------------------------------------------ pid_bumpless DESCRIPTIONBumplesstransferalgorithim.Whensuddenlychanging setpoints,orwhenrestartingthePIDequationa
8、fteran extendedpause,thederivativeoftheequationcancause abumpinthecontrolleroutp