0
收藏
微博
微信
复制链接

PID控制原理及温度控制上的应用

2025-12-29 16:57
459

1、PID算法

PID是比例(Proportional)、积分(Integral)、微分(Differential)的缩写。

1.1 整体分析

PID是一种闭环控制算法,它动态改变施加到被控对象的输出值(Out),使得被控对象某一物理量的实际值(Actual),能够快速、准确、稳定地跟踪到指定的目标值(Target)。

就是我们利用这个算法,实现我们想要的结果,也就是将实际值始终追踪到目标值。

假设我们控制温度,我的目标值就是我想要的温度,我的实际值就是实际输出的温度,我想要的结果就是我的实际输出值始终是我的目标值这种完美的控制。但是实际是很难的。因此我们需要控制。

那输出值是什么?

我们控制温度,注意我们的控制对象不是温度,稳定是我们想要的结果,什么是我们控制的对象呐,是加热管或者是其他发热元器件。所以才有动态改变施加到被控对象的输出值,我们的被控对象是加热管,那么加热管的输出值是什么,那就是开的时间。被控对象

某一个物理量指的温度,这样就相当于是能够快速准确稳定地跟踪到指定的目标值。

所以从这里我们可以理解了,我们在实际控制过程中需要抽象出执行结构或者是被控对象,并且这个地方很容易分析,我们想要控制温度,那么我们控制的是加热管产生温度。对于我们有两个已知变量,一个是实际值,一个是目标值,但是我们需要计算的是输出值。换句话说,这个输出值一方面指的是是PID的输出值,另一方面也就是加热管输出的时间值,用于我们控制加热管的开启时间。

控制回路路径:

设定温度(Target) → 温度传感器测量实际值(Actual) → 控制器计算误差(Error = Target - Actual) → PID算法生成输出值(Out) → 执行机构调节功率 → 温度变化。

在温度控制中,输出值(Out)是PID控制器生成的动态功率指令,其本质是 “能量调节开关” 的量化信号:

物理载体:电压、PWM占空比、阀门开度等;

核心作用:通过比例、积分、微分的协同,将输出值转化为恰如其分的加热/制冷功率,驱动温度精准、稳定地跟踪设定值。

理解输出值的关键在于抓住其 “误差驱动”与“功率映射” 的双重属性——它既是算法的计算结果,也是物理世界的能量闸门。

能量调节开关很形象,实际与目标的区别是通过PID控制的能量调节开关有关系。

这里有一个难点是,怎么将我们已知的温度、速度、湿度等具有现实意义的数据经过PID转换为对应的“量调节开关”,例如是电压、电流、阀门开度。

PID是一种基于误差(Error)调控的算法,其中规定:误差=目标值-实际值,PID的任务是使误差始终为0。

PID对被控对象模型要求低,无需建模,即使被控对象内部运作规律不明确,PID也能进行调控。

1.2 开环与闭环

开环(Open Loop):控制器单向输出值给被控对象,不获取被控对象的反馈,控制器对被控对象的执行状态不清楚。

1676858d826cfebc83b392746505ac.jpg

闭环(Closed Loop):控制器输出值给被控对象,同时获取被控对象的反馈,控制器知道被控对象的执行状态,可以根据反馈修改输出值以优化控制。

ab5ea7639fe44e6a9bc7d8d933b3f6.jpg

控制器值得就是PID或者其他算法。被控对象就是加热管、电机等,而输出值其实就是我们需要通过物理载体来进行控制加热管、电机这些。例如电流或者电压会加热管的影响,或者对电机的影响,使其加热管的输出温度改变,或者是电机的速度改变。这个地方需要反复的强化自己。

以电机为例,当负载发生变化或者是电压或者电流发生变化,均会影响其速度,那么我们通过变化量告诉PID,我现在变了,需要你调节,至于怎么运算是PID的现在先不考虑,反正最终PID会告诉我们一个值例如是我告诉你你现在应该给我加大多少电流或者是功率,然后按照这个给我再次驱动电机,这样电机的速度就会因为输入的电流或者电压大小来影响我们想要的速度的大小。这个PID告诉我们应该怎么调整电机的输入值就是相当于是我们前面叙述的“能量调节开关”。

举几个例子:

被控对象:锅炉,目标值和期望值:温度(传感器获取), 输出值:燃料供给速度。

被控对象:汽车, 目标值和期望值:汽车在车道的横向位置(要求汽车走直线), 输出值:方向盘角度。

被控对象:火箭, 目标值和期望值:刚开始要求角度和地面垂直,然后在与地面呈现一定夹角(火箭姿态传感器获取), 输出值:火箭矢量发动机喷射方向。

