1、关于自动调节系统几个关键名词

1.1、自动调节系统

比方说桌子上放个物体,样子像块金属,巴掌大小。你心里会觉得这个物体比较重,就用较大力量去拿,可是这个东西其实是海绵做的,外观被加工成了金属的样子。手一下子“拿空了”,打住了鼻子。这是怎么回事?比例作用太强了。导致你的大脑发出指令,让你的手输出较大的力矩,导致“过调”
还是那个桌子,还放着一块相同样子的东西,这一次你会用较小的力量去拿。可是东西纹丝不动。怎么回事?原来这个东西确确实实是钢铁做的。刚才你调整小了比例作用,导致比例作用过弱。导致你的大脑发出指令,命令你的手输出较小的力矩,导致“欠调”
还是那个桌子,第三块东西样子跟前两块相同,这一次你一定会小心点了,开始力量比较小,感觉物体比较沉重了,再逐渐增加力量,最终顺利拿起这个东西。为什么顺利了呢?因为这时候你不仅使用了比例作用,还使用了积分作用,根据你使用的力量和物体重量之间的偏差,逐渐增加手的输出力量,直到拿起物品以后,你增加力量的趋势才得以停止。
这三个物品被拿起来的过程,就是一个很好的整定自动调节系统参数的过程。凡是具备控制思想和调节方法的系统都叫自动调节系统。

1.2、负反馈

负反馈是个对收集到的信号进行相反处理的办法叫做负反馈,要想让一个放大器稳定,需要用到负反馈。
走路的时候,眼睛看路,他会告诉你个信号:偏左了,偏右了,然后让你脑子进行修正。信号发到你脑子里面后,你脑子里要对反馈信号与目标信号相减,然后进行修正。偏左了就向右点,偏右了就向左点。对这个相减的信号就是负反馈。如果相加就是正反馈了,那样走着走着你就掉进坑里去了。

2、什么是PID

PID,就是对输入偏差进行比例积分微分运算,运算的叠加结果去控制执行机构。其中调节器就是人的大脑,就是一个调节系统的核心。任何一个控制系统,只要具备了带有 PID的大脑或者说是控制方法,那它就是自动调节系统
基本的调节器具有两个输入量:被调量和设定值:被调量就是反映被调节对象的实际波动的量值(变化),设定值就是人们设定的值,也就是人们期望被调量需要达到的值(固定)
只要记住这三个量:设定值、被调量、输出指令。事实上,为了描述方便,习惯上更精简为两个量:输入偏差和输出指令。输入偏差是被调量和设定值之间的差值
P就是比例,就是输入偏差乘以一个系数(提高响应速度);
I就是积分,就是对输入偏差进行积分运算(减少误差);
D就是微分,对输入偏差进行微分运算(抑制震荡)。
PID 算法的一般形式如下图所示:


控制器本身就是比例、积分、微分三个环节的加和。这里我们规定(在t时刻):
①输入量为 r(t); ②输出量为 c(t); ③偏差量为 e(t)=rin(t)-rout(t);

3、PID分类

3.1、模拟PID 控制

在我们的微处理器里面,因为控制器是通过软件实现其控制算法的,所以必 须对模拟调节器进行离散化处理,这样它只需根据采样时刻的偏差值计算控制 量。因此,我们需要使用离散的差分方程代替连续的微分方程。
模拟PID控制原理:如图所示是一个小功率直流电机的调速原理图。给定速度n0(t)与实际转n(t)速进行比较 ,其差值e(t) ,经过 PID 控制器调整后输出电压控制信号 , 经过功率放大后,驱动直流电动机改变其转速。


常规的模拟 PID 控制系统原理框图如下图所示:

该系统由模拟 PID 控制器和被控对象组成。图中,r(t) 是给定值,y(t) 是系统的实际输出值,给定值与实际输出值构成控制偏差 e(t):e(t) = r(t) - y(t)
e(t) 作为 PID 控制的输入, 作为 PID 控制器的输出和被控对象的输入。 所以模拟 PID 控制器的控制规律为:

其中: Kp ―― 控制器的比例系数
Ti -- 控制器的积分时间,也称积分系数
Td ―― 控制器的微分时间,也称微分系数

3.2、数字PID控制

3.2.1 位置式 PID

由于计算机控制是一种采样控制, 它只能根据采样时刻的偏差计算控制量,而不能像模拟控制那样连续输出控制量量, 进行连续控制。 由于这一特点式中的积分项和微分项不能直接使用,必须进行离散化处理。
离散化处理的方法为:以T作为采样周期,作为采样序号,则离散采样时间对应着连续时间 ,用矩形法数值积分近似代替积分,用一阶后向差分近似代替微分,最后可以得到离散的 PID 表达式为:


