版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言实现PID算法#i nclude struct _pid int pv; /*i nteger that contains the process value*/int sp; /*i nteger that contains the set point*/float in tegral;float pga in;float iga in;float dga in;int deadba nd;in t last_error;struct _pid warm,*pid;int process_po int, set_po in t,dead_ba nd;float p_ga in, i_g
2、ain, d_ga in, in tegral_val, new_in teg;/*pid_i nitDESCRIPTION This fun ctio n in itializes the poi nters in the _pid structure to the process variable and the setpo int. *pv and *sp arein teger poin ters.*/void pid_ in instruct _pid *warm, int process_po in t, i nt set_po int)struct _pid *pid;pid =
3、 warm;pid-pv = process_po int;pid-sp = set_po int;/*pid_t uneDESCRIPTION Sets the proportional gain (p_gain), integral gain (i_gain), derivitive gain (d_ga in), and the dead band (dead_ba nd) ofa pid con trol structure _pid.*/void pid_tune(struct _pid *pid, float p_gain, float i_gain, float d_gain,
4、int dead_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_setintegDESCRIPTION Set a new value for the integral term of the pid equation. This is useful for setting the initial output of the pid controller a
5、t start up. */ void pid_setinteg(struct _pid *pid,float new_integ) pid-integral = new_integ;pid-last_error = 0; /*pid_bumplessDESCRIPTION Bumpless transfer algorithim. When suddenly changing setpoints, or when restarting the PID equation after an extended pause, the derivative of the equation can ca
6、use a bump in the controller output. This function will help smooth out that bump. The process value in *pv should be the updated just before this function is used. */ void pid_bumpless(struct _pid *pid) pid-last_error = (pid-sp)-(pid-pv);/*pid_calcDESCRIPTION Performs PID calculations for the _pid
7、structure *a. This function uses the positio nal form of the pid equation, and incorporates an integral windup prevention algorithim. Rectangu lar integration is used, so this function must be repeated on a consistent time basis for accurate con trol.RETURN V ALUE The new output value for the pid lo
8、op.USAGE #include control.h*/float pid_calc(struct _pid *pid)int err;float pterm, dterm, result, ferror;err = (pid-sp) - (pid-pv);if (abs(err) pid-deadband)ferror = (float) err; /*do integer to float conversion only once*/ pterm = pid-pgain * ferror;if (pterm 100 | pterm integral = 0.0;elsepid-integ
9、ral += pid-igain * ferror;if (pid-integral 100.0)pid-integral = 100.0;else if (pid-integral integral = 0.0;dterm = (float)(err - pid-last_error) * pid-dgain;result = pterm + pid-integral + dterm;else result = pid-integral;pid-last_error = err;return (result);void main(void)float display_value; int c
10、ount=0;pid = &warm;/ printf(Enter the values of Process point, Set point, P gain, I gain, D gain n);/ scanf(%d%d%f%f%f, &process_point, &set_point, &p_gain, &i_gain, &d_gain);process_point = 30; set_point = 40; p_gain = (float)(5.2); i_gain = (float)(0.77); d_gain = (float)(0.18);dead_band = 2;integ
11、ral_val =(float)(0.01);printf(The values of Process point, Set point, P gain, I gain, D gain n); printf( %6d %6d %4f %4f %4fn, process_point, set_point, p_gain, i_gain, d_gain);printf(Enter the values of Process pointn);while(count4095000) PID_UK = 4095000;else if(PID_UKSetPoint - NextPoint; / 偏差pp-
12、SumError += Error; / 积分dError = pp-LastError - pp-PrevError; / 当前微分pp-PrevError = pp-LastError;pp-LastError = Error;return (pp-Proportion * Error / 比例项+ pp-Integral * pp-SumError / 积分项+ pp-Derivative * dError / 微分项);/*=Initialize PID Structure =*/void PIDI nit (PID *pp)memset ( pp,0,sizeof(PID);/*=M
13、ai n Program double sen sor (void) / Dummy Sen sor Fun cti onreturn 100.0;void actuator(double rDelta) / Dummy Actuator Function void mai n(void)PID sPID; / PID Con trol Structure double rOut; / PID Response (Output) double rIn; / PID Feedback (I nput)PIDI nit ( & sPID ); /In itialize Structure sPID.Proportion = 0.5; / Set PID Coefficie nts sPID.I ntegral = 0.5;sPID.Derivative = 0.0;sP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于2024年度云计算技术的数据存储与处理服务合同
- 推广劳务协议书
- 2024版工程设计居间培训合同2篇
- 离婚协议书范本2024年下载
- 链球菌课件教学课件
- 租房合同图片2篇
- 2024年度高级医疗设备工程师聘用合同3篇
- 2024年度技术开发合作与咨询费用支付合同
- 充电桩合作协议
- 年度安保服务外包合同(2024版)-门卫临时用工部分
- 《让小车运动起来》(说课稿)-2024-2025学年四年级上册科学教科版
- DB44-T+2537-2024小型水电站退役导则
- 肠道健康与全身健康的关系
- 招聘助理招聘面试题及回答建议(某大型国企)
- 江苏省南通市如皋市十四校联考2024-2025学年高三上学期教学质量调研(二)数学试题(含解析)
- 2024年初中七年级英语上册单元写作范文(新人教版)
- 新编苏教版一年级科学上册实验报告册(典藏版)
- 广东省广州市2024年中考数学真题试卷(含答案)
- 2023年甘肃白银有色集团股份有限公司招聘考试真题
- 人教部编版七年级语文上册《阅读综合实践》示范课教学设计
- 企业信息化管理体系标准化建设方案
评论
0/150
提交评论