PID算法的学习

STM32的编码器接口—初始化结构体详解

时基结构体:

 typedef struct

{

uint32_t  Prescaler;  //预分频器

uint32_t  CounterMode;  //计数模式

uint32_t  Period;  //计时器周期

uint32_t  ClockDivision;  //时钟分频

uint32_t  RepetitionCounter;  //重复计算器

uint32_t  AutoReloadPreload;  //自动重载值

}TIM_Base_InitTypeDef;

编码器初始化配置结构体:

typedef struct

{

uint32_t  EncoderMode;  //编码器模式

uint32_t  IC1Polarity;  //输入信号极性

uint32_t  IC1Selection;  //输入通道

uint32_t  IC1Prescaler;  //输入捕获预分频器

uint32_t  IC1Filter;  //输入捕获滤波器

uint32_t  IC2Polarity;  //输入信号极性

uint32_t  IC2Selection;  //输入通道

uint32_t  IC2Prescaler;  //输入捕获预分频器

uint32_t  IC2Filter;  //输入捕获滤波器

}TIM_Encoder_InitTypeDef;

 离散的PID公式与位置式PID公式

连续公式整理后型如:

 假设采集数据的间隔时间为T,则在第K T时刻有:偏差为err(K)

第K个周期时刻的误差等于输入(目标)值减输出(实际)值,

则有 :err(k)=rin(k)-rout(k)

积分环节为所有时刻的误差和,则有:err(K)+err(k+1)+err(k+2)+.....

微分环节为第k时刻误差的变化率,则有: [err(k)-err(k-1)]/T

离散公式

离散公式整理

 

整理后的这种表达形式为 位置式PID算法公式,也叫作全量式

 增量式PID

根据前面的位置式公式:

接下来只需两步即可推导出增量式PID:

第一步,将k-1带入到k得:

第二步,由得:

到此增量式PID表达方式就推到完了,从公式可以看出增量式PID的输出与近三次的偏差有很大关系;需要注意的是我们推动的是对于上一次来说的调节量,也就是说当前的输出,等于上一次与本次增加的调节量之和

 位置式PID与增量式PID对比

 增量式算法不需要对积分项累加,控制量增量只与近几次的误差有关,计算误差对控制量计算的影响较小。而位置式算法要对近几次的偏差的进行积分累加,容易产生较大的累加误差;

增量式算法得出的是控制量的增量,例如在阀门控制中,只输出阀门开度的变化部分,误动作影响小,必要时还可通过逻辑判断限制或禁止本次输出,不会严重影响系统的工作;而位置式的输出直接对应对象的输出,因此对系统影响较大;

增量式算法控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式算法适用于执行机构不带积分部件的对象,如电液伺服阀;

在进行PID控制时,位置式PID需要有积分限幅和输出限幅,而增量式PID只需输出限幅。

 位置式PID优缺点:

优点:位置式PID是一种非递推式算法,可直接控制执行机构(如平衡小车),u(k)的值和执行机构的实际位置(如小车当前角度)是一一对应的,因此在执行机构不带积分部件的对象中可以很好应用;

缺点:每次输出均与过去的状态有关,计算时要对e(k)进行累加,运算工作量大。

增量式PID优缺点:
 

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

 位置式离散PID公式详解

比例项(P)
成比例的反应控制系统中输入与输出的偏差信号,只要偏差一旦产生,就立即产生控制的作用来减小产生的误差。
积分项(I)
在比例控制环节产生了静态误差,在积分环节中,主要用于就是消除静态误差提高系统的无差度。
微分项(D)
微分环节的作用是反应系统偏差的一个变化趋势,可以在误差来临之前提前引入一个有效的修正信号。


通过举例说明Kp、Ki、Kd的作用


为了避免上述系统达到稳态,却仍然不能达到目标值的情况我们引入了积分环节来消除稳态误差。
引入积分环节,就相当于在我们再加了一个小水龙头,)给水箱注水,Ki项作用在整个环节累计的误差上,只要有误差,那么控制的力度就会不断的增大。
应用在实例中,与上述纯比例环节的情况不同,引入的积分环节后,即使比例环节达到了稳态,但是由于积分环节的存在,如果误差仍然存在时,那么小水龙头还会继续拧大,增加往水箱中的注水量,直到误差消除,此时积分项不再增大,输出维持不变,意思就是在消除了误差的情况下,小水龙头的注水量,和用水量也达到了平衡。

延续上面的系统,我们给水箱注水的时候,突然来了个好心天爷,给我们水箱加了一桶水,假设现在还没有超过预定的水位。那么在大爷加水前,系统的偏差是不是比大爷加水后的偏差要大。比如大爷加水前,偏差水位为0.5米,加水之后偏差为0.1米了。假设我们增加水位的速度是0.3米每次那么是不是按照这样的速度,下次加水就很容易漫出来。 

但是我们引入了微分环节的话,微分环节就会赶紧帮我们把水龙头给拧小,甚至会帮我们把水舀出去。因为当前的偏差减去前一次的偏差为负值,所以这个微分的作用抑制了系统的过度调整。

 

 PID参数的整定方法

·试凑法

·临界比例法

