预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

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

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

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

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

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

#include<stdio.h> #include<math.h> struct_pid{ intpv;/*数据赋值*/ intsp;/*数据设置*/ 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. ------------------------------------------------------------------------*/ 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_setinteg DESCRIPTIONSetanewvaluefortheintegraltermofthepidequation. Thisisusefulforsettingtheinitialoutputofthe pidcontrolleratstartup. ------------------------------------------------------------------------*/ voidpid_setinteg(struct_pid*pid,floatnew_integ) { pid->integral=new_integ; pid->last_error=0; } /*------------------------------------------------------------------------ pid_bumpless DESCRIPTIONBumplesstransferalgorithim.Whensuddenlychanging setpoints,orwhenrestartingthePIDequationafteran extendedpause,thederivativeoftheequationcancause abumpinthecontrolleroutput.Thisfunctionwillhelp smoothoutthatbump.Theprocessvaluein*pvshould betheupdatedjustbeforethisfunctionisused. --------------------