RoboMaster

标题: 走进PID [打印本页]

作者: 南华MA战队    时间: 2019-2-27 21:42
标题: 走进PID

1
PID简介
PID是比例、积分、微分的简称,PID控制的难点不是编程,而是控制器的参数整定。

参数整定的关键是正确地理解各参数的物理意义,PID控制的原理可以用人对炉温的手动控制来理解。

PID参数的调试是一个综合的、各参数互相影响的过程,实际调试过程中的多次尝试是非常重要的,也是必须的,所以各位做PID控制的要有足够的耐心。

原理

[attach]20108[/attach]
PID控制原理图

PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。

比例P控制

比例控制是一种最简单的控制方式。

其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差。

积分I控制

在积分控制中,控制器的输出与输入误差信号的积分成正比关系。

对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统。

为了消除稳态误差,在控制器中必须引入"积分项"。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。

因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。

微分D控制

在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。

自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。

其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。

解决的办法是使抑制误差的作用的变化"超前",即在误差接近零时,抑制误差的作用就应该是零。

这就是说,在控制器中仅引入"比例"项往往是不够的,比例项的作用仅是放大误差的幅值,而需要增加的是"微分项",它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。


2
参数整定
PID控制器的参数整定是控制系统设计的核心内容。

它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。

PID控制器参数整定的方法很多,概括起来有两大类。

一是理论计算整定法。

它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。

二是工程整定方法。

它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。

PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。

三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。

但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。

一般采用的是临界比例法,利用该方法进行PID控制器参数的整定步骤如下:

1.首先预选择一个足够短的采样周期让系统工作;

2.仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;

3.在一定的控制度下通过公式计算得到PID控制器的参数。


3
基于51单片机PID算法程序
[attach]20109[/attach]

由51单片机组成的数字控制系统控制中,PID控制器是通过PID控制算法实现的。

51单片机通过AD对信号进行采集,变成数字信号,再在单片机中通过算法实现PID运算,再通过DA把控制量反馈回控制源。从而实现对系统的伺服控制。

位置式PID控制算法C51程序,具体的PID参数必须由具体对象通过实验确定。

由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余数补偿。

这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。

[attach]20110[/attach][attach]20111[/attach][attach]20112[/attach][attach]20113[/attach]

想必基于51单片机PID算法程序对刚入电控组的小萌新们有很大帮助,快收藏好吧~


作者: 火星探索    时间: 2019-2-28 09:19
优秀啊
作者: 快拆小分队    时间: 2019-2-28 11:45
有点干货
作者: 小白狼    时间: 2019-4-21 16:06
厉害了楼主,学习




欢迎光临 RoboMaster (https://bbs.robomaster.com/) Powered by Discuz! X3.2