PID控制

简介

  • PID 是 Proportional(比例)、Integral(积分)、Differential(微分)的首字母缩写
  • 作用:可以根据外部输入,调整输出,从而保持一个恒定的输出;运动一个固定的距离;
  • PID 控制其实就是对偏差的控制过程;如果偏差为 0, 则比例环节不起作用,只有存在偏差时,比例环节才起作用;积分环节主要是用来消除静差,所谓静差,就是系统稳定后输出值和设定值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加到原有系统上以抵消系统造成的静差;而微分信号则反应了偏差信号的变化规律,也可以说是变化趋势,根据偏差信号的变化趋势来进行超前调节,从而增加了系统的预知性;
  • 如果某些系统是不允许超调(比预期的大,然后又比预期的小,再大再小直至趋为平衡)的,那么P就可以给的小一点,P大的话,就会一下子跑的特快。单个P项是不能消除稳态误差的,所以要引入I项I项的引入就是为了减小误差,I项小的话就是积分作用弱一点,大的话对系统的快速响应也会好一点D:如果系统出现了超调,让其震荡现象减弱,但是D也不能太大,太大的话就会严重影响系统的调节时间,很久才能贴合目标值一开始P慢慢的给,给到快贴合了再加入I项,I项先往小的给再往大的给,如果有出现超调就加入D一般只存在P和I就行,当出现震荡明显的时候再加入D

算法介绍

位置式PID

也叫作全量式PID
在这里插入图片描述

增量式PID

就是两次输出量的差(这次的输出量减去上次的输出量),就是下图这个△U(k)。
在这里插入图片描述

在这里插入图片描述

参数介绍

  • PID 控制其实就是对偏差的控制过程;如果偏差为 0, 则比例环节不起作用,只有存在偏差时,比例环节才起作用;积分环节主要是用来消除静差,所谓静差,就是系统稳定后输出值和设定值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加到原有系统上以抵消系统造成的静差;而微分信号则反应了偏差信号的变化规律,也可以说是变化趋势,根据偏差信号的变化趋势来进行超前调节,从而增加了系统的预知性;
  • 如果某些系统是不允许超调(比预期的大,然后又比预期的小,再大再小直至趋为平衡)的,那么P就可以给的小一点,P大的话,就会一下子跑的特快。单个P项是不能消除稳态误差的,所以要引入I项I项的引入就是为了减小误差,I项小的话就是积分作用弱一点,大的话对系统的快速响应也会好一点D:如果系统出现了超调,让其震荡现象减弱,但是D也不能太大,太大的话就会严重影响系统的调节时间,很久才能贴合目标值一开始P慢慢的给,给到快贴合了再加入I项,I项先往小的给再往大的给,如果有出现超调就加入D一般只存在P和I就行,当出现震荡明显的时候再加入D

1: 比例(P)

  • 比例控制是最简单的一种控制方式,成比例的反应控制系统中输入与输出的偏差信号,只要偏差一旦产生,就立即产生控制的作用来减小产生的误差。
  • 比例控制器的输出与输入成正比关系,能够迅速的反应偏差,偏差减小的速度取决于比例系数 Kp,Kp 越大偏差减小的就越快,但是极易引起震荡,产生超调,甚至会导致系统不稳定;Kp 减小发生震荡的可能性减小,但是调节的速度变慢,使系统静态、动态特性变坏。
  • 单纯的比例控制存在不能消除的静态误差,这里就需要积分来控制。

2、 积分(I)

  • 积分作用系数的作用是消除系统的稳态误差。
  • Ki越大,系统的静态误差消除越快,但Ki过大,在响应过程的初期会产生积分饱和的现象,从而引起响应过程的较大超调。
  • KI越小,将使系统静态误差难以消除,影响系统的调节精度。
  • 积分控制作用的存在与偏差 e(t) 的存在时间有关,只要系统存在着偏差,积分环节就会不断起作用,对输入偏差进行积分,使控制器的输出及执行器的开度不断变化,产生控制作用以减小偏差。在积分时间足够的情况下,可以完全消除静差,这时积分控制作用将维持不变。积分作用太强会使系统超调加大,甚至使系统出现振荡。偏差有正负,所以积分作用也是有正负

