网站首页 > 技术教程 正文
上一次写了模拟量的使用,模拟量传感器想要用的好,还需要有PID算法的加持,有的朋友会疑问,为啥还要PID算法呢,比如想让一个水箱一直保持恒定的水量,那么测距传感器检测到水量低了那么水泵就加水,水量够了就不加水就行了呀!
那么问题来了,你怎么能把水加到正好呢?怎么能让水保持恒定值不变呢?水泵启动一下,有可能水就加多了,这样水泵会频繁地启动停止,当水在恒定值上下波动,那么水泵就会因为启动停止太频繁发生震颤,这样水泵加的水量是不精确的!再比如说需要保持恒定压力的管道,传感器检测到压力值不够,就增加压力,增加多少合适呢,这个是需要一个确定量的,不是说你增加一下压力就可以,PID算法就是一个计算精度的一个公式,可以让水量或者压力或其它值最大可能保持恒定,精度达到最高!
这篇文章就详细讲解PID原理和PID程序功能块的写法,需要用到时候可以直接调用PID功能块实现PID控制!
PID原理图
PID原理,下面这个原理图当成3个部分看,很简单,第一部分就是计算设定值和反馈值的误差;第二部分把这个误差参与PID计算,输出给执行机构(例如水泵);第三部分传感器反馈值;核心就是第二部分,PID计算!
PID计算
PID计算拆分开来就是P(比例控制),I(积分控制),D(微分控制);下面每个原理都讲解下!
P(比例控制)怎么理解呢,如果单独只用P(比例)控制,I(积分控制)和D(微分控制)关闭,那么拿水箱举例,水箱里我想恒定水量为1000ml,传感器检测到水量为999ml,那么设定值和反馈值的误差为1ml,比例控制就是在这1ml前面加个系数,这个系数自己调节,因为正常思路是,少1ml水,我就让水泵加1ml水就行,但是实际是,我让水泵加1ml,实际可能加了2ml(无法精确的让水泵出来1ml水),这个时候我就得调整比例系数,让比例系数为0.5就行!
PID标准公式里的Kp就是比例系数,ev(t)就是设定值减反馈值的偏差值,如下图,如果只有比例控制部分,那么公式很简单,就是u(t)=Kp*ev(t);
I(积分控制)怎么理解呢?学过微积分的都知道积分是啥意思,没学过的或忘了的就顾名思义吧,(积)就是积木,累积的意思,拿水箱举例,那就是水泵加很多次水的一个累积总和!
假如水箱里我们设定恒定值是1000ml,水泵每次只能调节到进水9.9ml;
如果水箱没水,那么水泵需要运行100次,一共进水990ml,误差10ml;
理论上水泵如果每次能进水10ml,那么就刚刚好到设定值,实际每次只进水9.9ml,这个0.1ml,靠调整水泵很难达到这个精度,那么我们就取100次进水的总和,再看误差;
100次进水990ml,这个总误差10ml就好补偿了,通过调整I(积分控制)计算部分的系数TI就可以,把TI设为0.99即可!
如下图的PID公式里的积分控制部分!
D(微分控制)怎么理解呢?也就是微积分里面的微分部分,顾名思义就是把水泵加水量细分到每一次;
比如水泵加水,每次想加10ml,但是如果水泵功率开到最大,1秒就加了10ml,水泵功率开小点需要10秒;
实际应用中,想1秒加10ml的误差肯定比10秒加10ml的要大,就是说水泵慢慢往水箱加水,实际应用中精度会更高,加水过程更稳定。
通过下图PID公式里的微分控制计算部分的系数TD可以调节!
总结一下:
P调节的是误差值和水泵每次进水量成比例关系的调节,就是说水泵每次加水量是一定的,需要加多少次能接近误差值,这个在PID调节中是第一个需要调的参数!
I调节的是P调节后还存在误差的情况下的再次调节,靠调节累积误差增加精度!
D调节的是稳定性,通过控制加水速度,减少滞后量或惯性带来的误差!
PID控制的原理就如上面所述,下面讲一下PLC程序里PID标准功能块是怎么写的,用的ST语言,可以在支持ST的各种型号PLC里使用,有兴趣的可以详细看看,对有精度要求的应用还是很有帮助的,对于之前不是很了解PID控制的朋友,我感觉对于模拟量使用,很多人只无意间用到了P(比例控制)计算部分!
PID计算公式的程序实现
这个程序是上面的PID计算公式的程序实现,有些参数的命名或者公式的格式有变化,但是原理是一样的,有兴趣的仔细研究下,无兴趣的直接使用就行!
调用功能块
PID公式的变形
变成程序可以实现的形式:同样是包含比例系数,积分控制,微分控制三部分,没有初始值设定;
输入参数定义:
fSetpointValue:设定值;
fActualValue:实际反馈值;
bReset: TRUE重置内部变量;
fCtrlCycleTime:采样周期[s];
fKp:比例系数;
fTn:积分作用时间[s];
fTv:微分作用时间[s];fTd:阻尼时间[s];
功能块展现:
以上说的是PID应用的基本功能,还有基于这个原理的其它控制方法,有单独使用的,有PI结合使用的,PD结合使用的,有带死区的PID,固定采样频率的PID等等,看实际需要写对应的程序!
PID参数调试经验调节
PID参数调试靠的是经验调节,就是不停的测试,找到一个需要的参数,有口诀如下:
常用口诀:
参数整定找最佳,从小到大顺序查;
先是比例后积分,最后再把微分加;
曲线振荡很频繁,比例(度盘)要放大;
曲线漂浮绕大湾,比例度盘往小扳;
曲线偏离回复慢,积分时间往下降;
曲线波动周期长,积分时间再加长;
以上就是PID控制的大致原理,想要深入应用还是需要各位朋友系统的去学习PID算法,理解这个原理希望对大家的深入学习有所帮助!
感觉有用的朋友关注我,我会给大家持续输出实用工控的经验!
猜你喜欢
- 2024-10-31 PID与FID的区别,你知道吗? pid和fid的区别
- 2024-10-31 编程基础必备:PID运算指令说明 编程pid控制
- 2024-10-31 PID算法和PID控制原理 pid控制算法流程图
- 2024-10-31 转载--经典的自动控制算法 PID,大白话讲解了解一下!
- 2024-10-31 PID控制介绍 pid控制kp
- 2024-10-31 「PID知识」PID控制介绍说明 pid控制怎么理解
- 2024-10-31 想要学习温控仪,先要弄清楚控制原理以及接线方法
- 2024-10-31 关于PID的深度解析-I pid的d
- 2024-10-31 什么是PID算法?高端设备都在用的PID控制到底有何魔力?
- 2024-10-31 PID是什么及在TIA平台上的应用(附:PID模拟器)
你 发表评论:
欢迎- 04-27spring框架怎么实现依赖注入?
- 04-27卸载 Mac 应用程序的 4 种基础方法
- 04-27用户界面框架jQuery EasyUI示例大全之Application
- 04-27win7 64位 server.CreateObject("excel.application")
- 04-27SpringCloud的配置文件bootstrap和application的区别
- 04-27Excel VBA小技巧:用Application.Version判断用户Excel版本
- 04-27JSA宏教程——应用程序(Application)对象事件
- 04-27详解flink 1.11中的新部署模式-Application模式
- 最近发表
-
- spring框架怎么实现依赖注入?
- 卸载 Mac 应用程序的 4 种基础方法
- 用户界面框架jQuery EasyUI示例大全之Application
- win7 64位 server.CreateObject("excel.application")
- SpringCloud的配置文件bootstrap和application的区别
- Excel VBA小技巧:用Application.Version判断用户Excel版本
- JSA宏教程——应用程序(Application)对象事件
- 详解flink 1.11中的新部署模式-Application模式
- 为什么CEO念“C~E~O”,而APP却不能念A~P~P?
- 汇川技术|Inoproshop软件中Application简介及常用功能
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)