智能小车,差速控制进行转弯。

核心还是怎么转换。

1.3 PID公式

a43f4e238f27f814eb1eb19255b605.jpg

这个公式是具有数学意义与物理意义的,后续结合系统的校正(自动控制原理)进行详细的分析与阐述。当前阶段就是学会应用。

在自控原理这本书中有典型的输入信号,例如单位阶跃函数、单位斜波函数、单位加速度函数、单位脉冲函数、正弦函数等,这些典型的输入信号,是根据系统常遇到的输入信号形式,再数学描述上加以理想化的一些基本输入函数。说白就是将输入信号建立数学模型。

d2c7fb18c6a96800ffb7192325b061.jpg

b04c6c909ba3e1ac933b2e39fb4558.jpg

脉冲函数还是不怎么使用的,如:瞬态分析:测试电源波动、开关噪声对电路的影响(如EMC抗扰度测试);

我们控制温度的时候,一般使用的是阶跃函数(而非脉冲函数)是更常用的典型输入信号。

物理意义匹配:

阶跃信号(如设定值突然从30℃跳变至100℃)能准确模拟温度控制中的常见扰动,例如加热设备开机、设定值调整或负荷突变。这类突变在实际工业场景(如注塑机加热、热处理炉)中频繁发生。

工业温控器(如PID控制器)的调试通常依赖阶跃响应:

自整定功能:

设备通过注入阶跃信号,观察响应曲线自动计算PID参数(如比例带、积分时间),实现“无超调、无欠调”控制。

稳态误差分析:

阶跃输入下,稳态误差直接反映系统抗扰能力(如加热功率波动补偿)。

cd33498c96fda134e2b5be5b17bbae.jpg


1.3.1 比例项

只含有比例项的PID输出值:

e414a32e2c10c0bc6eb2c140778cb7.jpg

比例项的输出值仅取决于当前时刻的误差,与历史时刻无关。当前存在误差时,比例项输出一个与误差呈正比的值,当前不存在误差时,比例项输出0。

K_p越大,比例项权重越大,系统响应越快,但超调也会随之增加。

纯比例项控制时,系统一般会存在稳态误差,K_p越大,稳态误差越小。

Kp表示的就是调节力度,就是可以快速调节,水多加面,面多加水。

在这里简单分析一下,我们不管是电机调速还是温度控温,其实我们对于被控对象的了解是一个黑盒子,也就是说我们只是知道我们把电流或者电压或者PWM脉宽变长速度就会增大,或者把加热管的时间开的长一点温度就会升上来,这个过程是应该有一个传递函数的,但是由于我们在实际工程中基本是不关注的,更不会关注他的零极点,因为如果对其进行建模,那么就会很复杂,有一点舍本逐末。

我们使用PID调节的过程,其实就是对这个被控对象的零极点就行调节位置,也正是因为我们利用了PID的调节,使得系统的零极点达到了我们想要的控制系统。换句话说,我们在不知道系统传递的函数情况下一样可以调节系统,这是因为我们不关注对零极点是怎么移动的,因为不管怎么移动最终我们肯定是要让我们的输出数据曲线满足我们想要的,所以这也是PID为什么好用的思路。从PID角度来看,其实就是一个系统校正。

极点(Poles):系统“惯性”与自然响应的根源。

物理本质:极点由被控对象(加热管 测温系统)的物理特性决定,如热容、热阻、散热系数等。每个极点对应一个自然响应模式(指数衰减或振荡)。

温度控制中的表现:

实极点(如 s = -1/τ):代表热惯性,τ 是热时间常数。例如,加热管从冷态升温到目标温度需较长时间,对应缓慢的指数上升。

共轭复数极点(如 s = -σ ± jω):对应温度振荡。虚部 ω 是振荡频率(如加热-散热循环),实部 σ 是衰减速度(散热能力)。

实际影响:极点位置越靠近虚轴(实部接近0),系统惯性越大,升温越慢,易振荡;远离虚轴(实部更负) 则响应更快、更稳定。

零点(Zeros):输入与输出的“耦合通道”特性

物理本质:零点反映控制信号(PID输出)如何被系统“选择性放大或抑制”,体现控制器与对象的动态交互。

温度控制中的表现:

PID微分项(D)引入零点:如 s = -K_p/K_d,增强对温度变化率的敏感性,抑制超调但放大噪声。

积分项(I)引入原点零点:消除稳态误差,但可能引发低频振荡(如恒温区微小波动)。

