历史上的今天
今天是:2024年10月20日(星期日)
2018年10月20日 | 用STM32F407玩控制—常规PID控制
2018-10-20 来源:eefocus
常规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所示,从图中可以看出,调节器输出波动小了很多。




史海拾趣
|
雪崩光电二极管是一种高灵敏度、高速度的光电二极管。施加反向电压时,能启动其内部的增益机构。APD的增益可以由反向偏置电压的幅度来控制。反向偏置电压越大增益就越高。APD在电场强度的作用下工作,光电流的雪崩倍增类似于链式反应。APD应用于对 ...… 查看全部问答> |
|
protues元件库 立元件库元件名称及中英对照 AND 与门 ANTENNA 天线 BATTERY 直流电源 BELL 铃,钟 BVC 同轴电缆接插件 BRIDEG 1 整流桥(二极管) BRIDEG 2 整流桥(集成块) BUFFER 缓冲器 BUZZER 蜂鸣器 CAP 电容 CAP ...… 查看全部问答> |
|
我们做的这个项目要求连四路摄像头到开发板上,我们打算用交换机连在开发板上的网络口,然后通过交换机引出四个摄像头,这个方案我们需要做些什么啊,没有思路。摄像头指令怎么发啊。大家谁做过分享一下经验,有没有这方面的例子啊。在 ...… 查看全部问答> |
|
获取电池电量函数问题GetSystemPowerStatusEx2 我查了我的sdk里已经包含了Coredll.lib和Winbase.h,为什么我在EVC里调用GetSystemPowerStatusEx2函数,编译时说没有定义呢,头文件我已经加了的… 查看全部问答> |
|
怎样实现:在线监控嵌入式软件的全部运行过程。包括报错,警示等功能。 是监控运行过程哦。 给一个思路也可以的,当然最好能写详细点啦!!! 比如可以把嵌入式软件的运行情况全部记录在一个数据库中。 不过在数据库中应该记录哪些具体的信息 ...… 查看全部问答> |
|
我刚学习了FPGA 有一个问题一直困恼我 testbench是用来给源码测试激励 赋值等用于仿真的 但是真正下载到板子上去是不用testbench的 那这个测试激励又由谁给的呢?没有测试激励就不可能有源码实现的功能… 查看全部问答> |