全量式或位置式 PID 控制算法

  • 其中:k ―― 采样序号,k =0,1,2,……;
  • uk ―― 第 k 次采样时刻的计算机输出值;
  • ek ―― 第k次采样时刻输入的偏差值;
  • ek-1 ―― 第k-1次采样时刻输入的偏差值;
  • Ki ――积分系数,Ki=Kp *T Ti ;
  • Kd ――微分系数, Kd=Kp *Td T ;

算法的缺点是: 由于全量输出, 所以每次输出均与过去状态有关, 计算时要对 ek 进行累加,工作量大; 并且,因为计算机输出的 对应的是执行机构的实际位置, 如果计算机出现故障,输出的 将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故在实生产际中是不允许的。增量式 PID 控制算法可以避免着重现象发生。

位置式 PID 的 C 语言实现:

//①定义PID变量结构体
struct _pid{float SetSpeed; //定义设定值float ActualSpeed; //定义实际值float err; //定义偏差值float err_last; //定义上一个偏差值float Kp,Ki,Kd; //定义比例、积分、微分系数float voltage; //定义电压值(控制执行器的变量)float integral; //定义积分值
}pid;
//②初始化变量
//统一初始化变量,尤其是 Kp,Ki,Kd 三个参数,调试过程当中,对于要求的控制效果,可以通过调节这三个量直接进行调节。
void PID_init(){printf("PID_init begin \n");pid.SetSpeed=0.0;pid.ActualSpeed=0.0;pid.err=0.0;pid.err_last=0.0;pid.voltage=0.0;pid.integral=0.0;pid.Kp=0.2;pid.Ki=0.015;pid.Kd=0.2;printf("PID_init end \n");
}
//③编写控制算法
//注意:这里用了最基本的算法实现形式,没有考虑死区问题,没有设定上下限,只是对公式的一种直接的实现
float PID_realize(float speed)
{pid.SetSpeed=speed;pid.err=pid.SetSpeed-pid.ActualSpeed;pid.integral+=pid.err;pid.voltage=pid.Kp*pid.err+pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last);pid.err_last=pid.err;pid.ActualSpeed=pid.voltage*1.0;return pid.ActualSpeed;
}

3.2.2 增量式 PID

增量式PID是指数字控制器的输出只是控制量的增量∆uk。当执行机构需要的控制量是增量,而不是位置量的绝对数值时,可以使用增量式PID控制算法进行控制。 增量式PID控制算法可以通过位置式离散PID 表达式推导出,可以得到控制器的第 k-1个采样时刻的输出值为:


增量式PID控制算法与位置式PID算法相比,计算量小的多,因此在实际中得到广泛的应用

增量式 PID代码实现

struct _pid
{float SetSpeed; //定义设定值float ActualSpeed; //定义实际值float err; //定义偏差值float err_next; //定义上一个偏差值float err_last; //定义最上前的偏差值float Kp,Ki,Kd; //定义比例、积分、微分系数
}pid;void PID_init()
{pid.SetSpeed=0.0;pid.ActualSpeed=0.0;pid.err=0.0;pid.err_last=0.0;pid.err_next=0.0;pid.Kp=0.2;//比例常数pid.Ki=0.015;//积分时间常数pid.Kd=0.2;//微分时间常数
}float PID_realize(float speed)
{pid.SetSpeed=speed;pid.err=pid.SetSpeed-pid.ActualSpeed;float incrementSpeed=pid.Kp*(pid.err-pid.err_next)+pid.Ki*pid.err+pid.Kd*(pid.err-2*pid.err_next+pid.err_last);pid.ActualSpeed+=incrementSpeed;pid.err_last=pid.err_next;pid.err_next=pid.err;return pid.ActualSpeed;
}

4、P纯比例作用趋势图的特征分析

所谓P,就是比例作用,是把调节器的输入偏差乘以一个系数,作为调节器的输出。而调节器的输入偏差就是被调量减去设定值的差值。当设定值不变的时候,调节器的输出只与被调量的波动有关。概念性公式如下:
输出波动=被调量波动*比例增益 (注:当设定值不变)
通过概念性公式,我们可以得到如下结论,对于一个单回路调节系统,单纯的比例作用 下:输出的波形与被调量的波形完全相似。
一句话简述:被调量变化多少,输出乘以比例系数的积就变化多少。或者说:被调量与输出的波形完全相似
几个输出曲线和被调量曲线的推论:

  1. 对于正作用的调节系统,顶点、谷底均发生在同一时刻。
  2. 对于负作用的调节系统,被调量的顶点就是输出的谷底,谷底就是输出的顶点。
  3. 对于正作用的调节系统,被调量的曲线上升,输出曲线就上升;被调量曲线下降, 输出曲线就下降。两者趋势完全一样。
  4. 对于负作用的调节系统,被调量曲线和输出曲线相对。 波动周期完全一致。