实际影响:左半平面零点加速响应但增加超调;右半平面零点可能破坏稳定性(如正反馈导致温度失控)。

PID是极点的“编辑工具”:通过调节参数重塑极点位置,实现从“缓慢无超调”到“快速无振荡”的任意平衡。

在PID温度控制系统中,正是通过传递函数对加热管控制系统建模,并通过调整PID参数来改变系统的动态响应特性,从而实现更精确的温度控制。

1.4 稳态误差

PID稳态误差:系统进入稳态时,实际值和目标值存在始终一个稳定的差值。

稳态误差产生原因:纯比例项控制时,若误差为0,则比例项结果也为0。被控对象输入0时,一般会自发地向一个方向偏移,产生误差。产生误差后,误差非0,比例项负反馈调控输出,当调控输出力度和自发偏移力度相同时,系统达到稳态。

判断是否会产生稳态误差:给被控对象输入0,判断被控对象会不会自发偏移。

判断稳态误差的方向:给被控对象输入0,自发偏移方向即为稳态误差方向。

针对稳态误差,如果只使用比例项控制,其实很容易理解,假设法如果目标值和实际值相同了,那么我们的输出值就是0,相当于是此时不给加热管开启或者电机PWM,这样就会导致系统自发的向一个方向偏移,例如电机速度降下来或者温度变低,此时又会产生误差,然后继续使用比例调节。

具体过程如下:

1、系统无误差,实际值和目标值相同,

2、误差为0,PID输出为0,加热管没有驱动力(电机没有驱动力)

3、腔体温度由于加热管没有启动,导致温度下降,产生误差。(电机由于摩擦力减速,产生误差)

4、误差越大,比例向输出越大,加热管开启时间越长。(电机驱动力越大,也就是PWM的占空比越长。)

5、加热管开启时间仅能保持腔体温度不会衰减,保持一个稳态,但是达不到我们想要的目标值。(电机驱动力与摩擦力平衡,电机不会减速误差不会增肌,驱动力不在增大,系统达到稳态。)

对于电机定速控制来说,为什么会有稳态误差,原因就是电机有摩擦力。

基于腔体温度重新理解,

控制公式:

ΔD=Kp⋅e(t)

其中:

ΔD:占空比的调整量(如从 30% 调整到 40%,则 ΔD=10%);

e(t):当前误差(如目标温度 60°C,实际温度 55°C,则 e(t)=5°C);

Kp:比例增益(单位:%占空比/单位误差,例如 2%占空比/°C)。

敏感度的体现:

若 Kp=2%/°C,误差每增加 1°C → 占空比增加 2%;

若 Kp=0.5%/°C,相同误差下占空比仅增加 0.5%。

Kp 越大,相同误差触发的占空比调整幅度越大,系统对误差的“反应强度”越强。

假设加热管控温场景:

目标温度:60°C

实际温度:55°C → 误差 e(t)=5°C

不同 Kp 下的占空比响应:

7e79260e5983ac65a8397ff5110b8b.jpg

关键结论:

Kp 是误差到功率调整的转换系数,直接决定“误差需要多少控制动作来补偿”。

其实到这里,我们大概明白了Kp的具体实际意义,也就是一个敏感性的变量,用于在温度变化是否敏感。他只是一个转换系数,也就是我现在有温差,但是我怎么将温差的影响转换为实际加热管的开启时间,在这里我们强行的将这个关系定义为线性关系,是不是也是因为这个原因,才导致比例控制始终不用消除误差。

但是对误差还是没有深入理解。

稳态误差(Steady-State Error, ess)在控制系统中的物理意义,本质上是系统为维持稳定运行所必须付出的“代价”,其产生源于能量动态平衡、系统结构限制及实际物理约束。

控制系统需持续对抗外部干扰(如散热、摩擦、负载变化),而比例控制(P控制)的输出与误差成正比,导致一个根本矛盾:

零误差 → 零控制力:若实际值完全等于目标值(e(t)=0),则控制输出 u(t)=Kp⋅0=0,系统无法提供维持稳态所需的能量。

需残余误差换取控制力:系统需保留一个非零误差 ess,使得控制输出 u=Kp⋅ess 恰好抵消外部干扰,达到动态平衡。

怎么理解呐,通俗一点,我们在控制的时候是希望系统能保持一个状态一直运转,例如我们希望输出温度是60°,那么我们最终也希望系统维持60°的产生的能量。也就是持续输出,但是使用我们使用的是闭环控制,利用的还是比例控制根据其公式可以知道,如果没有误差,那么系统就不会进行主动的提供能量,这是我们比例控制公式本身的局限性已经控制本身就是依靠误差让系统动作。没有误差了那么系统就不会动作了。

