PID与ADRC

这篇具有很好参考价值的文章主要介绍了PID与ADRC。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、 PID算法

1. 定义:

2. PID的意义:

3. P,I,D的控制原理:

3.1. P值的作用:

3.2. D值的作用:

3.3. I值的作用:

3.4. 程序示例:

二、 ADRC算法

1.背景:

2. 原理及组成:

3. 算法特点:

3.1.  几乎和模型无关

3.2. 反应敏捷


  • 一、 PID算法

1. 定义:

PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很 常见的控制算法。常见的PID算法,位置式PID,增量式PID,串级PID等。

2. PID的意义:

以电机转速为例子来解释,电机随着使用时间的增加,电机的性能其实会发生变化,输出相同的PWM值,速度会和最开始测得的值是不一样的。我们有一辆小车(电机控制小车的速度),如果我改变小车的负重,根据生活中的常识,相同的输出电压下,负载越重,小车的速度越慢的。所以说仅仅输出一个PWM值,是不能精确控制电机转动的速度保持在相同的值。这个时候PID的算法就会体现出重要的作用。现在,我用一个编码器来读取电机速度(编码器可以精确读取电机的转动速度),编码器的作用就是把电机转动的速度(模拟量)转化为一个数字量,传入到我们的微处理器。我们使用PID算法本质上是为了让编码器的值(即速度)稳定在一个值。 PID调参变成了如何让编码器的值(速度)保持在一个固定值。

3. P,I,D的控制原理:

简易的PID控制,我们使用PID处理的函数,函数中包括两个参数,一个是编码器测量到当前的速度值(position),另一个就是目标速度值(target)。

3.1. P值的作用:

如果当前的速度值和目标的速度值相差很大,我们就想增大电机的PWM输出,让电机快速达到目标值,PID中的P就扮演着重要的作用,可以联想到PWM=P*(target-position),当前的速度值和目标的速度值相差越大,输出的PWM值就会越大,可以快速达到目标速度值。

PID与ADRC

PID与ADRC

 结论:没有积分控制且比例控制较弱时,会出现静差。P值较小情况下,响应速度变慢;P值较大情况下,虽然响应速度比较快,但是震荡严重。

3.2. D值的作用:

PID中的D主要作用于振荡抑制。当比较接近目标时,P的控制作用就比较小了。越接近目标,P的作用越温柔。有很多内在的或者外部的因素,使控制量发生小范围的摆动。

D的作用就是让物理量的速度趋于0,只要什么时候,这个量具有了速度,D就向相反的方向用力,尽力抑制住振荡的变化。

现在我们引入偏差值的概念,令Bia=taget-position,令上一次求得的偏差值为Last_Bia。

D项的计算公式为 D*(Bia - Last_Bia)

举例:现在让当前的速度值为90,目标值为100,Bias=10。现在是为了接近目标值,所以D项的结果是增加PWM。现在增加后的速度变成了105,Bias=-5,Last_Bias=10,Bias-Last_Bias=-15,如果增加后的速度为110,Bias=-10,Last_Bias=10,Bias-Last_Bias=-20,D项的计算结果是为了减小PWM,快速抑制住PWM的过量增加,超过目标值越多,那么抑制能力越厉害。

3.3. I值的作用:

PID中的I的作用是为了消除静差,静差就是指,稳定状态下当前值和目标值的差;

举例:

假如有个人把我们的加热装置带到了非常冷的地方,开始烧水了。需要烧到50℃。在P的作用下,水温慢慢升高。直到升高到45℃时,他发现了一个不好的事情:天气太冷,水散热的速度,和P控制的加热的速度相等了。这可怎么办?P兄这样想:我和目标已经很近了,只需要轻轻加热就可以了。D兄这样想:加热和散热相等,温度没有波动,我好像不用调整什么。于是,水温永远地停留在45℃,永远到不了50℃。

作为一个人,根据常识,我们知道,应该进一步增加加热的功率。可是增加多少该如何计算呢?

设置一个积分量。只要偏差存在,就不断地对偏差进行积分(累加),并反应在调节力度上;

这样一来,即使45℃和50℃相差不太大,但是随着时间的推移,只要没达到目标温度,这个积分量就不断增加。系统就会慢慢意识到:还没有到达目标温度,该增加功率啦!

到了目标温度后,假设温度没有波动,积分值就不会再变动。这时,加热功率仍然等于散热功率。但是,温度是稳稳的50℃。

I 的值越大,积分时乘的系数就越大,积分效果越明显。

I在使用时还有个问题:需要设定积分限制,防止在刚开始加热时,就把积分量积得太大,难以控制。

3.4. 程序示例:

