单片机中的PID算法,单片机中的PID算法是什么意思啊,有什么用途呢?谢谢!

2020-11-24 10:44:24 字数 5263 阅读 6933

1楼:匿名用户

pid算法

下面对控制点所采用的pid控制算法进行说明。

控制点目前包含三种比较简单的pid控制算法,分别是:增量式算法,位置式算法,微分先行。 这三种pid算法虽然简单,但各有特点,基本上能满足一般控制的大多数要求。

1) pid增量式算法

离散化公式:

注:各符号含义如下

u(t) 控制器的输出值。

e(t);;控制器输入与设定值之间的误差。

kp;; 比例系数。

ti;;积分时间常数。

td;微分时间常数。

t;;调节周期。

对于增量式算法,可以选择的功能有:

(1) 滤波的选择

可以对输入加一个前置滤波器,使得进入控制算法的给定值不突变,而是有一定惯性延迟的缓变量。

(2) 系统的动态过程加速

在增量式算法中,比例项与积分项的符号有以下关系:如果被控量继续偏离给定值,则这两项符号相同,而当被控量向给定值方向变化时,则这两项的符号相反。

由于这一性质,当被控量接近给定值的时候,反号的比例作用阻碍了积分作用,因而避免了积分超调以及随之带来的振荡,这显然是有利于控制的。但如果被控量远未接近给定值,仅刚开始向给定值变化时,由于比例和积分反向,将会减慢控制过程。

为了加快开始的动态过程,我们可以设定一个偏差范围v,当偏差|e(t)|< β时,即被控量接近给定值时,就按正常规律调节,而当|e(t)|>= β时,则不管比例作用为正或为负,都使它向有利于接近给定值的方向调整,即取其值为|e(t)-e(t-1)|,其符号与积分项一致。利用这样的算法,可以加快控制的动态过程。

(3) pid增量算法的饱和作用及其抑制

在pid增量算法中,由于执行元件本身是机械或物理的积分储存单元,如果给定值发生突变时,由算法的比例部分和微分部分计算出的控制增量可能比较大,如果该值超过了执行元件所允许的最大限度,那么实际上执行的控制增量将时受到限制时的值,多余的部分将丢失,将使系统的动态过程变长,因此,需要采取一定的措施改善这种情况。

纠正这种缺陷的方法是采用积累补偿法,当超出执行机构的执行能力时,将其多余部分积累起来,而一旦可能时,再补充执行。

2) pid位置算法

离散公式:

;= 对于位置式算法,可以选择的功能有:

a、滤波:同上为一阶惯性滤波

b、饱和作用抑制:

(1) 遇限削弱积分法

一旦控制变量进入饱和区,将只执行削弱积分项的运算而停止进行增大积分项的运算。具体地说,在计算ui时,将判断上一个时刻的控制量ui-1是否已经超出限制范围,如果已经超出,那么将根据偏差的符号,判断系统是否在超调区域,由此决定是否将相应偏差计入积分项。

(2) 积分分离法

在基本pid控制中,当有较大幅度的扰动或大幅度改变给定值时, 由于此时有较大的偏差,以及系统有惯性和滞后,故在积分项的作用下,往往会产生较大的超调量和长时间的波动。特别是对于温度、成份等变化缓慢的过程,这一现象将更严重。为此可以采用积分分离措施,即偏差较大的时,取消积分作用;当偏差较小时才将积分作用投入。

另外积分分离的阈值应视具体对象和要求而定。若阈值太大,达不到积分分离的目的,若太小又有可能因被控量无法跳出积分分离区,只进行pd控制,将会出现残差。

离散化公式:

δu(t) = q0e(t) + q1e(t-1) + q2e(t-2)

当|e(t)|≤β时

q0 = kp(1+t/ti+td/t)

q1 = -kp(1+2td/t)

q2 = kp td /t

当|e(t)|>β时

q0 = kp(1+td/t)

q1 = -kp(1+2td/t)

q2 = kp td /t

u(t) = u(t-1) + δu(t)

注:各符号含义如下

u(t);;控制器的输出值。

e(t);控制器输入与设定值之间的误差。

kp;;比例系数。

ti;;;积分时间常数。

td;;微分时间常数。

t;;;调节周期。

β;;; 积分分离阈值

(3) 有效偏差法

当根据pid位置算法算出的控制量超出限制范围时,控制量实际上只能取边际值u=umax,或u=umin,有效偏差法是将相应的这一控制量的偏差值作为有效偏差值计入积分累计而不是将实际的偏差计入积分累计。因为按实际偏差计算出的控制量并没有执行。

如果实际实现的控制量为u=u(上限值或下限值),则有效偏差可以逆推出,即:

= 然后,由该值计算积分项

3) 微分先行pid算法

当控制系统的给定值发生阶跃时,微分作用将导致输出值大幅度变化,这样不利于生产的稳定操作。因此在微分项中不考虑给定值,只对被控量(控制器输入值)进行微分。微分先行pid算法又叫测量值微分pid算法。

公式如下:

离散化公式:

参数说明同上

对于纯滞后对象的补偿

控制点采用了**ith**器,使控制对象与补偿环节一起构成一个简单的惯性环节。

pid参数整定