只要被调量变化,输出就变化;被调量不变化,不管静态偏差有多大,输出也不 会变化。

5、I 纯积分作用趋势图的特征分析

I 就是积分作用就是如果调节器的输如偏差不等于零,就让调节器的输出按照一定的速度一直朝一个方向累加下去。 积分相当于一个斜率发生器。启动这个发生器的前提是调节器的输如偏差不等于零,斜 率的大小与两个参数有关:输入偏差的大小、积分时间。
纯积分作用可以存在,但是很可能没有实用意义,那么单纯积分作用的特性总结如下:

  1. 输出的升降与被调量的升降无关,与输入偏差的正负有关。
  2. 输出的升降与被调量的大小无关。
  3. 输出的斜率与被调量的大小有关。
  4. 被调量不管怎么变化,输出始终不会出现节跃扰动。
  5. 被调量达到顶点的时候,输出的变化趋势不变,速率开始减缓。
  6. 输出曲线达到顶点的时候,必然是输入偏差等于零的时候。

6、D 纯微分作用趋势图的特征分析

D 就是微分作用。单纯的微分作用是不存在的,一句话就就是被调量不动,输出不动;被调量一动,输出马上跳


根据微分作用的特点,咱们可以得出如下曲线的推论:

  1. 微分作用与被调量的大小无关,与被调量的变化速率有关;
  2. 与被调量的正负无关,与被调量的变化趋势有关;
  3. 如果被调量有一个阶跃,就相当于输入变化的速度无穷大,那么输出会直接到最小或者最大;
  4. 微分参数有的是一个,用微分时间表示。有的分为两个:微分增益和微分时间(KD是微分增益,TD是微分时间)微分增益表示输出波动的幅度,波动后还要输出回归,微分时间表示回归的快慢。
  5. 由第 4条得出推论:波动调节之后,输出还会自动拐回头。
    总结:
  6. 比例作用:输出与输入曲线相似。
  7. 积分作用:只要输入有偏差输出就变化
  8. 微分作用:输入有抖动输出才变化,且会猛变化。

7、PID参数整定

7.1、参数整定的分类

整定参数的方法有理论计算法和经验试凑法两种
理论计算法需要大 量的计算,对于初学者和数学底子薄弱的人会望而却步,并且计算效果还需要进一步的修改 整定,所以,在实际应用过程中,理论计算法比较少。经验试凑法最广为人知的就是第一章提到的整定口诀了,该方法提供了一个大致整 定的方向形性思路
我们可以依靠分析比例、积分、微分的基本性质,判读趋势图中,比例、积分、微分的 基本曲线特征,从而对 PID 参数进行整定。这个方法虽然基本等同于经验试凑法,但是它又 比传统的经验试凑法更快速更直观的,更容易整定。因而,我把这种依靠对趋势图的判读, 整定参数的办法,称之为:趋势读定法。
趋势读定法三要素:设定值、被调量、输出。三个曲线缺一不可。

7.2、PID整定口诀

7.3、参数整定的方法

关于 P、I、D 三个参数的主要作 用,可以大致又不完全地概况为:P 用于提高响应速度、I 用于减小静差、D用于抑制震荡。
首先我们需要明确我们的控制目标,也就是满足控制系统的 3 个要求:
①稳定性
②快速性
③准确性
具体的评估指标有最大超调量、上升时间、静差等。
最大超调量是响应曲线的最大峰值与稳态值的差,是评估系统稳定性的一个重要指标;
上升时间是指响应曲线从原始工作状态出发,第一次到达输出稳态值所需的时间,是评估系统快速性的一个重要指标;
静差是被控量的稳定值与给定值之差,一般用于衡量系统的准确性,如下图所示:

首先设I和D值为零,然后把P值从0逐渐增大,直到系统震荡。

这个时候因为P值比较大,出现了震荡。可能大家会疑惑,为什么I值为零, 但是没有静差呢?因为这个时候的 P 值已经很大了,静差一般是在P值较小而 I值为零的时候出现的。为了验证我们的想法,我们对PID参数进行调整。

如我们所设想的,在P值较小的时候出现了静差,响应速度也明显降低。所以增大P值可以一定程度上消除静差,提高响应速度,但是会导致系统震荡,而加入微分控制可以有效抑制震荡。下面我们尝试一组新的 PID 参数:

加入微分控制之后,很明显系统的震荡得到了抑制,震荡次数减少。事物都有两面性,微分控制也是弊端的。可以看到,系统的响应明显变慢了,因为引入微分控制相当于增大了系统的阻尼。这个时候我们需要结合P值和I值进行进一步的优化。