因此系统就需要保持一个误差,但是该误差并不能理解为实际的误差,而是要从实际物理意义出发去理解这个误差。

就是我们将腔体的温度升到60°的过程加热管占空比是100%,但是当温度越来越高的时候我们加热管其实不需要100%占空比,又因为本身比例控制需要一个误差,那么这个误差其实就是腔体此时会自动散失能量,而我们这个时候设置散热管的占空比的目的就是补充温度的散失能量,也就是说最后的占空比一定是最少的,因为只需要维持散失的能量就行了。毕竟在开始的时候我们一方面要维持散失的能量,另一方面还要产生热量。

升温阶段(高误差 → 高占空比)

初始状态:腔体温度远低于目标值(如目标60°C,实际20°C),误差 e(t) 极大。

控制响应:比例控制器输出占空比 D=Kp⋅e(t) 接近100%,加热管全功率工作,快速升温。

能量需求:此时需同时补偿散热损耗   提升腔体蓄热,因此需高功率输入。

过渡阶段(误差减小 → 占空比下降)

温度接近目标:如实际温度升至58°C(误差2°C),占空比降至 D=Kp×2(若 Kp=10%/°C,则 D=20%)。

能量转换:腔体蓄热需求减少,加热功率主要对抗持续散热(如箱体导热、空气对流)。

稳态阶段(残余误差 → 最小占空比)

平衡点建立:实际温度稳定在58.5°C(静差1.5°C),此时占空比 D稳态=Kp×1.5 仅需提供恰好等于散热功率 P损耗 的输出。

物理意义:

若误差为零(e(t)=0),则 D=0 → 加热管关闭 → 温度因散热下降;

系统必须保留静差,以维持 D稳态>0,确保最小加热功率补偿散热。

这个必须保留的静态误差,我觉得不是我们想保留,而是实际控制中产生出来的,或者说是使用这个控制器自洽出来的,也是一种能量守恒的必然结果。

在重新梳理一下,若误差为零(e(t)=0),则 D=0 → 加热管关闭 → 温度因散热下降;然后又会产生误差,进而又会让加热管工作。在这个过程中从能量的角度去理解,热量损失,加热管补充热量形成一个动态平衡。

在工程中,如果腔体不会散热,那就说明我们不需要控制了,因为腔体会一直保持温度60°,但是由于内部的结构或者食物需要消耗能量,那么这个60°的能量一直会被消耗,那就意味着我们需要一直的提供这个能量。

针对“由于内部的结构或者食物需要消耗能量”我们统一理解为能量的损耗,该控制系统需要让我们保持这个温度,那么在最后阶段我们的主要工作就是消除这个能量的损耗带来的影响。

从能量角度我们理解了这是控制系统在稳态以后能量守恒的结果。

1.5 解析稳态误差

但是从数学角度我们还是需要理解一下。

因为从我目前写到这里,我心中有一个疑问,就是系统为什么知道要这样?我还是无法将公式与能量角度对应上。

所有动态方程均源于守恒定律(能量/质量),核心形式为:

输入−输出=存储变化

在将数学意义与实际意义相互印证以及理解温度控制过程,首先我们应该站在全局的角度去考虑,而不是只考虑最终的问题状态。

对于整体的温控过程,我们的输入就是总的热量,减去输出的热量(也就是消耗的)等于最终的存储的。并且这个里面包含了两个公式。

一个是比例控制的器(控制方程):

6f506765d252f44af3449910ed71ac.jpg

一个是系统的传递函数(系统模型):

b9e19638f292e51e766df134116738.jpg

60825c0ce8afa684c96d911d3f5a44.jpg

温度的滞后性需要注意。

我们可以看出在实际中其实是不知道系统的传递函数的,因为这是一个黑盒子,因此我们已知的能调节的就是P控制器。

但是我们在分析和理解的时候必须根据动态方程去理解,稳态误差到底是什么,到底怎么来的。

根据系统的传递函数,以及稳态方程我们知道:

e6717c8f25ed6024dd156200802ce3.jpg

我们能控制的就是U(t),而U(t)又是怎么来的呐,是通过如下公式:

5d6ada9185bdcb2f384d9aae47f277.jpg

也就是我们的目标值减去实际值乘以该系统需要对温度变化的敏感性参数。

至此我们的系统方程与控制器产生了联系,并且是紧密的联系,那我们就接着分析稳态过程,通过系统的方程我们还可以知道:当前时刻的温度,其实还需要加上上一个时刻与这个时刻的变化量。因为上一时刻调节的温度具有滞后性。

