pid控制

简介: 这篇文章详细介绍了PID控制算法的理论基础、组成部分、不同形式的算法(位置式和增量式PID),以及参数调试的步骤和技巧,旨在帮助读者理解和应用PID控制器进行有效的系统控制。

1、PID算法理论
1.1、算法介绍
PID,就是对输入偏差进行比例积分微分运算,运算的叠加结果去控制执行机构。公式如下 :

$u(t)=K_p[e(t)+\frac{1}{T_i}\int_{0}^{t}e(t)dt+Td\frac{de(t)}{dt}] $

它由三部分组成:

P 就是比例,就是输入偏差乘以一个系数;
I 就是积分,就是对输入偏差进行积分运算;
D 就是微分,对输入偏差进行微分运算。
如下图所示就是一个基本的PID控制器:

551

1.1.1、比例部分
比例部分的数学式表示是:$ K_p*e(t) $

在模拟 PID 控制器中,比例环节的作用是对偏差瞬间作出反应。偏差一旦产生,控制器立即产生控制作用,使控制量向减少偏差的方向变化。控制作用的强弱取决于比例系数 ,比例系数越大,控制作用越强,则过渡过程越快,控制过程的静态偏差也就越小;但是越大,也越容易产生振荡,破坏系统的稳定性。故而,例系数选择必须恰当,才能过渡时间少,静差小而又稳定的效果。

优点 : 调整系统的开环比例系数,提高系统的稳态精度,减低系统的惰性,加快响应速度。

缺点 : 仅用P控制器,过大的开环比例系数不仅会使系统的超调量增大,而且会使系统稳定裕度变小,甚至不稳定。

1.1.2、积分部分
积分部分的数学式表示是: $ \frac{K_p}{T_i}\int_{0}^{t}e(t)dt $
积分常数越大,积分的积累作用越弱,这时系统在过渡时不会产生振荡;但是增大积分常数会减慢静态误差的消除过程,消除偏差所需的时间也较长,但可以减少超调量,提高系统的稳定性。当Ti 较小时,则积分的作用较强,这时系统过渡时间中有可能产生振荡,不过消除偏差所需的时间较短。所以必须根据实际控制的具体要求来确定Ti。

优点:消除稳态误差。

缺点:积分控制器的加入会影响系统的稳定性,使系统的稳定裕度减小。

1.1.3、微分部分
微分部分的数学式表示是: $ K_p*Td\frac{de(t)}{dt} $

微分环节的作用使阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。微分作用的引入,将有助于减小超调量,克服振荡,使系统趋于稳定,特别对髙阶系统非常有利,它加快了系统的跟踪速度。但微分的作用对输入信号的噪声很敏感,对那些噪声较大的系统一般不用微分,或在微分起作用之前先对输入信号进行滤波。微分部分的作用由微分时间常数Td 决定。Td 越大时,则它抑制偏差变化的作用越强;Td越小时,则它反抗偏差 变化的作用越弱。微分部分显然对系统稳定有很大的作用。适当地选择微分常数Td ,可以使微分作用达到最优。

优点:使系统的响应速度变快,超调减小,振荡减轻,对动态过程有“预测”作用。

1.2、PID算法的选择
数字式 PID 控制算法可以分为位置式 PID 和增量式 PID 控制算法。那么我们在决定选择使用那个PID算法之前我们应该先要了解他的原理:

1.2.1、位置式 PID 算法
$ u(k)=K_pe(k)+K_I\sum_{i=o}e(i)+K_D[e(k)-e(k-1)] $

e(k): 用户设定的值(目标值) - 控制对象的当前的状态值

比例P : e(k)

积分I : ∑e(i) 误差的累加

微分D : e(k) - e(k-1) 这次误差-上次误差

也就是位置式PID是当前系统的实际位置,与你想要达到的预期位置的偏差,进行PID控制

因为有误差积分 ∑e(i),一直累加,也就是当前的输出u(k)与过去的所有状态都有关系,用到了误差的累加值;(误差e会有误差累加),输出的u(k)对应的是执行机构的实际位置,,一旦控制输出出错(控制对象的当前的状态值出现问题 ),u(k)的大幅变化会引起系统的大幅变化并且位置式PID在积分项达到饱和时,误差仍然会在积分作用下继续累积,一旦误差开始反向变化,系统需要一定时间从饱和区退出,所以在u(k)达到最大和最小时,要停止积分作用,并且要有积分限幅和输出限幅所以在使用位置式PID时,一般我们直接使用PD控制

