PID算法原理.pdf

上传人:紫竹语嫣 文档编号:5514352 上传时间:2020-05-27 格式: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页
点击查看更多>>
资源描述

《PID算法原理.pdf》由会员分享,可在线阅读,更多相关《PID算法原理.pdf(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; /调节器输

2、出调整量 /变量初始化 Kp=4; Ti=0.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 中断程序中调用的代码。 。 。 。 。 。 。 。 。 。

3、 。 。 else /退出软启动后,PID 调节,20ms 调节一次 EvaRegs.CMPR3=EvaRegs.CMPR3+piadjust(ek);/误差较小 PID 调节稳住 if(EvaRegs.CMPR3=890) EvaRegs.CMPR3=890; /限制 PWM 占空比 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 4、PID 调节经验总结调节经验总结 PID 控制器参数选择的方法很多, 例如试凑法、 临界比例度法、 扩充临界比例度法等。 但是, 对于 PID 控制而言,参数的选择始终是一件非常烦杂的工作,需要经过不断的调整才能得 到较为满意的控制效果。依据经

4、验,一般 PID 参数确定的步骤如下42: (1) 确定比例系数 Kp 确定比例系数 Kp 时,首先去掉 PID 的积分项和微分项,可以令 Ti=0、Td=0,使之成为 纯比例调节。 输入设定为系统允许输出最大值的 6070, 比例系数 Kp 由 0 开始逐渐增 大,直至系统出现振荡;再反过来,从此时的比例系数 Kp 逐渐减小,直至系统振荡消失。 记录此时的比例系数 Kp,设定 PID 的比例系数 Kp 为当前值的 6070。 (2) 确定积分时间常数 Ti 比例系数 Kp 确定之后,设定一个较大的积分时间常数 Ti,然后逐渐减小 Ti,直至系统出现 振荡,然后再反过来,逐渐增大 Ti,直至系

5、统振荡消失。记录此时的 Ti,设定 PID 的积分 时间常数 Ti 为当前值的 150180。 (3) 确定微分时间常数 Td 微分时间常数 Td 一般不用设定,为 0 即可,此时 PID 调节转换为 PI 调节。如果需要设定, 则与确定 Kp 的方法相同,取不振荡时其值的 30。 (4) 系统空载、带载联调 对 PID 参数进行微调,直到满足性能要求。 附,完整 PID 代码: /声明变量 /定义变量 float Kp; /PID 调节的比例常数 float Ti; /PID 调节的积分常数 float T; /采样周期 float Td; /PID 调节的微分时间常数 float a0;

6、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=; 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;

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

当前位置:首页 > 建筑/环境 > 建筑资料


经营许可证编号:宁ICP备18001539号-1