首页>>科技 >>内容

pid控制算法代码,PID控制算法基本原理

发布时间:2023-10-03 21:58:26编辑:温柔的背包来源:

很多朋友对pid控制算法代码,PID控制算法基本原理不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

pid控制算法代码,PID控制算法基本原理

大家好,我是St,今天给大家讲一下PID算法的控制原理。在解释PID算法之前,这里抛出一个问题。如何通过算法控制加热器使水温稳定在50摄氏度?一、传统位置控制算法(非PID算法)(1)算术逻辑:用户设定目标温度Sv为50,传感器检测被控对象即水的温度PV。当Pv 为Pv==SV时,表示实际温度等于目标温度,不会输出。

使用PvSv时,表示实际温度高于目标温度,输出低电平OUT=L,使执行器即加热器不工作,即0功率输出(2)代码实现:# Define SV 50 Void Func(unsigned int PV){ If(PV(1))缺点控制算法过于简单,简单地将设定值与输出值进行比较,一旦发现低于设定值,就输出高,否则,

温度会一直上下波动设定值如下图所示,因为被控对象具有一定的惯性,即加热时水温不会立即上升,不加热时也不会立即下降二、PID闭环控制PID闭环控制,即比例-积分-微分控制,即通过偏差的比例-积分-微分控制使电流值趋近目标值的过程。一般来说,比例P控制是必须的,所以衍生出很多组合PID控制,比如PD,PI,PID。离散PID被公开为:

其中e(k)为K时刻的偏差,u(k)为输出控制量(加热器用PWM)(1)比例控制(P)Sv为用户设定目标值,Pv为控制对象水的当前温度值,Ek为目标温度与当前温度的偏差:Ek=Sv-Pv当Ek0时,表示当前温度不达标当Ek==0时。

Kp参数解释:Kp可以理解为一个衰减器或放大器,主要用于调节偏差值,其增益或放大比例控制的功能:调节达到目标值的时间,增加Kp会增加相应的速度,但可能会引起超调和静态误差(2)积分控制(I)。

Ek是历史上某一时刻的偏差,Sk是历史偏差之和:Sk=E1 E2 E3.EN 当Sk0时,表示历史上大部分时间温度都没有达标(不知道现在有没有达标)当Sk==0时,表示历史上温度总体较好(不管现在有没有达标)当Sk0时,表示历史上大部分时间温度都超标(不知道现在有没有超标)。

PWM=Ki*Sk Ki参数解释:Ki可以理解为衰减器或放大器,主要用于调节Sk,调整其增益或控制放大倍数;

如果我们把加热器放在很冷的地方加热水,加热目标值是50摄氏度。在比例控制下,水温缓慢上升,直至升至45摄氏度。发现天气太冷,在比例控制下,水散热的速度正好等于加热的速度。所以水温永远停留在45摄氏度,永远达不到50摄氏度。

如果加上积分控制,只要没有达到50摄氏度,就会有偏差。此时,如果偏差不断积分(累加),输出PWM会增大,即加热器的功率会增大,使水温能达到50摄氏度。所以比例控制的作用是减少静态误差,但容易造成冲击。

(3)微分控制(D)E(k)是当前的偏差值,E(k-1)是最后的偏差值Dk,是最后两个偏差的减法,表示最近两个时间点偏差的变化:Dk=E(k)-E(k-1) 当Dk0时,表示偏差有增大的趋势;当Dk==0时,表示偏差稳定。表示偏差减小的趋势微分控制公式:PWM=Kd*Dk Kd参数解释:Kd可以理解为衰减器或放大器,主要用于调节Dk,调整其增益或放大的微分控制;

只要物理量发生变化,微分控制就会起作用,使物理量的变化速度趋于零。增大Kd参数可以抑制振荡,使之尽快稳定,但可能导致调整周期过长。(4)PID算法控制代码实现。

Int PID(int Sv,int Pv){ /* Sv:用户设定目标值** Pv:传感器检测到的电流值** Ek:目标值与电流值的偏差值** last_Ek: last Ek值** Sk:偏差值的积分值** PWM:输出PWM值*/static int Ek,last_Ek。静态浮动PWMek=Sv-Pv;Sk=Ekif(Sk _ max)Sk=Sk _ max;if(sk PWM _ max)PWM=PWM _ max;中频(脉宽调制

当Ek、Ki、Kp参数调整好,温度能及时达到目标温度并稳定如图三、PID控制参数整定方法PID控制的调整经验可以总结为:首先只用P控制,增加P系数直到系统振荡,然后加入微分控制增加阻尼,消除振荡后再根据系统对响应和静差的具体要求调整P、I参数。示例:我们需要将目标值调整为10390,将当前值调整为10000。

将Kd和Ki的参数值设置为0,然后从0开始逐渐增加Kp参数,直到发生冲击。当Kp=62,Ki=0,Kd=0时,响应曲线如下:保持Kp=62,Ki=0不变,Kd从0逐渐增大。当Kd=188时,响应曲线如下:

加入微分控制后,可以看出系统的振荡得到抑制,但系统的响应变慢。因为微分控制相当于一个阻尼力,引入微分控制相当于增加系统的阻尼。这时候就需要结合KP和KI进一步优化。在实际生产中,需要对不同的项目进行评估。例如,如果一个系统不要求高的快速性,但要求高的稳定性和准确性,就需要严格控制超调量和静态误差。

PID控制算法是一种经典的控制方法,在现实生活中有着广泛的应用。掌握它的原理是非常重要的。回顾唐子红

以上知识分享希望能够帮助到大家!