而位置式 PID 适用于执行机构不带积分部件的对象,如舵机和平衡小车的直立和温控系统的控制

优点: 位置式PID是一种非递推式算法,可直接控制执行机构(如平衡小车),u(k)的值和执行机构的实际位置(如小车当前角度)是一 一对应的,因此在执行机构不带积分部件的对象中可以很好应用

缺点: 每次输出均与过去的状态有关,计算时要对e(k)进行累加,运算工作量大。

1.2.2、增量式 PID 算法
$ \Delta u(k)=u(k)-u(k-1)=K_P[e(k)-e(k-1)]+K_ie(k)+K_D[e(k)-2e(k-1)+e(k-2)] $

比例P : $ e(k)-e(k-1) $这次误差-上次误差

积分I : $ e(k) $ 误差

微分D : $ e(k)-2e(k-1)+e(k-2)$ 这次误差-2*上次误差+上上次误差

增量式PID根据公式可以很好地看出,一旦确定了 KP、TI 、TD,只要使用前后三次测量值的偏差, 即可由公式求出控制增量而得出的控制量 $ \Delta u(k) $对应的是近几次位置误差的增量,而不是对应与实际位置的偏差 没有误差累加也就是说,增量式PID中不需要累加。控制增量 $ \Delta u(k) $的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果,并且在系统发生问题时,增量式不会严重影响系统的工作

总结:增量型 PID,是对位置型 PID 取增量,这时控制器输出的是相邻两次采样时刻所计算的位置值之差,得到的结果是增量,即在上一次的控制量的基础上需要增加(负值意味减少)控制量。

优点:

①误动作时影响小,必要时可用逻辑判断的方法去掉出错数据。

②手动/自动切换时冲击小,便于实现无扰动切换。当计算机故障时,仍能保持原值。

③算式中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关。

缺点:

② 积分截断效应大,有稳态误差;

②溢出的影响大。有的被控对象用增量式则不太好;

1.2.3、增量式与位置式区别
(1)增量式算法不需要做累加,控制量增量的确定仅与最近几次偏差采样值有关,计算误差对控制 量计算的影响较小。而位置式算法要用到过去偏差的累加值,容易产生较大的累加误差。

(2)增量式算法得出的是控制量的增量,例如在阀门控制中,只输出阀门开度的变化部分,误动作 影响小,必要时还可通过逻辑判断限制或禁止本次输出,不会严重影响系统的工作。 而位置式的输出直接对应对象的输出,因此对系统影响较大。

(3)增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。

(4)在进行PID控制时,位置式PID需要有积分限幅和输出限幅,而增量式PID只需输出限幅

位置式PID和增量式PID只是数字PID控制算法的两种实现形式而已,本质完全相同。主要区别是积分项存储方式不同,位置式PID积分项单独存储,增量式PID积分项作为输出的一部分存储,网上各路玩家也对位置式和增量式的使用上有着自己独特的见解和看法,具体还是看我们具体应用场景适合哪种算法。

1.3、PID参数的调试
PID控制器参数选择的方法很多,例如试凑法、临界比例度法、扩充临界比例度法等。但是,对于PID控制而言,参数的选择始终是一件非常烦杂的工作,需要经过不断的调整才能得到较为满意的控制效果。依据经验,一般PID参数确定的步骤如下:

1.3.1、确定比例系数Kp
确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。

1.3.2、确定积分时间常数Ti
比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。

1.3.3、确定微分时间常数Td
微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30%。

1.3.4、系统空载、带载联调
对PID参数进行微调,直到满足性能要求。

当然这只是我的个人调试方法,并不一定适合每一个人和每一个环境,仅提供给大家参考;然而网上也流传着调试PID的经典试凑口诀,我也贴出来供大家参考:

            参数整定找最佳, 从小到大顺序查。

            先是比例后积分, 最后再把微分加。

            曲线振荡很频繁, 比例度盘要放大。

            曲线漂浮绕大弯, 比例度盘往小扳。

            曲线偏离回复慢, 积分时间往下降。

            曲线波动周期长, 积分时间再加长。

            曲线振荡频率快, 先把微分降下来。

            动差大来波动慢, 微分时间应加长。

            理想曲线两个波, 前高后低四比一。

            一看二调多分析, 调节质量不会低。