(1) 比例系数kc对系统性能的影响:

比例系数加大,使系统的动作灵敏,速度加快,稳态误差减小。kc偏大,振荡次数加多,调节时间加长。kc太大时,系统会趋于不稳定。

kc太小,又会使系统的动作缓慢。kc可以选负数,这主要是由执行机构、传感器以控制对象的特性决定的。如果kc的符号选择不当对象状态(pv值)就会离控制目标的状态(sv值)越来越远,如果出现这样的情况kc的符号就一定要取反。

(2) 积分控制ti对系统性能的影响:

积分作用使系统的稳定性下降,ti小(积分作用强)会使系统不稳定,但能消除稳态误差,提高系统的控制精度。

(3) 微分控制td对系统性能的影响:

微分作用可以改善动态特性,td偏大时,超调量较大,调节时间较短。td偏小时,超调量也较大,调节时间也较长。只有td合适,才能使超调量较小,减短调节时间。

单片机中的pid算法是什么意思啊,有什么用途呢?谢谢!

2楼:匿名用户

pid算法是一种经典的控制算法.由比例/积分/微分组成.建议看看控制理论.

pid就是比例积分微分控制,在工业里面应用非常广泛,据统计,现在有一半以上以上的工业系统直接应用pid控制.pid分模拟和数字,既然用到了单片机当然就得用数字了,另外pid还分理想,实际,微分先行,抗积分饱和等等,但都是在理想或者实际pid式子上面进行一些修改得来的.关于这方面的知识,建议你还是找一本控制理论书刊以下,很简单,但却是非常有用的,搞工业设计,不懂pid,说出来都没人信

3楼:q号

就是一算法 用于控制

4楼:匿名用户

pid就是比例积分微分算法

pid算法在单片机中怎么实现

5楼:匿名用户

pid控制在8位单片机中仍然有广泛的应用,比如温度控制,利用比例、积分、微分补偿来做恒温补偿控制,当然由于有这些数学处理,c语言相对方便一些

单片机如何写pid程序?

6楼:匿名用户

pid算法有公式,直接套用就可以了。

公式在这个链接说的很明白了。

http://baike.baidu.***/view/1759810.htm

1、如果加入d抖动的特别厉害,试试只用pi控制。

2、还有pid参数都是一步一步调出来的,我建议你做个上位机,就是个简单的vb串口程序,用来设置pid参数

3、然后在单片机这边弄个串口接收程序,这里就是个简单的串口程序,人人都会,把接收到的pid存储在缓冲区里。

4、然后单片机程序直接调用。单片机带eeprom的话,当接收到改变的pid参数时,存储这些参数。去stc官网下你的单片机资料,上面有eeprom测试程序,直接套用。

上面纯属个人建议,都容易实现,不过有点费时。

7楼:生活如歌

网上有这样的例子,另外在《单 片机控制技术》课本上有专门的介绍,可以参考一下.

完整可用的51单片机pid运算公式

8楼:匿名用户

没意义。pid是有很强的针对性的,我以前看到的几个网上的pid程序都还是可以用的。但是需要你自己定的,可不只是pid三个数。

采样周期是多少?pid计算后打算用多少位的数据,都是要自己定的,等等。

而所谓温度控制的程序,直接套用的(参数不套用,自己调),没有几个能好用的,要么计算量太大,要么调节不够好。

还是看看公式自己写的好。就算我写了一个在我手上好用的,给你,你那也未必好用,因为还要根据实际去修改一些输出、输入量,或加以限制,不同的系统,这些都是不同的。就像是汽车底盘都是4个轮子,你要的是越野车,我给你个轿车的底盘,上面再怎么改也不好用阿!

9楼:黑幕

pid简介

pid控制

器(比例-积分-微分控制器)是一个在工业控制应用中常见的反馈回路部件,由比例单元p、积分单元i和微分单元d组成。pid控制的基础是比例控制;积分控制可消除稳态误差,但可能增加超调;微分控制可加快大惯性系统响应速度以及减弱超调趋势。 其输入e(t)与输出u(t)的关系为:

u(t)=kp[e(t)+1/ti∫e(t)dt+td*de(t)/dt]式中积分的上下限分别是0和t。其中kp为比例系数;ti为积分时间常数;td为微分时间常数。

c语言实现

float kp,ki,kd;//pid参数

float object,actual;//目标值和实际值

float err,err_past,err_sum;//误差

float pid_out;

err_past = err;

err = object - actual;

err_sum += err;

pid_out = kp*err + ki*err_sum + kd*(err - err_past);

注意:这里用了最基本的算法实现形式,没有考虑死区问题,没有设定上下限,只是对公式的一种直接的实现。

整定方法

pid控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。

这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。

pid控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。

现在一般采用的是临界比例法。

单片机片选有什么用,51单片机片选的意义是什么?

1楼 无畏无知者 比如,有几块一样的芯片同时接到单片机总线上,靠什么去区分这些芯片并访问他们呢? 对,就是那个片选信号了,哪一个芯片的片选信号使能,总线就与哪一个芯片进行数据交换了。 这个就是片选的作用。 其实归根结底就是寻址而已。 2楼 匿名用户 片选信号相对于地址一样,当芯片的片选和地址信号同时...