谈谈PID控制是怎么实现滴

简介:


        闭环自动控制技术都是基于反馈的概念以减少不确定性。反馈理论的三要素:测量、比较和执行。测量被控变量的实际值;与期望值相比较;用这个偏差来纠正系统的响应。执行调节控制。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制。

看看什么是PID控制?

PID

(比例P(Proportion)积分I(Integral)导数D(Derivative))

设:

1 >在实际控制系统对某一目标的调节中,信号的输出量是随时间变化的函数假设输出函数为:u(t)

2>当前信号和目标信号的偏差也是随时间变化的函数假设偏差函数为:e(t)

3>在PID算法中最终在瞬时的输出量u(x)

目标:

u(x) 是由三部分组成,比例(P)部分、积分(I)部分和微分(D)部分(微分部分也称导数部分),三部分都是围绕偏差函数e(t)实现的。

即u(x)也是有3个函数之和u1,u2,u3

比例部分:

u1=Kp*e(t)

Kp…………比例系数。

释:该部分表示在时间为t时刻,偏差量为e(t),输出量u的比例部分(u1)是当前偏差值和比例系数(Kp)的乘积。Kp设置越大输出越强烈也越快接近目标值,但系统也会越不稳定。

积分部分:


Ti…………为积分时间常数

释:该部分表示在时间为t时刻,输出量u(x) 的积分部分(u2)是偏差函数e(t)在【0,t】区间的积分和积分时间常数Ti的乘积,该部分可以消除信号偏差在时间上的积累误差,当然Ti设置越大输出越强烈也越快接近目标值,但系统也会越不稳定。

微分部分:

u3=Td*e'(t)

Td…………为微分时间常数

释:该部分表示在时间为t时刻,输出量u的微分部分是偏差函数e(t)的导函数e'(t)的值和微分时间常数Td的乘积,在数学中e'(t)的值是函数e(t)在自变量为t点斜率,在PID控制中该项是对偏差预测后的一个纠正输出。

那么最后总的信号输出函数:

u=u1+u2+u3


在系统调节中Kp、Ti、Td是上重要的参数,由系统根据需要设定。

注:一般来说Kp、Ti、Td上三个参数无法计算其最佳的值只能反复调试找出系统状态较为理想的值。

PID控制在程序上的实现:

在PID的输出计算等式中由于偏差函数e(t) 和其导函数e'(t) 无法用标准的函数方程表达;所以采用传统的计算方式是无法求出u的值,在PID程序设计时对PID函数做了离散化处理,引入采样周期Tc;采样周期也是系统外定义的一个时间周期,后续可以看出采样周期时间Tc越x小控制系统对目标控制的也精确。

例PID调节如在温控领域的设计思想:

比例部分 

u1=Kp*e(t)=Kp*(e.iset-e.now)

Kp…… 比例常数

e.now……当前采样点测得的温度值

e.iset……设定的目标温度值

积分部分


积分部分的函数


第1个采样点到第i个采样点偏差的累计和

Ti…………为积分时间常数

微分部分

u3=Td*e'(t)=Td*[e(t)-e(t-1)]/t

e(t)……当前采样点的偏差值

e(t-1)……前一次采样点的偏差值

t……取样的次数

Td…………为微分时间常数

例:3D打印常用的 NTC 100K 3950 热敏电阻温度采样

NTC 100K 3950 热敏电阻阻值计算公式

NTC……负温度系

100k……在25摄氏度标定阻值为100K

3950……温度系数为3950

当前瞬时温度阻值计算公式:Rnow=R*{e^[B*(1/T1-1/T2)]}

Rnow......当前温度热敏电阻的阻值

R......热敏电阻的标定阻值

B......热敏电阻的温度系数B值

T1 :当T1取值为0摄氏度时的开氏温度值为(273.15),

那么T2的值是当前温度的开氏温度,但是不能小于T1(零摄氏度)。

e......无理数自然常数

e=2.71828 18284 59045 23536 02874 

通过变换:

>Rt/R=e^[B*(1/T1-1/T2)]

>loge(Rt/R)=B*(1/T1-1/T2)

>[ln(Rt/R)]/B=1/T1-1/T2

>1/T2=1/T1-[ln(Rt/R)]/B

>T2=1/{1/T1-[ln(Rt/R)]/B}

>T2=1/{1/273.15-[ln(Rt/100000)]/3950}

那么当前温度的摄氏温度C=T2-273.15(T1)

注:在程序设计中一般会设定的一个启动PID调节的临界温度,一般设定为10摄氏度。只有满足0<[e(t)=e.iset-e.now]<10时信号的输出才启用PID算法.

当[e(t)=e.iset-e.now]<0时当前温度已经超过设定温度,输出截止PID算法不启动。

[e(t)=e.iset-e.now]>10,输出全功率加热,PID算法不启动。

当偏差值进入10摄氏度时,有PID计算出的值按PWM方式输出:PWM= [e(t)/10]*255。


PID控制曲线
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。