PID是比例§、积分(I)、微分(D)控制算法,并不是必须同时具备这三种算法,也可以是PD,PI,甚至只有P算法控制。我以前对于闭环控制的一个最朴素的想法就只有P控制,将当前结果反馈回来,再与目标相减,为正的话,就减速,为负的话就加速,当然这只是最简单的闭环控制算法,也就还是回到上一节位置式和增量式的总结,具体要参考我们当前的控制环境,因为每个控制系统的差异,能让我们系统达到最稳定效果的参数就固然是OK的。

汇报展示部分:

Proportion Integration Differentiation控制调节

对输入偏差进行比例积分微分运算,运算的叠加结果去控制执行机构。

$ u(t)=K_p[e(t)+\frac{1}{T_i}\int_{0}^{t}e(t)dt+Td\frac{de(t)}{dt}] $
PID控制调节由三部分组成:

比例Proportion为输入偏差乘以一个系数;
积分Integration为对输入偏差进行积分运算;
微分Differentiation为对输入偏差进行微分运算。

比例调节环节 $ K_p*e(t) $
比例环节的作用是对偏差瞬间作出反应。偏差一旦产生,控制器立即产生控制作用,使控制量向减少偏差的方向变化。控制作用的强弱取决于比例系数 ,比例系数越大,控制作用越强,则过渡过程越快,控制过程的静态偏差也就越小,但在开环比例系数过大时,也容易产生振荡,增大超调量,降低系统稳定裕度,破坏系统的稳定性。通过调节恰当的比例部分,实现过渡时间少、静态偏差小、稳定、提高系统的稳态精度,减低系统的惰性,加快响应速度的控制效果。

积分调节环节 $ \frac{K_p}{T_i}\int_{0}^{t}e(t)dt $
积分控制器的加入会影响系统的稳定性,使系统的稳定裕度减小。积分常数越大,积分的积累作用越弱,这时系统在过渡时不会产生振荡;但是增大积分常数会减慢静态误差的消除过程,消除偏差所需的时间也较长,但可以减少超调量,提高系统的稳定性。当Ti 较小时,则积分的作用较强,这时系统过渡时间中有可能产生振荡,不过消除偏差所需的时间较短。根据实际控制的具体要求来确定Ti,有利于消除稳态误差。

微分调节环节 $ K_p*Td\frac{de(t)}{dt} $
微分环节的作用使阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。微分作用的引入,将有助于减小超调量,克服振荡,使系统趋于稳定,特别对髙阶系统非常有利,它加快了系统的跟踪速度。但微分的作用对输入信号的噪声很敏感,对那些噪声较大的系统一般不用微分,或在微分起作用之前先对输入信号进行滤波。微分部分的作用由微分时间常数Td 决定。Td 越大时,则它抑制偏差变化的作用越强;Td越小时,则它反抗偏差 变化的作用越弱。微分部分显然对系统稳定有很大的作用。通过选择微分常数Td ,可以使微分作用达到最优,加快系统响应速度,减小超调,减轻震荡,对动态过程有“预测”作用。

增量式 限幅 PID算法

$ \Delta u(k)=u(k)-u(k-1)=K_P[e(k)-e(k-1)]+K_ie(k)+K_D[e(k)-2e(k-1)+e(k-2)] $

比例P : $ e(k)-e(k-1)$这次误差-上次误差

积分I : $ e(k) $误差

微分D : $ e(k)-2e(k-1)+e(k-2) $ 这次误差-2*上次误差+上上次误差

根据增量式PID公式,当确定常量KP、KI、KD数值后,使用前后三次测量值的偏差量,可由公式求出控制增量而得出的控制量 $ \Delta u(k) $对应的是近几次位置误差的增量,而不是对应与实际位置的偏差,不存在误差累加。也就是说,因为控制增量 $ \Delta u(k) $的确定仅与最近3次的采样值有关,通过加权处理可以较为方便取得比较好的控制效果,并且在系统发生问题时,增量式不会严重影响系统的工作
增量型 PID,是对位置型 PID 取增量,这时控制器输出的是相邻两次采样时刻所计算的位置值之差,得到的结果是增量,即在上一次的控制量的基础上需要增加/减少控制量。增量式PID存在积分截断效应大,有稳态误差的缺点,当溢出时影响较大,不适用于部分被控对象。同时增量式PID在误动作时影响小,用逻辑判断限幅输出的方法去掉出错数据。