3、 微分(D)

  • 微分作用系数Kd的作用是改善系统的动态特性,其作用主要是在响应过程中抑制偏差向任何方向的变化,对偏差变化进行提前预报。
  • Kd过大,会使响应过程提前制动,从而延长调节时间,而且会降低系统的抗干扰性能。
  • 微分环节的作用是反应系统偏差的一个变化趋势,也可以说是变化率,可以在误差来临之前提前引入一个有效的修正信号,有利于提高输出响应的快速性, 减小被控量的超调和增加系统的稳定性,虽然积分环节可以消除静态误差但是降低了系统的响应速度,所以引入微分控制器就显得很有必要,尤其是具有较大惯性的被控对象使用 PI 控制器很难得到很好的动态调节品质,系统会产生较大的超调和振荡,这时可以引入微分作用。在偏差刚出现或变化的瞬间,不仅根据偏差量作出及时反应(即比例控制作用),还可以根据偏差量的变化趋势(速度)提前给出较大的控制作用(即微分控制作用),将偏差消灭在萌芽状态,这样可以大大减小系统的动态偏差和调节时问,使系统的动态调节品质得以改善。
  • 微分环节有助于系统减小超调,克服振荡,加快系统的响应速度,减小调节时间,从而改善了系统的动态性能,但微分时间常数过大,会使系统出现不稳定。微分控制作用一个很大的缺陷是容易引入高频噪声,所有在干扰信号比较严重的流量控制系统中不宜引入微分控制作用。

位置式与增量式对比

1、对比区别

  • 增量式算法不需要对积分项累加,控制量增量只与近几次的误差有关,计算误差对控制量计算的影响较小。而 位置式算法要对近几次的偏差的进行积分累加,容易产生较大的累加误差;
  • 增量式算法得出的是控制量的增量,例如在阀门控制中,只输出阀门开度的变化部分,误动作影响小,必要时还可通过逻辑判断限制或禁止本次输出,不会严重影响系统的工作;而位置式的输出直接对应对象的输出,因此对系统影响较大;
  • 增量式算法控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而 位置式算法适用于执行机构不带积分部件的对象,如电液伺服阀;
  • 在进行 PID 控制时,位置式 PID 需要有积分限幅和输出限幅,而 增量式 PID 只需输出限幅。

2、位置式PID 优缺点

  • 优点: 位置式 PID 是一种非递推式算法,可直接控制执行机构(如平衡小车),u(k) 的值和执行机构的实际位置(如小车当前角度)是一一对应的,因此在执行机构不带积分部件的对象中可以很好应用;
  • 缺点: 每次输出均与过去的状态有关,计算时要对 e(k) 进行累加,运算工作量大

3、增量式PID优缺点

  • 优点
    (1)误动作时影响小,必要时可用逻辑判断的方法去掉出错数据。
    (2)手动/自动切换时冲击小,便于实现无扰动切换。
    (3)算式中不需要累加。控制增量 Δu(k) 的确定仅与最近 3 次的采样值有关。在速度闭环控制中有很好的实时性。
  • 缺点
    (1)积分截断效应大,有稳态误差;
    (2)溢出的影响大。有的被控对象用增量式则不太好

举例

小车

小车要运动到与他相距100m的墙壁上(只采用P)

  • 传感器检测到相距为100m,此时误差就为100。100×P(假设为0.1),则速度为10.
  • 经过1s传感器再次检测距离。此时相距90m,这个时候误差为90,乘以P后输出速度为9m/s。
  • 就这样不断的运动,直到运动到墙后,距离变为了0则此时输出的速度也就变为了0 。静止了
    在这里插入图片描述

无人机