13f4241cd5bb115954ecd82511ec3b.jpg

这一点在使用机理法去推导最后的拉氏变换函数也证明了这一点。

123db2888051384ec9e7ab97cacf46.jpg

经过对上述公式的分析,我们已经深入理解了这个公式。

那么我们现在需要考虑的稳态状态:

abdeb27a6cf917f63a156d63e0c707.jpg

可以看出在使用比例控制的时候:稳态误差就是消耗的功率引起的,是系统自带的,是在现实世界中不管怎么都不能消除的,因为你不能消除系统的损耗功率。

那么就解决了我们疑问为什么会有系统误差,以及系统误差的来源。

系统误差,指的是系统控制的稳态误差。我们要做的就是怎么消除这个误差,或者说怎么降低这个系统控制的误差。

此时应该对这句话有了深刻理解。

1.6 关于比例控制的一些想法

在温度控制系统中,使用闭环控制,以及比例控制,我们可以设计一个目标温度是70°,最终稳态温度是60°,这样不就满足了我们想要60°的情况。这样和直接设置目标为60°,通过一些控制器使他接近目标值有什么区别?

这是两种思路,但是一种肯定是不对的,我在这里还是需要分析一下。这也是我本人走进的一个误区。

第一种:目标温度是70°C,但是我们就让稳态时变为60°C,这是通过误差实现的,是一个稳态条件,利用的是稳态误差,但是我们的系统有很多因素会影响稳态误差,我们不可能去控制这种因素,那么这种思路就是行不通的。

稳态误差的大小受环境干扰、系统模型精度影响。若干扰变化(如散热条件改变),稳态温度可能进一步偏离60℃。

第二种:通过引入积分控制(I控制),系统能持续累积误差并修正,最终消除稳态误差,精确稳定在60℃。无论干扰如何变化,积分作用都能强制系统收敛至设定值。

所以说我们在控制系统的思路是尽可能的消除误差。因为只有这种状态是可以被我们控制的。

比例控制只是帮助我们试图去理解控制系统。真正使用的时候是将PID结合起来一起使用。

若追求长期稳定在60℃且无需人工干预,必须使用PI或PID控制器。比例控制只是“权宜之计”,其稳态误差本质限制了可靠性。

参数整定是核心:通过调整PID参数(如增大积分时间减小超调),系统既能快速响应,又能避免静差,实现真正的闭环控制。

稳态误差的方向是:给被控对象输入0,自发偏移方向即为稳态误差方向。

就是说当我给定电机输入为0的时候,电机不会主动加速,肯定是转速减少的趋势。

可以理解为能量不会凭空产生,也就是相当于热机效率不会超过100%实际值小于目标值。

69c216fca4124f396eb7b90e4d2050.jpg

对于一个二阶的系统,我们可以认为前面是比例调节。

比例控制的控制是只跟当前时刻是有关系的,跟之前的时刻的结果是没有关系的。正是没有关系,因此会产生超调。 假设我想快速达到我们某一个状态,那么我就将Kp的系数给加大,那么确实很快因为放大系数是大的就很敏感,包括速度快我们想降低也是这个速度,很敏感。那么这样就会很容易产生一些超调,也就说我加速加的太猛了,那就意味着我很快就超过我想要的速度还是还是在加速,相反我想慢一点,然后就会一直减小,就很快,表现出来的就是超调很大。如下图所示:

d9d810d54863d8c6c36bb8062eeff4.jpg

9aea35e17265c812b9449c5f597b2b.jpg

c3b06bc1ca4dcff4043fa8bcf3a1ca.jpg

7d9d2da4c26e61c24f7bc310c82a3b.jpg

可以看出Kp的值不同,带来的超调是明显不一样的,也就是过冲能力(振荡)。同时也会给系统带来滞后性。

比例系数的作用:比例系数Kp决定了控制器对偏差的响应强度。Kp越大,系统对偏差的敏感度越高,响应速度越快,稳态误差越小。例如,在温度控制中,Kp增大会使加热功率更快地响应温度偏差,加速温度趋近设定值。

滞后性的来源:滞后性主要由被控对象的物理特性引起,例如:

热惯性:温度系统中热量传递的延迟(如加热器升温需时间)。

机械延迟:执行机构(如阀门)的响应滞后(如电磁阀的磁滞效应或机械间隙)。

信号传输延迟:传感器测量和信号传递的时间滞后。

Kp与滞后的间接关联:

Kp本身不直接引起滞后,但过大的Kp会放大滞后带来的负面影响。

例如:

当对象存在较大滞后时,高Kp会导致控制器在滞后期间持续输出过大的控制量,造成超调(温度超过设定值),随后又因过度补偿而反向超调(温度低于设定值),形成振荡。这种现象常被误认为“滞后增强”,实则是滞后与高增益共同导致的系统不稳定。

若被控对象存在滞后(如温度系统),高Kp会使系统在达到设定值后因滞后继续升温,导致超调。随后控制器反向调节,但因滞后再次过度补偿,引发持续振荡(如图1所示)。

示例:设定温度200°C时,Kp过大可能导致温度先升至230°C,再跌至170°C,最终在170-230°C间振荡。

稳定性下降:

滞后系统的相位裕量较小,高Kp会进一步降低稳定性裕度,甚至引发发散振荡。此时需引入积分(I)或微分(D)环节补偿滞后影响。

比例系数不直接导致滞后,但会放大滞后引发的稳定性问题(如超调、振荡)。

滞后性强的系统需降低Kp或引入补偿环节(如微分、前馈)以平衡响应速度与稳定性。

1.7 补充比例控制

再看比例控制和比例积分控制突然发现有不一样的地方,竟然无法自洽。如为什么比例控制一定有误差,而加上积分控制就没有误差或者单独的积分控制也不会产生误差。

虽然前面已经分析了,但是还是感觉不太理解。翻阅前面笔记,突然意识到这是因为比例控制是依靠误差控制的,当误差为零的时候,将负载不会有动作,并且由于比例控制是只跟当前时刻有关系的,当负载不动作的时候,就会产生目标值和实际值有区别,然后负载又会因为控制器起作用,周而复始,但是终究会有一个稳态。

而这个稳态是要根据能量的角度去分析,一个系统必定会有能量的损耗,并且损耗只是一部分也无法避免,试想一下,一个系统通过比例系数为10的控制器产生100J的能量,如果系统没有损耗,那么这100J一直会存在,也就不需要再使用控制器,那么这个时候误差是0控制器也不会动作,这时候都是自洽的。但是系统是有损耗的,假设损耗是20J,那么系统保留了80J,这是最终的稳定状态,那么应该怎么理解这个比例控制器呐,是不是可以说比例系数为10的控制器只能让系统产生固定的100J,然后由于损耗是固定20J,那么此时剩下的就是80J,也就说这个控制器的能力就是让系统保留80J的能量。假如我进一步提升控制器的能力,那么系统可能会产生110J能量,那么损耗还是20J,这样系统就会保留90J的能量。这样好像也不对。(这一段是错误理解)

比例控制的核心是:控制器的能力是根据误差的大小来输出控制能力的,也就是说误差越大控制器能力越大,但是误差越小说明控制器的能力越弱。

在动态过程,控制器会随着越来越接近目标而降低控制能力,而在某一时刻达到了目标控制器会不动作那么此时就会出现偏离目标值,进而继续动作,这个过程是没有问题的。但是稳态过程应该怎么理解?

稳态时,控制器提供的能量 = 系统损耗能量。例如在温度控制中,加热功率等于环境散热功率,此时实际温度低于目标温度,其差值 ess 恰好满足 Kp⋅ess = Ploss 。

水槽水位控制中,比例控制器根据水位差调整注水速度。稳态时,注水速度 = 漏水速度,水位略低于目标值,形成固定水位差 ess 。

这个地方也刚好符合比例控制在稳态中的核心矛盾是:需要非零误差才能维持控。

正是因为有损耗(误差),控制器才会动作,而稳态的原因是控制器的动作刚好弥补了损耗,所以看起来像静止一样,其实是一个动态平衡。

积分控制之所以能消除这个误差,是因为他会累积这些误差,把这些误差都能用上,从而使得不需要使用当前的误差就能控制,因为之前的误差已经被积分记录,他就使用之前的误差把现在的误差给补充上,或者说是把损失的能力给补偿上。

比例和积分一起使用,就相当于会开挂一样,本来你只有一只手能干活,但是你多了积分就相当于是多了另外一只手,那两个手干活肯定优于一个手干活。

1.8 积分项(比例积分控制)

含有比例项和积分项的PID输出值:

82b5cb87ac9d9c486317e87a2f78fd.jpg

积分项的输出值取决于0~t所有时刻误差的积分,与历史时刻有关。积分项将历史所有时刻的误差累积,乘上积分项系数K_i后作为积分项输出值。

积分项用于弥补纯比例项产生的稳态误差,若系统持续产生误差,则积分项会不断累积误差,直到控制器产生动作,让稳态误差消失。