目录
相关文章
|
算法
经典控制算法——PID算法原理分析及优化
这篇文章介绍了PID控制算法,这是一种广泛应用的控制策略,具有简单、鲁棒性强的特点。PID通过比例、积分和微分三个部分调整控制量,以减少系统误差。文章提到了在大学智能汽车竞赛中的应用,并详细解释了PID的基本原理和数学表达式。接着,讨论了数字PID的实现,包括位置式、增量式和步进式,以及它们各自的优缺点。最后,文章介绍了PID的优化方法,如积分饱和处理和微分项优化,以及串级PID在电机控制中的应用。整个内容旨在帮助读者理解PID控制的原理和实际运用。
3023 1
|
编解码 openCL TensorFlow
RK3568开发笔记(一):瑞芯微RK3568芯片介绍,入手开发板的核心板介绍
RK3568开发笔记(一):瑞芯微RK3568芯片介绍,入手开发板的核心板介绍
RK3568开发笔记(一):瑞芯微RK3568芯片介绍,入手开发板的核心板介绍
|
7月前
|
传感器 算法 安全
STM32 温度 PID 控制系统实现
基于 STM32 的温度 PID 控制系统实现方案,包括硬件设计、软件编程和 PID 算法实现。
|
7月前
|
自然语言处理 语音技术 开发工具
IndexTTS2.0_ 情感表达与时长可控的自回归零样本语音合成突破
IndexTTS2 是首个实现自回归模型下**时长可控**、**情感与音色解耦**的零样本语音合成系统。支持语音克隆、情感迁移与文本驱动情绪控制,适用于影视配音、虚拟主播等场景。开源代码与模型已发布,提供完整本地部署方案,大幅提升语音合成的实用性与表现力。
2372 5
|
传感器
【VOFA+速成】半小时入门VOFA+简明教程之进阶用法(二)
【VOFA+速成】半小时入门VOFA+简明教程之进阶用法(二)
2432 1
|
存储 安全 API
基于FreeRTOS中的串口不定长接收(使用队列进行数据传输)
基于FreeRTOS中的串口不定长接收(使用队列进行数据传输)
2121 0
|
存储 算法
深入解析PID控制算法:从理论到实践的完整指南
前言 大家好,今天我们介绍一下经典控制理论中的PID控制算法,并着重讲解该算法的编码实现,为实现后续的倒立摆样例内容做准备。 众所周知,掌握了 PID ,就相当于进入了控制工程的大门,也能为更高阶的控制理论学习打下基础。 在很多的自动化控制领域。都会遇到PID控制算法,这种算法具有很好的控制模式,可以让系统具有很好的鲁棒性。 基本介绍 PID 深入理解 (1)闭环控制系统:讲解 PID 之前,我们先解释什么是闭环控制系统。简单说就是一个有输入有输出的系统,输入能影响输出。一般情况下,人们也称输出为反馈,因此也叫闭环反馈控制系统。比如恒温水池,输入就是加热功率,输出就是水温度;比如冷库,
2042 15
|
网络协议 安全 Linux
Linux剪裁探索初探
本文深入探讨了Linux剪裁的概念、方法、实践及其好处。Linux剪裁通过移除内核中不必要的模块和功能,减小内核大小、优化系统性能并提升安全性,特别适用于资源受限的设备和特定用途的服务器。文章详细介绍了配置内核选项、模块化和使用工具辅助剪裁的方法,并提供了一个实践示例,最后讨论了剪裁的好处与挑战。
592 15
|
监控 安全 网络安全
WPA2 与 802.1X:有什么区别?
【10月更文挑战第17天】
1561 1
WPA2 与 802.1X:有什么区别?
|
机器学习/深度学习 人工智能 编解码
【AI系统】MobileNet 系列
本文详细介绍 MobileNet 系列模型,重点探讨其轻量化设计原则。从 MobileNetV1 开始,通过深度可分离卷积和宽度乘数减少参数量,实现低延迟、低功耗。后续版本 V2、V3、V4 逐步引入线性瓶颈、逆残差、Squeeze-and-Excitation 模块、新型激活函数 h-swish、NAS 搜索等技术,持续优化性能。特别是 MobileNetV4,通过通用倒瓶颈(UIB)和 Mobile MQA 技术,大幅提升模型效率,达到硬件无关的 Pareto 最优。文章结合最新深度学习技术,全面解析各版本的改进与设计思路。
4676 8