PID算法之增量式控制温度
来源:互联网 发布:淘宝微淘粉丝抢红包 编辑:程序博客网 时间:2024/05/17 17:55
本篇博文最后修改时间:2017年08月20日 23:00。
一、简介
本文介绍PID增量式算法。
二、实验平台
电脑平台:无
编译软件:无
硬件平台:无
三、版权声明
博主:_懵懂
声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。
原文地址:http://blog.csdn.NET/qq_18842031
QQ:951795235
E-mail :951795235@qq.com
懵懂之MCU交流群:136384801
四、实验前提
暂无。
五、基础知识
暂无
六、源码地址
暂无
七、关联文章
暂无
八、讲述内容
1、PID算法之增量式控制温度
本次增量式:
△OUT= OUTK- OUTk-1=kp(EK-EK-1)+((Kp*T)/Ti)Ek+(((Kp*TD)/T)*(Ek-2Ek-1+Ek-2)
C代码:
unsigned int pidtimer; //定时器计时void PIDCalc(int Sv,int Pv) // Sv设定温度值 Pv当前温度值{ int DERR1 = 0; // int DERR2 = 0; // float Pout = 0; //比例结果 float Iout = 0; //积分结果 float Dout = 0; //微分结果 unsigned int Out = 0; //总输出 static unsigned int Out1; //记录上次输出 static int ERR; //当前误差 static int ERR1; //上次误差 static int ERR2; //上上次误差 /****************** *以下四项是需要根据实际情况调试的 ******************/ static int pidt = 300; //300MS计算一次 计算周期 static char Kp = 30; //比例系数 static unsigned int Ti= 5000; //积分时间 static unsigned int Td= 600; //微分时间 static unsigned char Upper_Limit= 100; //PID输出上限 static unsigned char Lower_Limit= 0; //PID输出下限 if(pidtimer < pidt) //计算周期 pidtimer可以用定时器计时 return ; // ERR = Sv - Pv; //算出当前误差 DERR1 = ERR - ERR1; //上次 DERR2 = ERR - 2 * ERR1 + EER2; //上上次 Pout = Kp * DERR1; //输出P Iout = (float)(ERR * ((Kp * pidt) / Ti)); //输出I Dout = (float)(DERR2 * ((Kp * Td) / pidt)); //输出D Out = (unsigned int)(Out1 + Pout + Iout + Dout); if(Out >= Upper_Limit) //如果输出大于等于上限 { Out = Upper_Limit; } else if(Out <= Lower_Limit) //如果输出小于等于下线 { Out = Lower_Limit } Out1 = Out; //记录这次输出的值 ERR2 = ERR1; //记录误差 ERR1 = ERR; //记录误差 pidtimer = 0; //定时器清零重新计数}
PID参数调节口诀
参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢。微分时间应加长
理想曲线两个波,前高后低4比1
一看二调多分析,调节质量不会低
阅读全文
0 0
- PID算法之增量式控制温度
- 增量式PID控制算法
- 增量式PID控制算法
- 增量式PID算法
- 增量式PID控制算法的MATLAB仿真及思考
- Pid控制算法-增量型pid算法的C++实现
- 温度PID控制
- 温度PID控制
- 位置式和增量式PID控制
- 位置式和增量式PID控制
- 位置式和增量式PID控制
- 位置式和增量式PID控制 .
- 位置式和增量式PID控制
- 位置式和增量式PID控制
- 增量式PID控制C语言代码
- 温度控制的PID算法的C语言程序
- PID温度控制的实现
- 增量式PID的整型算法
- Android 开发中遇到的坑
- 解除端口占用
- Kafka 发布消息时如何选择 Partition
- SonarQube 的安装、配置及 Maven 项目的使用
- Eclipse中搭建Apache Tomcat7源码调试环境
- PID算法之增量式控制温度
- 前端之插件-fileinput
- springboot【28】状态机的实现-Spring StateMachine框架
- Redis学习网站
- ORACLE多表关联UPDATE 语句
- 腾讯2018应届毕业生秋招之产品类招聘详细资讯
- SSN:Temporal Action Detection with Structured Segment Networks
- ip,icmp,tcp,upd,ftp的简单含义
- Error: Could not find or load main class org.apache.hadoop.fs.FsShell