·一般调节法

PID参数特点回顾
比例调节作用特点:调节作用快,系统一出现偏差,调节器立即将偏差放大输出;
积分调节作用特点:积分调节作用的输出变化与输入偏差的积分成正比,积分调节作用的输出不仅取决于偏差的大小,还取决于偏差存在的时间,只要有偏差存在,尽管偏差可能很小,但它存在的时间越长,输出信号就越大,只有消除偏差,输出才停止变化;
微分调节作用特点:微分调节的输出是与被调量的变化率成正比,微分调节越大,越能提前响应,但是也会将不必要的偏差放大;

试凑法


要根据所设计的系统的具体情况,选择合适的采样周期,多次试凑,选择性能较好的一个作为最后的采样周期。早整定参数时必须要认真的观察系统的相应情况,根据系统的响应情况来调整参数。
具体方法:
先是比例(P),再积分(I),最后是微分(D)
调试时,将PID参数置于影响最小的位置,即P最大,|最大,D最小;按纯比例系统整定比例度,使其得到比较理想的调节过程曲线,然后再把比例度放大1.2倍左右,将积分时间从大到小改变,使其得到较好的调节过程曲线;
最后在这个积分时间下重新改变比例度,再看调节过程曲线有无改善;如有改善,可将原整定的比例度减少,改变积分时间,这样多次的反复,就可得到合适的比例度和积分时间;
如果在外界的干扰下系统稳定性不好,可把比例度和积分时间适当增加一些,使系统足够稳定;
将整定好的比例度和积分时间适当减小,加入微分作用,以得到超调量最小、调节作用时间最短的调节过程。
 

临界比例法


· 将调节器置于纯比例的作用下,从大到小逐渐改变调节器的比例度,并且得到等幅度的震荡过程就叫做临界比例度。通过这些参数进行整定PID系数。

·方法:
. 将调节器的积分置于最大,微分置于0,比例度系数适当即可平衡一段时间,把系统投
放到自动运行中。
. 然后将比例逐渐增大,增大到产生等幅现象,并记录下等幅时的临界比例系数(就是8k)
和两个波峰的时间间隔。
根据记下的比例系数和周期,采用经验公式,计算调节器的参数。

一般调节法


这种方法针对一般的PID控制系统所以称之为一般调节法;其中Kp是加快系统响应速度,提高系统的调节精度;Ki用于消除稳态误差;Kd改善系统的稳态性能。

在输出不振荡时,增大比例增益P。
在输出不振荡时,减小积分时间常数Ti。
在输出不振荡时,增大微分时间常数Td。(它们三个任何谁过大都会造成系统的震荡。)

一般调参步骤为:
确定比例增益P:确定比例增益P时,首先去掉PID的积分项和微分项,一般是令Ti=0、Td=0(具体见PID的参数设定说明),使PID为纯比例调节。输入设定为系统允许的最大值的60%~70%,由0逐渐加大比例增益P,直至系统出现振荡;再反过来,从此时的比例增益P逐渐减小,直至系统振荡消失,记录此时的比例增益P,设定PID的比例增益P为当前值的60%~70%。比例增益P调试完成。
确定积分时间常数Ti:比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后在反过来,逐渐加大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。积分时间常数Ti调试完成。确定微分时间常数Td:积分时间常数Td一般不用设定,为0即可。若要设定,与确定P和Ti的方法相同,取不振荡时的30%。
系统空载、带载联调,再对PID参数进行微调,直至满足要求:理想时间两个波,前高后低4比1。

采样周期选择


采样周期该怎么选择?采样周期越短控制的效果越接近于连续,对于大多数算法缩短采样周期可使控制回路性能改善,但采样周期缩短时, 频繁的采样必然会占用较多的计算工作时间,同时也会增加计算的负担,而对有些变化缓慢的受控对象无需很高的采样频率即可满意地进行跟踪,过多的采样反而没有多少实际意义。
以一个轮子的转动为例,根据耐奎斯特采样定理可知:假设这个轮子以每秒45度来转动,那么每个轴返回原位需要8秒(采样周期),那如果我们在8、
16、24秒时用相机拍照是不是拍到的照片都是静止不动的?这是因为在采样的周期内,车轮不论旋转方向如何都会回到原位;如果现在减少拍照时间,每4秒钟拍一张照片则会在照片中发现轮子正在旋转,但是不能区分旋转方向。如果3秒钟拍一张照片那么无论是顺时针还是逆时针都可以从照片中观察到轮子的相位变化。这就是Nyquist-Shannon采样定理,我们希望同时看到轮子的旋转和相位变化,采样周期要小于整数周期的1/2,采样的频率应该大于原始频率的2倍。

通过以上框图不难看出,PID控制其实就是对偏差的控制过程;如果偏差为0,则比例环节不起作用,只有存在偏差时,比例环节才起作用;积分环节主要是用来消除静差,所谓静差,就是系统稳定后输出值和设定值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加到原有系统上以抵消系统造成的静差;而微分信号则反应了偏差信号的变化规律,也可以说是变化趋势,根据偏差信号的变化趋势来进行超前调节,从而增加了系统的预知性; 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值