PID算法基本原理及整定实现方法相关推荐

  1. PID控制器开发笔记之一:PID算法原理及基本实现

           在自动控制中,PID及其衍生出来的算法是应用最广的算法之一.各个做自动控制的厂家基本都有会实现这一经典算法.我们在做项目的过程中,也时常会遇到类似的需求,所以就想实现这一算法以适用于 ...

  2. 控制算法-PID算法总结-从公式原理到参数整定解析(附C源码)

    目录 一.控制系统 1.1控制系统的分类 1.2 性能指标 二.PID算法的起源及特点 三.PID应用 四.PID公式原理 五.PID源码 六.PID整定方法 6.1 经验法 6.2 衰减曲线法 6. ...

  3. 【控制理论】——控制系统分类PID算法简介PID参数整定PID上位机通信协议

    目录 ​ 前言 一.PID算法 1.控制系统分类&参数&信号 2.PID算法简介 二.PID参数整定 三.PID上位机通信协议 1.数据帧&协议调试 2.协议代码实现 拓展: ...

  4. matlab整定串级pid,PID算法在Matlab串级控制中的应用

    PID算法在Matlab串级控制中的应用 自114 1112002039 陈艳 前言:这个专题是由王娟老师给我们授课,我感觉收获挺大的,尤其是matlab仿真软件的使用,为我以后的实验课打下良好的基础 ...

  5. PID算法详解(2)---PID参数整定

    简易工程法整定PID参数--归一参数整定法         除了上面讲的一般的扩充临界比例度法而外,Roberts P.D在1974年 提出一种简化扩充临界比例度整定法.由于该方法只需整定一个参数即 ...

  6. PID算法实现及参数整定图解(附代码)

    一. PID含义 PID是英文单词比例(Proportion),积分(Integral),微分(Differential coefficient)的缩写.PID调节实际上是由比例.积分.微分三种调节方 ...

  7. 模糊PID算法及其MATLAB仿真(1)

    目录 1.PID控制基础 2.模糊控制 3.模糊PID简介 4.模糊自整定PID的理论内容(重点内容) 4.1 基本原理 4.2 模糊子集及其论域的确定 4.3 模糊规则的建立 4.4 模糊推理 4. ...

  8. pid算法的MATLAB仿真 - 用MATLAB进行pid算法仿真实验

    算法理论知识 PID算法是工业应用中最广泛算法之一,在闭环系统的控制中,可自动对控制系统进行准确且迅速的校正.PID算法已经有100多年历史,在四轴飞行器,平衡小车.汽车定速巡航.温度控制器等场景均有 ...

  9. 电子设计竞赛(4)-常用的两种PID算法

    公众号关注 "大鱼机器人" 设为 "星标",重磅干货,第一时间送达! 1. 什么是PID PID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备.气动 ...

  10. c语言程序位置式pid算法,位置式PID算法的C语言代码

    描述 位置式PID的C语言写法详解 PID调节口诀: 参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积 ...

最新文章

  1. R语言PCA主成分分析(Principle Component Analysis)实战2
  2. 量子纠缠真的很怪异吗?
  3. 报名 | 2019前沿信息科技创新论坛
  4. redis主从_Redis主从复制部署
  5. mysql里guest用户_MySQL用户权限分配
  6. html action不起作用,Html.ActionLink做为按钮或图像,而不是连接
  7. Angular multiple binding debug
  8. k8s一个容器多个镜像_从零开始学K8s: 6.运行一个简单的容器
  9. Jmeter 测试结果分析之聚合报告简介
  10. L1-070 吃火锅 (15 分)-PAT 团体程序设计天梯赛 GPLT
  11. ad采样频率_带你了解AD的工作原理!!!
  12. linux服务器 授权命令,linux的Sudo/su授权命令详解
  13. 修改显卡型号软件_电脑一键修改任意CPU型号方法 装X新技能!
  14. Arduino U8glib库中的中文字体
  15. linux 命令获取屏幕亮度值,设置屏幕亮度
  16. 基于MATLAB的分子相互作用的表征模型
  17. yum源修改为本地光盘镜像
  18. 并列关系表合集PPT模板
  19. 本地html如何封装成app,新手适用:如何把网页快速封装成APP
  20. 最小公倍数和最小公约数

热门文章

  1. 三菱plc pwm指令_【三菱PLC指令教程】步进指令STL和RET(单序列状态转移图编程)
  2. python xlwt_Python中xlwt解析
  3. 鲁班H5页面生成工具源码
  4. Matlab 和 Simulink 教程学习基础入门
  5. opencv python 人脸识别 相似度_OpenCV+python 人脸识别
  6. Linux的ssh登录命令,linux之ssh命令详解
  7. 无线网络WI-FI技术的专业名词解析
  8. Linux系统Ubuntu安装kvaser Leaf Light V2驱动
  9. ps安装了可以打开但开始里面找不到_PS CC2017安装教程【64/32位】
  10. 请问ECSHOP首页站内快讯在哪里添加和修改?