常规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所示,从图中可以看出,调节器输出波动小了很多。
上一篇:用STM32F407玩控制—不完全微分PID控制
下一篇:用STM32F407玩控制—通信
推荐阅读
史海拾趣
BENCENT公司在成立之初,面临着资金短缺、技术瓶颈和市场认知度低等多重挑战。创始人带领团队夜以继日地研发,通过不断尝试和改进,终于成功开发出了一款具有竞争力的电子产品。这款产品凭借其高性能和创新性,在市场上获得了初步认可,为公司的后续发展奠定了基础。
随着国内市场的饱和,BENCENT公司开始将目光投向海外市场。公司制定了详细的国际化战略,包括在海外市场设立分支机构、拓展销售渠道、加强与当地企业的合作等。通过一系列的努力,公司成功打入多个海外市场,实现了业务的多元化和国际化。
CEVA, Inc.最初于1999年11月22日在美国特拉华州注册成立,起初的名称并非CEVA。随着公司的业务扩展和技术积累,其在2002年11月进行了更名,成为ParthusCeva公司。这一更名反映了公司业务的进一步发展和市场定位的调整。随后,在2003年12月,公司再次更名为CEVA公司,这一名称沿用至今,成为无线连接和智能传感技术领域的知名品牌。
随着电子技术的快速发展,教育和培训成为了Global Specialties的另一个重要领域。公司敏锐地捕捉到这一市场需求,推出了一系列针对教育的试验板和套件。这些产品不仅帮助学生更好地理解电子原理,还激发了他们的创造力和实践能力。通过与多所高校和职业院校的合作,Global Specialties成功地将自己的品牌深入到教育市场的每一个角落。
随着汽车行业的竞争日益激烈,奥斯汀汽车开始寻求与其他公司的技术合作。1952年,奥斯汀与诺菲尔德车厂合并,组成了英国汽车公司(BMC),旗下包括莫里斯、沃尔斯利、莱利及MG等多个品牌。此外,奥斯汀汽车还积极与国际汽车公司展开合作,如与日产汽车在1952年签署了技术合作协议,共同开发新的车型。这些合作使得奥斯汀汽车的技术水平得到了显著提升,同时也推动了公司的国际化发展。
进入21世纪后,随着USB技术的普及,骅讯公司迅速抓住市场机遇,进军USB音频业务。凭借其在音频技术领域的深厚积累,骅讯成功开发出多款USB音频产品,并在市场上取得了良好的反响。这一举措不仅拓展了骅讯的业务范围,也为其在音频领域的持续发展奠定了坚实的基础。
如何成为一位杰出的工程师-How to be a Star Engineer 如何成为一位杰出的工程师-How to be a Star Engineer Robert E. Kelley, Carnegie Mellon University (Robert E. Kelley, \"How to be a star engineer,\" IEEE Spectrum, pp. 51-58, Oct. 1999.) 翻译:马仕毅 在1985 年,我被问了一些问题,从那 ...… 查看全部问答∨ |
|
小弟做了一年的Vc开发 现在刚进入一家公司做嵌入式开发 本来很有兴趣,但是没有人教,全是自己看,看了一个月大概明白了,但是感觉离开发还有一定的距离。另外有一家公司是做游戏平台的,类似浩方平台那种,刚刚创办,上手应该很快的,现在犹豫不 ...… 查看全部问答∨ |
请问IFG1中的 OFIFG(晶体出错中断标志)可不可以软件清0??????? 请问IFG1中的 OFIFG(晶体出错中断标志)可不可以软件清0??????? do { IFG1 &= ~OFIFG; // 清除OSCFault标志 } while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1 //等待OSC ...… 查看全部问答∨ |
ucos-ii操作系统 nios中OSMutexCreate();优先级可以给0? OSMutexCreate(0,&err);好像有问题,给其他值没问题,优先级可以为0-63,不知道这里对不对… 查看全部问答∨ |