/**************************************************************************
函数功能:位置式PID控制器
入口参数:编码器测量位置信息,目标位置
返回  值:电机PWM
根据位置式离散PID公式 
pwm=Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]
e(k)代表本次偏差 
e(k-1)代表上一次的偏差  
∑e(k)代表e(k)以及之前的偏差的累积和;其中k为1,2,,k;
pwm代表输出
**************************************************************************/

int Position_PID (int position,int target)
{ 	
	 static float Bias,Pwm,Integral_bias,Last_Bias;
	 Bias=target-position;                                  //计算偏差
	 Integral_bias+=Bias;	                                 //求出偏差的积分
	 Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);       //位置式PID控制器
	 Last_Bias=Bias;                                       //保存上一次偏差 
	 return Pwm;                                           //增量输出
}


/**************************************************************************
函数功能:增量PI控制器
入口参数:编码器测量值,目标速度
返回  值:电机PWM
根据增量式离散PID公式 
pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)]
e(k)代表本次偏差 
e(k-1)代表上一次的偏差  以此类推 
pwm代表增量输出
在我们的速度控制闭环系统里面,只使用PI控制
pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)
**************************************************************************/
int Incremental_PI (int Encoder,int Target)
{ 	
	 static float Bias,Pwm,Last_bias;
	 Bias=Target-Encoder;                                  //计算偏差
	 Pwm+=Velocity_KP*(Bias-Last_bias)+Velocity_KI*Bias;   //增量式PI控制器
	 Last_bias=Bias;	                                   //保存上一次偏差 
	 return Pwm;                                           //增量输出
}

  • 二、 ADRC算法

1.背景:

干扰,或者称扰动,是指系统外部的环境出现变化,或者系统内部特性改变,最终影响了系统的性能。例如上面提到的无人机的螺旋桨,空气阻力随转速变化,影响电机速度的稳定性,这个是外部扰动;当电机长时间运行后,温度明显上升,铜线圈的电阻值升高,原来预估的给多少V电压就得到多少A电流的关系不存在了,这是内部扰动。

来个假设吧,如果世界一切美好、没有任何内外扰动,那么对于任何系统,只要调整好一次PID参数,就可在任何情况下都达到理想效果。但事与愿违,扰动无处不在,如何实现“他强由他强,清风拂山岗;他横由他横,明月照大江”的抗扰动效果,一直是自控工程中最核心的研究工作。

2. 原理及组成:

PID与ADRC

ADRC的核心有三大模块:跟踪微分器、扩张状态观测器和状态误差反馈控制律。

对于电机速度控制,跟踪微分器的输入是目标速度;输出是跟踪速度和跟踪加速度,跟踪速度等于目标速度,跟踪加速度就是目标加速度。

扩张状态观测器的输入分别是:实际速度、输出电压u和系数b0的乘积;输出分别是观测速度、观测加速度和观测扰动,其中观测速度等于实际速度,观测加速度等于实际加速度,观测扰动是系统内部和外部的总扰动,它除以b0后,减去状态误差反馈控制律输出的电压u0,即得到给电机的电压u。

状态误差反馈控制律根据速度误差(跟踪速度-观测速度)、加速度误差(跟踪加速度-观测加速度),输出电压u0,如果两个误差都为零,那么u0为零。系数b0是大致设定的参数,在这里它表示多少V电压对应多少转速RPM。ADRC不管电压和速度的真实关系,它只按自己设定的b0去控制,它认为当前电压是u,速度应该是u*b0,如果实际速度有不同,偏差都认为是扰动(观测扰动),可能是外部阻力变化引起的,也可能是电机内部参数估计不准引起的。观测扰动除以b0后,直接补偿到u输出。所以ADRC就是任性,它无需专门测量扰动,“他自狠来他自恶,我自一口真气足”。

另外,如果系统同时明确:目标速度和目标加速度,那么可以省去跟踪微分器,直接输入这两个量。

3. 算法特点:

3.1.  几乎和模型无关


ADRC适用于从对对象模型一无所知到完全掌握对象模型的任何情况,如图,大致设定电压和速度的关系b0即可。当然如果能准确捕捉到这个关系,ADRC工作强度将减轻,效果更佳。例如我们正在研究,当电机正在运行、发热严重时,电机内部的电阻、电感、反向电动势等参数都明显变化,在不注入额外测量信号下(尽量不影响电机运行),如何利用AI人工智能神经元技术,准确估算电机参数、重构电机模型b0,这样ADRC的性能将更经一步提升。

3.2. 反应敏捷