Ki越大,积分项权重越大,稳态误差消失越快,但系统滞后性也会随之增加。

上面我们知道比例控制不会产生滞后性,但时候会放大滞后性。

而积分是确确实实的产生滞后性,是滞后性的创造者。

比例控制:不直接产生滞后,但会放大对象固有滞后对稳定性的影响。

积分控制:因误差累积的“惯性”本质产生滞后性,表现为响应延迟和超调。

积分不会单独使用,一般都是配合比例控制使用。

将上述积分系数挪到积分号里面:

0b3111e6b18b28b99ac8dfb0827c34.jpg

也就是相当于是将之前时刻的误差给累计起来,只要系统会有误差,积分项就会把这些误差给记录下来,从而控制控制器的动作,由于累计的误差不会消失,那么相当于一直会有一个驱动力。并且误差越多那么积分项输出的控制力度就会不断的加大,最终这个积分项产生的驱动力会使得误差为0,这个时候比例项的作用就没有了,积分项的驱动力不会增加,系统全靠之前的积分项的累加起作用。

这里会产生两个问题:

1、我只使用积分项时都可以满足控制。

2、积分项的作用和比例项的作用,怎么能分析出来各自的作用。(也就是在开始阶段肯定是比例项作用大,在稳态段肯定是积分项作用大。但是我们应该怎么量化?我想量化分析,深刻理解。)

先说第一个问题,如果只是用积分项,那么就会一直累计误差,可能会达到稳态,但是还是有问题。

尽管积分项可消除稳态误差,但单独使用时存在以下问题:

响应速度极慢:

积分项依赖误差的累积过程,系统需较长时间才能响应初始误差或扰动。

例如:水位控制中,若漏水速度较快,纯积分控制可能因累积过慢而无法及时补水,导致水位持续偏低。

超调与振荡风险高:

积分项在误差归零后仍会因历史累积“惯性”继续输出,导致输出超过设定值(超调),随后反向调节引发振荡。

在温度控制中,即使温度达到目标值,积分项可能继续加热,造成温度过冲后再回调。

抗干扰能力差:

面对突变扰动(如负载突增),积分项需重新累积误差,调节滞后于比例或微分控制。

积分饱和(Windup):

若执行机构(如阀门)达到输出极限,积分项仍持续累积无法生效。恢复时需更长时间释放累积量,加剧控制滞后。

如果我突然想让电机反转,单独使用积分,作用曲线就是先消除正向的作用,然后在慢慢累计反向作用,然后达到我们想要的反转。整个过程滞后性太严重了。

也仅仅是理论上可行:仅用积分项可通过误差累积消除稳态误差。

这是一些调节的实例 可以参考一下

7cc9bb105a39cfccb7a8441432c269.jpg

1.9 微分项

8f2422aeefddd1afa9f919b7d78997.jpg

微分项的输出值取决于当前时刻误差变化的斜率,与当前时刻附近误差变化的趋势有关。当误差急剧变化时,微分项会负反馈输出相反的作用力,阻碍误差急剧变化

斜率一定程度上反映了误差未来的变化趋势,这使得微分项具有“预测未来提前调控”的特性

微分项给系统增加阻尼,可以有效防止系统超调,尤其是惯性比较大的系统

Kd 越大,微分项权重越大,系统阻尼越大,但系统卡顿现象也会随之增加

通俗理解就是,如果此时误差是0,那么微分项的作用就是0,如果误差此时正在正向增大,说明此时系统是正向作用力太猛了,那么微分项作用就是降低正向的作用,让正向作用力别那么猛,缓解一下控制,相当于是增加阻尼。或者说三个好朋友中的两个人在吵架,越吵越凶,那么另外一个人就需要站出来给这两个人消消火,不能说拱火。再或者你现在正在下坡,速度的飞快,那你此时肯定不能加油门,为了安全你要做的就是踩刹车,不让下降的那么快,你踩刹车的这个过程就是微分的作用,就是你不管干啥,微分的作用都是阻碍你,让你理性一点思考问题,起到阻尼的作用。

跟误差无关,他的作用是根据误差的变化进行控制,不会消除误差,假如稳定的误差是20,那么误差不变换,微分项是没有控制作用的。

微分具有提前调控的特性。并可以降低震荡。

300be637f0ec20863f8e3c2fa15724.jpg

类似于这种情况,当靠近目标值的时候系统反而控制的很用例,那么此时就需要微分来抑制这种情况发生,让靠近目标值的时候,不用那么猛,误差变化越猛,微分项的作用越强烈。

2.0 连续形式PID与离散形式PID公式

