收藏 分享(赏)

【电子设计大赛专营】PID算法原理.pdf

上传人:HR专家 文档编号:6231248 上传时间:2019-04-03 格式:PDF 页数:6 大小:534.38KB
下载 相关 举报
【电子设计大赛专营】PID算法原理.pdf_第1页
第1页 / 共6页
【电子设计大赛专营】PID算法原理.pdf_第2页
第2页 / 共6页
【电子设计大赛专营】PID算法原理.pdf_第3页
第3页 / 共6页
【电子设计大赛专营】PID算法原理.pdf_第4页
第4页 / 共6页
【电子设计大赛专营】PID算法原理.pdf_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、PID算法原理、调试经验以及代码 学习总结 2010-09-26 22:40:27 阅读0 评论0 字号:大中小 订阅 1、PID控制原理 2、流程图 3、PID 代码 /定义变量 float Kp; /PI调节的比例常数 float Ti; /PI调节的积分常数 float T; /采样周期 float Ki; float ek; /偏差ek float ek1; /偏差ek-1 float ek2; /偏差ek-2 float uk; /uk signed int uk1; /对uk四舍五入取整 signed int adjust; /调节器输出调整量 /变量初始化 Kp=4; Ti=0.

2、005; T=0.001; / Ki=KpT/Ti=0.8,微分系数Kd=KpTd/T=0.8,Td=0.0002,根据实验调得的结果确定这些参数 ek=0; ek1=0; ek2=0; uk=0; uk1=0; adjust=0; int piadjust(float ek) /PI调节算法 if( gabs(ek)0) if(uk-uk1=0.5) uk1=uk1+1; if(uk=0.5) uk1=uk1-1; adjust=uk1; return adjust; 下面是在AD中断程序中调用的代码。 。 else /退出软启动后,PID调节,20ms调节一次 EvaRegs.CMPR3=

3、EvaRegs.CMPR3+piadjust(ek);/误差较小PID调节稳住 if(EvaRegs.CMPR3=890) EvaRegs.CMPR3=890; /限制PWM占空比 。 4、PID调节经验总结 PID控制器参数选择的方法很多,例如试凑法、临界比例度法、扩充临界比例度法等。但是,对于PID控制而言,参数的选择始终是一件非常烦杂的工作,需要经过不断的调整才能得到较为满意的控制效果。依据经验,一般PID参数确定的步骤如下42: (1) 确定比例系数Kp 确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为 纯比例调节。输入设定为系统允许输出最大值的6

4、070,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的6070。 (2) 确定积分时间常数Ti 比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150180。 (3) 确定微分时间常数Td 微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30。 (4) 系统空载、

5、带载联调 对PID参数进行微调,直到满足性能要求。 附,完整PID代码: /声明变量 /定义变量 float Kp; /PID调节的比例常数 float Ti; /PID调节的积分常数 float T; /采样周期 float Td; /PID调节的微分时间常数 float a0; float a1; float a2; float ek; /偏差ek float ek1; /偏差ek-1 float ek2; /偏差ek-2 float uk; /uk int uk1; /对uk四舍五入求整 int adjust; /最终输出的调整量 /变量初始化,根据实际情况初始化 Kp=; Ti=; T

6、=; Td=; a0=Kp*(1+T/Ti+Td/T); a1=-Kp*(1+2*Td/T); a2=Kp*Td/T; / Ki=KpT/Ti=0.8,微分系数Kd=KpTd/T=0.8,Td=0.0002,根据实验调得的结果确定这些参数 ek=0; ek1=0; ek2=0; uk=0; uk1=0; adjust=0; int pid(float ek) if(gabs(ek)0) if(uk-uk1=0.5) uk1=uk1+1; if(uk=0.5) uk1=uk1-1; adjust=uk1; return adjust; float gabs(float ek) if(ek0) ek=0-ek; return ek;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报