pid控制器中微分的作用,pid控制微分方程
从PID控制的基本原理我们知道,微分信号的引入可以改善系统的动态特性,但是也存在一个问题,就是容易引入高频扰动,特别是偏差扰动突变时,就表现出微分项的不足。为了解决这个问题,人们引入了低通滤波来解决这个问题。
1.不完全微分的基本思想
微分项有引入高频干扰的风险,但如果在控制算法中加入低通滤波器,系统性能可以得到改善。一种方法是在PID算法中加入一阶低通滤波器。这就是所谓的不完全微分,其结构图如下:
或者另一种形式:
这里我们考虑第一种结构形式。在这种情况下,微分与一阶惯性环节相结合,微分部分的计算公式可以表示为:
的值介于0和1之间,由滤波器常数和采样周期决定。据此我们对其进行增量,然后可以得到不完全微分的增量计算公式:
或者表达为:
两种表示是等价的,第二种表示更接近于我们完全微分PID算法的增量表示,很容易理解。而且更符合位置表示,所以我们选择第二种表示。
2.算法实现。
经过前面的分析和公式推导,我们实现不完全微分是相当容易的。为了便于理解,我们保持比例和积分为基本格式,只对微分部分使用不完全微分算法。
(1)位置PID算法的实现
位置PID的实现过程和前面一样,只是需要加上前面的Ud值。首先,定义PID对象的结构:
1 /*定义结构和公共机构*/
2
3 typedef结构
四
5 {
六
7浮动设定值;//设置值
八
9浮动比例增益;//比例系数
10
11浮点积分增益;//积分系数
12
13浮点导数增益;//微分系数
14
15浮点lasterror//前一节拍偏差
16
17 float lastdev//前一拍的微分项值
18
19浮动阿尔法;//不完全微分系数
20
21浮点结果;//输出值
22
23浮点积分;//整数值
24
25 } PID接下来,实施PID控制器:
1 void PIDRegulation(PID *vPID,浮点处理值)
2
3 {
四
5 float thisError
六
7 float thisDev
八
9 this error=vPID-setpoint-process value;
10
11 vPID-integral=this error;
12
13 this dev=vPID-derivative gain *(1-vPID-alpha)*(this error-vPID-lasterror)vPID-alpha * vPID-last dev;
14
15
16
17 vPID-result=vPID-proportion gain * this error vPID-integral gain * vPID-integral this dev;
18
19 vPID-lasterror=this error;
20
21 vPID-last dev=this dev;
22
20}这实现了具有最简单的不完全微分的基于位置的PID控制器。当然,它不考虑任何干扰条件,它只是数学公式的计算机语言。
(2)增量式PID算法的实现
增量不完全微分PID控制器的实现是基于前面的增量公式。首先,定义PID对象的结构:
1 /*定义结构和公共机构*/
2
3 typedef结构
四
5 {
六
7浮动设定值;//设置值
八
9浮动比例增益;//比例系数
10
11浮点积分增益;//积分系数
12
13浮点导数增益;//微分系数
14
15浮点lasterror//前一节拍偏差
16
17浮动预误差;//前两拍的偏差
18
19 float lastdeltadev//前一拍中的微分项增量
20
21浮动;//不完全微分系数
22
23浮动死区;//死区
24
25浮点结果;//输出值
26
27 } PID接下来,实施PID控制器:
1 void PIDRegulation(PID *vPID,浮点处理值)
2
3 {
四
5 float thisError
六
7浮动增量;
八
9 float deltaDev
10
11 float pError,dError,iError
12
13
14
15 this error=vPID-setpoint-process value;//获取偏差值
16
17 pError=this error-vPID-lasterror;
18
19 iError=thisError
20
21 dError=this error-2 *(vPID-lasterror)vPID-preerror;
22
23
24
25 delta dev=vPID-derivative gain *(1-vPID-alpha)* dError vPID-alpha * vPID-last delta dev;
26
27 increment=vPID-proportion gain * pError vPID-integral gain * iError delta dev;//增量计算
28
29
30
31 vPID-preerror=vPID-lasterror;//为下一次操作存储偏差。
32
33 vPID-lasterror=this error;
34
35 vPID-last delta dev=delta dev;
36
37 vPID-result=增量;
38
39}这实现了最简单的增量不完全微分PID控制器,它不考虑任何干扰条件。它只是数学公式的计算机语言。
3.摘要
不完全微分法在微分环节采用低通滤波,有效地改善了微分项的特性。其中的值是0到1之间的一个数。两个极限值,当0时,实际上是没有滤波的普通微分环节;取1时,没有微分效应。因此,的取值对不完全微分的效果至关重要,一般根据被控对象的特性来确定。
欢迎关注:
想更方便及时的阅读相关文章,请关注我的微信微信官方账号【木南创智】
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。