×
单片机 > 单片机程序设计 > 详情

用STM32F407玩控制—常规PID控制

发布时间:2020-07-08 发布时间:
|

常规PID控制或算法如下:

uc=Kc*(e+∫e*dt/Ti+Td*de/dt)

或者用传递函数表示:

Gc(s)=Kc*(1+1/(Ti*s)+Td*s)

如果用计算机实现PID算法,那得用数值积分和数值微分来代替积分和微分运算,即Δt代替dt,用∑运算代替∫运算,用差分代替微分运算,但每次作∑运算显然是不合理的,1是计算量大,2是随着时间增加,变量将趋无穷多,这也是不可能的,所以,改成增量计算是更好的方法,这样PID控制的增量计算式为:

Δu=Kc*{e(k)-e(k-1)+e(k)*Ts/Ti+[e(k)-2*e(k-1)+e(k-2)]*Td/Ts}

式中Ts为采样时间,Kc为比例增益,Ti是积分时间,Td是微分分时间。

这个算式在单片机中实现是非常简单的。

采样时间通常来说,流量系统一般是1-2秒,压力系统一般是3-5秒,液位系统一般是3-5秒,温度系统一般是15-20秒,在STM32F407上,我们把采样时间定为1秒,这能满足通用要求。

STM32F407上,PID控制的效果如图1所示。

从图中可以看出,仿真情况由WINCC组态软件显示,监控画面主要由一个在线趋势控件、三个输入/输出域、两个按钮组成,在线趋势控件显示过程值曲线,输入/输出域显示过程值,一个按钮实现自动/手动切换,另一个按钮实现自动整定切换。

图1中调节器输出曲线(蓝色线)有突变现象,那是由于STM32F407串行通讯中,接到的设定值(SP)或者过程值(PV)出错而造成的,对接收的SP和PV数据进行异常处理后,这个问题就解决了,此时,实时仿真情况如图2所示。

图1和图2都是没有干扰情况下进行的仿真,而现实世界中都有电磁干扰存在,那时情况又如何?我们在SIMULINK模型中加入有限带宽的白噪声,在此基础上进行仿真,结果图3所示,从图中可以看出,调节器输出MV(执行变量)波动很大,如果调节器后面的执行机构是调节阀,那么调节阀阀杆摩损被加速,缩短调节阀寿命。

对付干扰的一个方法是对信号作滤波处理,控制工程中常用的滤波方法有:1算术平均滤波,2滑动平均滤波,3一阶低通滤波,其传递函数为Gf(s)=1/(Tf*s+1),低通数字滤波实现,1)是可以将微分方程转换为差分方程,然后进行代数运算,2)是用控制系统仿真中离散相似法进行计算,我们用的后者,低通环节也是一阶系统,后面还将应用在smith预估补偿控制中,低通数字滤波实现其实还有其他方法,这里不再赘述。

对过程值(PV)进行滤波处理后,仿真情况如图4所示,从图中可以看出,调节器输出波动小了很多。












『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些