因为无人机需要悬停在半空,因此存在稳态误差

  • 如果只存在单个P(P比例项,假定设为100),那永远都会存在一个偏差,永远达不到期望的值:在无人机与目标飞行高度(100m)只剩0.1的时候,输出信号为10达不到悬停标准了就(假设悬停需要100的升力),尤其是到达了100这个高度,那么偏差就为0,0×100就为0,无人机就会掉落下去。这个偏差在控制系统里就叫做稳态误差,一般用I项来弥补。当到达指定高度的时候,P项就为0,这个时候就用I项来保证他的一个悬停状态。

在这里插入图片描述

其余相关

积分限幅

就是如果这个无人机一开始就给他按在地上了,那么I项就会变的很大(P项不变),这个时候释放了,无人机就会一飞冲天,这个时候就要做一个积分的限幅。也就是给积分项一个限制,增加到多大就不能再给他增了

积分分离

就是当误差一下子非常大的时候,这个时候I项和P项都特别大,尤其是I项,就会出现直接冲出去刹不住车的情况,这个时候就可以选择不要积分作用,让积分作用为0,只用P项调节。当误差不大的时候,这个时候用上I项

微分先行

微分先行PID控制是只对输出量进行微分,而对给定指令不起微分作用,因此它适合于给定指令频繁升降的场合,可以避免指令的改变导致超调过大

代码

CSDN也可以直接搜,有很多的。还有关于微分先行这样的
在这里插入图片描述

PID调节原理

1、如果是多环控制,那么外环的PID参数是敏感的,此时内环的PID参数就变的不敏感了
2、做永磁同步旋转电机的matlab仿真时,此时当只有速度环和电流环时,PI中的P是十分敏感的,基本上控制在1.8左右的样子。
3、参数设置

  • P:随着比例系数的增大,直线电机定位过程中的位置输出上升时间和稳态误差明显减小,伺服系统刚性增大(突加一定负载后对位置误差影响较小),说明增大比例系数可加快系统动态性能、减小稳态误差。但是不能消除静差,此外随着P增大,系统稳定性变差,定位过程中误差震荡明显增大,直线电机运行过程中噪声也明显增大。继续增大P,单机运行时会出现剧烈震荡,导致定位失败。

参考资料

从第四节开始看就行了

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PID控制是一种常用的反馈控制算法,用于调节控制系统的输出以满足期望值或参考信号。在Python中实现PID控制可以通过以下步骤进行: 1. 定义PID类:创建一个名为PID的类,用于存储PID控制器的参数和状态。 2. 初始化参数:在PID类的构造函数中,初始化PID控制器的参数,包括比例系数(Proportional Gain)、积分时间常数(Integral Time Constant)和微分时间常数(Derivative Time Constant)。还需要初始化积分项和上次误差项。 3. 计算控制量:在PID类中添加一个名为"calculate"的方法,用于根据当前误差计算输出控制量。 - 计算比例项:将当前误差乘以比例系数,得到比例项。 - 计算积分项:将当前误差累加到积分项上,并乘以积分时间常数,得到积分项。 - 计算微分项:将当前误差减去上次误差,除以微分时间常数,得到微分项。 - 将三个项相加,得到最终的输出控制量。 4. 更新状态:在PID控制器计算完输出控制量后,更新状态。将当前误差保存为上次误差,以备下次计算使用。 5. 调用PID控制器:在实际应用中,可以在一个循环中不断调用PID控制器的calculate方法,将当前的误差作为输入,得到输出的控制量。根据实际情况,可以设置合适的采样时间。 这是一个简单的Python实现示例: ```python class PID: def __init__(self, Kp, Ti, Td): self.Kp = Kp self.Ti = Ti self.Td = Td self.integral = 0 self.previous_error = 0 def calculate(self, error): # 计算比例项 proportional = self.Kp * error # 计算积分项 self.integral += error * self.Ti # 计算微分项 derivative = (error - self.previous_error) / self.Td # 计算输出控制量

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值