PID基础
经常有人会问到PID的用法,今天小编在这里例举温度控制中的PID部分,希望能够把PID的具体应用说明白。
先说几个名词:
1.直接计算法和增量算法:这里的所谓增量算法就是相对于标准算法的相邻两次运算之差,得到的结果是增量,也就是说,在上一次的控制量的基础上需要增加(负值意味着减少)控制量,例如对于可控硅电机调速系统,就是可控硅的触发相位还需要提前(或迟后)的量,对于温度控制就是需要增加(或减少)加热比例,根据具体的应用适当选择采用哪一种算法,但基本的控制方法、原理是完全一样的,直接计算法得到的是当前需要的控制量,相邻两次控制量的差就是增量;
2.基本偏差e(t):表示当前测量值与设定目标间的差,设定目标是被减数,结果可以是正或负,正数表示还没有达到,负数表示已经超过了设定值。这是面向比例项用的变动数据。
3.累计偏差:这是我们每一次测量到的偏差值的总和,这是代数和,考虑到他的正负符号的运算,这是面向积分项目的一个变动数据。
4.基本偏差的相对偏差:e(t)-e(t-1),用本次的基本偏差减去上一次的基本偏差,用于考察当前控制的对象的趋势,作为快速反应的重要依据,这是面向微分项的一个变动数据。
5.三个基本参数:Kp,Ki,Kd.这是做好一个控制器的关键常数,分别成为比例常数、积分常数和微分常数,不同的控制对象他们需要选择不同的数值,还需要经过现场调试才能获得较好的效果。
6.标准的直接计算法公式:
上一次的计算值:
两式相减得到增量法计算公式:
*这里我们对∑项的表示应该是对e(i)从1到t全部总和,但为了打字的简便就记作∑e(t)。
三个基本参数Kp,Ki,Kd.在实际控制中的作用
Ki = Kp*( T/Ti)
Kd = Kp*( Td/T)
Kp 比例系数; T 扫描周期; Ti积分时间; Td微分时间;
比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。
积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决于积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。
微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。
具体应用中的数值量化处理
上面只是控制算法的数学方法,似乎有点抽象,在具体的控制项目中怎样对应呢?下面举一个在温度控制中的处理方法。
处理上的一些常用方法
参数的设定与调整
这是PID最困难的部分,编程时只设定他们的大概数值,然后通过反复的调试才能找到相对比较理想的参数值。面向不同的控制对象参数都不同,所以我们无法提供参考数值,但是我们可以根据这些参数在整个PID过程中的作用原理,来讨论我们的对策。
1.加温很迅速就达到了目标值,但是温度过冲很大:
a)比例系数太大,致使在未达到设定温度前加温比例过高;
b)微分系数过小,致使对对象反应不敏感;
2.加温经常达不到目标值,小于目标值的时间较多:
a)比例系数过小,加温比例不够;
b)积分系数过小,对恒偏差补偿不足;
3.基本上能够在控制目标上,但上下偏差偏大,经常波动:
a)微分系数过小,对即时变化反应不够快,反映措施不力;
b)积分系数过大,使微分反应被淹没钝化;
c)设定的基本定时周期过短,加热没有来得及传到测温点;
4.受工作环境影响较大,在稍有变动时就会引起温度的波动:
a)微分系数过小,对即时变化反应不够快,不能及时反映;
b)设定的基本定时周期过长,不能及时得到修正;
选择一个合适的时间常数很重要,要根据我们的输出单元采用什么器件来确定,如果是采用可控硅的,则可设定时间常数的范围很自由,如果采用继电器的则过于频繁的开关会影响继电器的使用寿命,所以就不太适合采用较短周期。一般的周期设定范围为1-10分钟较为合适。
为了调试方便,起码在调试阶段您必须编制一个可以对参数进行随时修改和记忆的接口,否则你会很辛苦,老是在现场与办公室之间来回跑。
关于自整定问题
在通用仪表行业用的比较多,因为他们的工作对象是不确定的,而不同的对象所使用的参数是千变万化的,所以无法为用户设定参数。这就引入了自整定的概念,用户首次使用的时候,启动自整定功能专门为新的工作对象寻找一套参数,并把他们记忆下来,作为今后工作的依据。其实自整定也就是作N次的测定,根据实际变化反应反复对参数进行修正,当达到一定要求后宣告自整定完成。这是一个多元素的优化问题,可以采用很多种优化方法,例如0.618黄金分割法就是一种很不错的算法,可以参考有关优化算法的书籍,我们这里就不做讨论了,需要说明的是,我们是对全部参数进行同时优化的,根据出现的不同情况去修正不同参数,我们的修正量将逐步缩小,当我们的修正量达到一定的范围以后,或者实测温度变化波动已经达到一定范围以后就可以认为自整定过程结束,记录最后结果返回正常控制状态。由于优化过程需要进行大量的试探,所以一次自整定过程往往需要花费很长时间,一般在半小时到两个小时左右。
修正的对策基本上就是上一节我们讨论的几种,对具体每一项参数的修正量,我们还可以赋以不同的比例参数,根据您认为的影响重要程度来确定,在0-1之间选取。
编后语
控制的方法不是只有PID一种,在很多场合他也未必就是最佳的控制算法,随着大量的应用研究,有很多种新的理念新的方法可以完全替代它,但是PID作为一种基本的控制算法已经比较成熟,基于PID为基础的变种算法或者叫做加强算法也派生了很多,他们的控制效果往往会比PID更有效,最常见的是这里的3个参数以控制目标为基准,参数相应成比例的变化,PID上的PID。面向每一个的工作对象,您可以摸索出一种最适合您的对象的控制方法,不拘一格,开创自己的路。
PID基础的更多相关文章
- PID控制器开发笔记之三:抗积分饱和PID控制器的实现
积分作用的引入是为了消除系统的静差,提高控制精度.但是如果一个系统总是存在统一个方向的偏差,就可能无限累加而进而饱和,极大影响系统性能.抗积分饱和就是用以解决这一问题的方法之一.这一节我们就来实现抗积 ...
- 某科学的PID算法学习笔记
最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中 ...
- (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)
(3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...
- mongodb基础篇
一. 关于mongodb 两种非关系数据库 Redis:满足极高读写性能的Key-Value数据库 键值式储存,可以通过键快速查询到值. 内存数据库,类似于mencached.性能出色.容量低,不具 ...
- 浅谈:javascript的面向对象编程之基础知识的介绍
在进入javascript的面对对象之前,我们先来介绍一下javascript的几个概念. 1.javascript的面向对象的基本概念 function aa(){ } /* * 这里的aa,在我们 ...
- web前端基础知识-(七)Django进阶
通过上节课的学习,我们已经对Django有了简单的了解,现在来深入了解下~ 1. 路由系统 1.1 单一路由对应 url(r'^index$', views.index), 1.2 基于正则的路由 u ...
- Linux基础知识整理
一.基础知识 1.Linux简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件 ...
- java必备基础知识点
Java基础 1. 简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机.冰箱等 2. 简单写出 ...
- Nginx概念及基础安装--详细讲解
1.主要内容: Nginx的基础 特性 配置部署 优化(了解) 2.Nginx 是什么? Nginx是一个开源的,支持高性能,高并发的www ...
随机推荐
- JavaScript设计模式(二):工厂模式
工厂模式模式的定义与特点 工厂模式(Factory Pattern)是编程中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.在工厂模式中,我们在创建对象时不会对 ...
- 【译】Android API 规范
[译]Android API 规范 译者按: 修改R代码遇到Lint tool的报错,搜到了这篇文档,aosp仓库地址:Android API Guidelines. 58e9b5f Project ...
- postgresql高级应用之行转列&汇总求和
postgresql高级应用之行转列&汇总求和 轉載請注名出處 https://www.cnblogs.com/funnyzpc/p/14732165.html 前言 节前公司业务方需要做一個 ...
- 利用Xposed Hook打印Java函数调用堆栈信息的几种方法
本文博客链接:http://blog.csdn.net/QQ1084283172/article/details/79378374 在进行Android逆向分析的时候,经常需要进行动态调试栈回溯,查看 ...
- UVA10125和集
题意: 给你一个集合,让你从里面找到4个元素,使得a+b+c=d,并且找到最大的d. 思路: 我们可以吧问题拆开,使得a+b=d-c,这样就能O(n^2)枚举a+b记录出现的和 ...
- C#-string生成图片
public static Bitmap GetLink(string Wordstr) { #region older //arial //StrForImg sf = new StrForImg( ...
- ajax提交session超时跳转页面使用全局的方法来处理
来自:http://www.jb51.net/article/43770.htm 如果是ajax提交,超时时从服务器发出的跳转命令就不会起作用,所以如果是session超时,而且是在ajax请求,就在 ...
- 【axios】get/post请求params/data传参总结
axios中get/post请求方式 1. 前言 最近突然发现post请求可以使用params方式传值,然后想总结一下其中的用法. 2.1 分类 get请求中没有data传值方式 2.2 get请求 ...
- C++入门教程之一:Hello world
C++入门教程之一:Hello world C++是各位程序员跳不过的一个坑,也是各位想学编程的人必备的知识,更是各大比赛(如NOI)的官方指定语言. 在TIOBE(一个编程语言社区排行榜)中,截止2 ...
- Windows反调试技术(下)
OD的DBGHELP模块 检测DBGHELP模块,此模块是用来加载调试符号的,所以一般加载此模块的进程的进程就是调试器.绕过方法也很简单,将DBGHELP.DLL改名. #include <Wi ...