传统PID控制都要等到误差发生后,才能去补偿控制,而ADRC将观察到的扰动第一时间补偿到输出端。而且PID中的微分项D,虽然说有预测功能,但是它仅仅是将本次的误差减去上一次的误差,得到很粗劣的微分结果,而ADRC使用跟踪微分器,准确跟踪目标值的微分(图示跟踪加速度),以及用扩张状态观测器得出实际值的微分(图示观测加速度),两个相减即为准确的误差微分。

基于PID的FOC控制:

PID与ADRC

 基于ADRC的FOC控制:

PID与ADRC

 文章来源地址https://www.toymoban.com/news/detail-488693.html

到了这里,关于PID与ADRC的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PID与ADRC

    目录 一、 PID算法 1. 定义: 2. PID的意义: 3. P,I,D的控制原理: 3.1. P值的作用: 3.2. D值的作用: 3.3. I值的作用: 3.4. 程序示例: 二、 ADRC算法 1.背景: 2. 原理及组成: 3. 算法特点: 3.1.  几乎和模型无关 3.2. 反应敏捷 PID,就是“比例(proportional)、积分(integral)、微分(

    2024年02月09日
    浏览(32)
  • 9、基于51单片机PID算法温度控制系统设计(程序+Proteus仿真+原理图+PCB图+参考论文+开题报告+任务书等)

    目录 摘要 一、硬件方案 二、设计功能 三、成品实物图 四、原理图  五、PCB图 六、Proteus仿真  七、程序源码    资料包括:     随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中 数字温度计 就是一个典型

    2024年02月05日
    浏览(52)
  • 麦克纳姆轮PID控制原理

    目录 前言 一、什么是麦克纳姆轮 二、运动原理 ​ 三、pid控制  一、什么是pid?  二、什么是串级PID? 三、麦克娜姆轮的控制思想 总结 目前很多大学生比赛里面经常都会出现麦克娜姆轮,并且麦克娜姆轮在工业上也应用挺广泛,例如物流搬小车。下面是我玩麦克娜姆轮的

    2024年02月02日
    浏览(64)
  • PI控制算法与PID控制算法

    PI(Proportional-Integral)控制算法 是一种常用的闭环控制策略,用于实现对系统的误差调节。PI控制器结合了比例控制(Proportional,P)和积分控制(Integral,I)两种控制方式。比例控制通过比例增益(Kp)将误差直接转换为控制输出,而积分控制通过积分增益(Ki)对误差进行积

    2024年02月14日
    浏览(39)
  • 倒立摆系统之PID和LQR控制原理

    最优控制理论是一种数学方法,用于设计和分析控制系统,以使系统的性能最优。它的目标是找到一种控制策略,使得系统在满足一定的约束条件下,能够以最优的方式实现某种目标。 牛顿第二定律: F = m ⋅ a F = m cdot a F = m ⋅ a 转动定律: W = I ⋅ α W=I cdot alpha W =

    2024年02月07日
    浏览(52)
  • 【智能车】模糊PID控制原理详解与代码实现

    本文主要由三部分构成:模糊PID控制器的原理,模糊PID控制器C++的实现与测试。 模糊PID控制流程如下图所示,把目标值 Xtarget 与输出值 Xout 的误差 e 与 e 的变化率 de/dt 作为模糊控制器的输入,模糊控制器先对输入进行模糊化处理,接着进行模糊推理,最后把模糊推理的结果

    2024年02月02日
    浏览(40)
  • PID控制算法详解

    PID 即 Proportional(比例),Integral(积分),Differential(微分)的英文缩写。顾名思义,PID 控制算法是结合比例,积分和微分三种环节于一体的自动控制算法,它是连续系统中技术最为成熟,应用最为广泛的一种控制算法,该控制算法出现于 20 世纪 30 至 40 年代,适用于对被

    2024年02月02日
    浏览(66)
  • 自适应PID算法学习(01)——单神经元PID控制

      单神经元含有n个输入,仅1个输出,每个输入端可记作 x i ( i = 1 , 2 , . . . n ) x_i (i=1,2,...n) x i ​ ( i = 1 , 2 , ... n ) ,若该神经元为多元组成网络中某一层(输入层/输出层/隐含层)其中的一个单元,记该神经元输出为 o j ( j = 1 , 2 , . . . ) o_j(j=1,2,...) o j ​ ( j = 1 , 2 , ... ) ;不

    2024年02月16日
    浏览(44)
  • PID控制参数整定(调节方法)原理+图示+MATLAB调试

    原文链接:https://blog.csdn.net/viafcccy/article/details/107988093 首先最重要的是了解每个参数调节了系统响应的那些属性,通过观察响应从而调节参数改变属性。 PID的作用概述: 1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。 2、I在有系统误差和外力作用时

    2024年02月03日
    浏览(39)
  • PID控制算法代码,供大家参考

    分享一个C语言PID控制器代码: 【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~~

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包