523e34dfd0bf134585ec845c49d608.jpg

写从程序的时候肯定是要使用离散型的,并且单片机中的PID调控是间隔调控的。

如果要使用连续的就需要使用硬件电路支持,但是没有必要。

离散化与我们程序隔一会(例如200ms PID进行计算一次)控制一下是强相关的。其中k就是表示第几次调控,而T就是我们多久调控一次(也就是200ms)。

注意积分项是求和,也对应了我们前面说的累积的作用,累积第一次、第二次、第K次的所有误差。并且积分项还有一个乘数T,这是因为积分相当于是求面积,所以根据下图如何求出蓝色围城的面积,而T在这个过程相当于是矩形的宽,error(t)就相当于是矩形的长,因此两个的乘积就是得到的面积,也就是连续时候的积分值。并且这个也不是传统意义的面积,是包含正负关系的。(微元法的思想)

e73f91ad3beaeee6de087e02ceb1fe.jpg

注意微分项是求变化趋势,也就是当前第K次减去上一次也就是第(k-1)次,这样就知道第K次的误差相较于第K-1次是误差是在正向增大还是正向减少,就是找误差变化的趋势。而微分是变化趋势,求微分就是求这一点的斜率,而T在这里和在积分中的作用是一样。所以这样求出来也会有正负关系。(微分中值定理)

积分和微分与调控时间是强相关的。因此就引申出来两个思路:

1、因为T是定值,因此我们可以将T并入到 Kd、Ki 里面,这样如果我们在改变了调控周期T,其对应的 Kd、Ki 也是需要重新调节的,也就是需要重新改变新的Kd、Ki 。

2、我们不讲T并入到Kd、Ki ,也就说我们只想看调控周期对系统的影响时候很方便,这样我们可以不需要改变原来的Kd、Ki ,只需要改变调控周期T即可。

2.1 位置式PID与增量式PID

f63dbfeaee7aaa267570464ff7c9c9.jpg

将连续的PID离散化以后得到的就是位置式PID公式。位置二字就是仅仅一个名字而已,跟控制的内容毫无关系。就把他理解成一种通用式PID就行,什么控制使用这个公式都可以满足控制。

而我们之所以叫做位置式是因为有一个增量式,所以要进行区分。

增量式就是out(k)-out(k-1)的结果:第k次相较于第k-1次的增量是多少。

分析一下增量式:

如果把其看成一个模块,我们只需要输入本次误差、上一次误差、和上上次误差,我们就能得到PID输出值的增量。并且该模块不需要任何记忆和累加单元。(马尔克夫模型吗)

位置式PID由连续形式PID直接离散得到,每次计算得到的是全量的输出值,可以直接给被控对象。就是直接作为调控力度使用,这样看起来更方便,直接输出我们想要的结果,我觉得我们在使用单片机控制的时候,还是有限使用位置式的好一点,因为只要通过我们的计算我们就可以知道我们应该输出什么,例如输出占空比是多少、开启加热管的时间是多少等等,更符合工程的应用。

增量式PID由位置式PID推导得到,每次计算得到的是输出值的增量,如果直接给被控对象,则需要被控对象内部有积分功能。例如:驱动步进电机或者阀门控制。例如位置式PID是告诉阀门开启的状态是多少,例如开启百分之20、百分之50、百分之80状态。而增量式则是告诉阀门你现在需要改变阀门的状态是多少。例如在现有的基础上阀门增大百分之2、阀门减少百分之5等。,是阀门状态改变的大小。

当执行机构需要增量的时候,我们直接使用增量式PID,虽然也可以使用位置式实现,但是我们的增量式就是在位置式基础上推导的,所以没有必要走弯路通过位置式实现,直接使用我们推导的位置式就行。

增量式PID也可在控制器内进行积分,然后输出积分后的结果,此时增量式PID与位置式PID整体功能没有区别。这里就是累积增量式的结果,感觉就是套娃。

位置式PID和增量式PID计算时产生的中间变量不同,如果对这些变量加以调节,可以实现不同的特性。

位置式PID的中间变量是误差积分,可以单独进行积分限幅,防止积分饱和。而增量式是没有办法对积分进行限幅的,而增量式PID只需要对输出值进行限幅,这样就能实现积分限幅和输出限幅两个功能。

位置式PID的全量输出值可能包含噪声的影响,就会导致差异较大。

而增量式PID都可以对单独的输出值增量进行限幅,防止执行机构大幅度变化。

登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

大国物联网

专注于电子产品的硬件和单片机软件及嵌入式软件的开发研究。

开班信息