被“用滥”的PID,你真的学废了吗?

前言
这是两年前写的文章,当时是在做热风烘箱项目,涉及到风温控制。开始采用的是普通的PID,效果总是不理想,震荡比较大。后来,从网络上了解到积分分离PID,通过编程调试,最终能达到想要的效果。
积分分离控制的基本思想
我们知道,在普通的PID控制中引入积分的目的,主要是为了消除静差,提高控制精度。但在过程启动或大幅度增减设定值时,短时间内系统输出有很大的偏差,会造成PID运算的积分积累,引起系统较大的超调,甚至会产生较大的震荡。
当被控量与设定值偏差较大时,取消积分作用;当被控量接近设定值时,引入积分控制,以便消除静差,提高控制精度。
具体实现步骤如下:

积分分离控制的算法实现
算法公式如下:

算法流程图如下:

积分分离控制的PLC编程
项目选用的是西门子SMART系列PLC,PID算法没有用自带的模块生成,而是自己编程。
主程序开100ms定时中断:

中断子程序:

温控子程序:

积分分离PID子程序:

写在最后
就本项目而言,风温需要多级控制,且风温设定值增幅较大,可以说积分分离式PID算法完美适配,最终达到的效果也是非常理想的。
其实,PID算法很简单,不管怎么变形,就那三个式子之和。但是,P、I、D三个参数的调试却不是那么容易。
我的理解是需要更多了解控制对象本身的物理特性和执行机构的精度,以及现场环境。
END