叶强PLC之PID加热实验工艺:
用变频器带风机往设备里吹热风,离目标温度越近,频率越低;距离目标温度差值越大,频率上升的速度越快(由P值决定),温度的精度由受I值影响(I值也就是积分值可以消除稳态误差,从而让你精确达到想要的温度)
加热的功率与 (目标温度-当前温度)*P(比例值) 成正比。例如:目标温度70℃,当前温度10℃, P值为0.5 ,那此时的加热功率为(70-10)x0.5=30;当当前温度加热到50℃的时候,此时加热功率为10;当当前温度加热到70℃的时候,此时加热功率为0,不加热。 当加热到68摄氏度的时候,此时加热功率为1,假如冬天周围环境很冷,有一个逆向的降温功率为1,此时加热功率刚好等于环境冷却影响,导致永远都达不到70℃,此时需要引入I(积分)值,来消除稳态误差。
步骤:
1.先接线,接一个温度传感器与变频器模拟量
2.建立一个循环中断OB,调用PID_Compact指令,组态并填写参数
Setpoint:目标温度
Input:当前温度
Output_PER: 变频器模拟量输出
开启面板预调节与精确调节
观察当前温度与频率的关系
调节、自整定P值与I值,要求的效果是,温差越大,频率越高
例如当前温度小于目标温度时,变频器不运行
调试面板可以监控和预调节
根据传感器量程填写范围
要学会按F1看帮助文档,选中要查看的指令用法按F1
PID基本公式如下:
1.比例常数P的作用
根据公式,Kp*e(k),当我们将Kp趋于无穷大的时候,就类似一个开关的作用,用灶做比喻,当目标值大于实际值的时候,开关打开,开始加热,当目标值小于实际值的时候,火力断开,让他降温。但我们实际控制的火力有大小的,那么我们可以这么理解:
当差距不大的时候,Kp*e(k)较小,那么需要输出的火力较小;
当差距较大,并且温度低于目标温度的时候,那么需要输出的火力就会比较大;
当差距较小,并且温度高于目标温度的时候,那么就让输出的火力为负值(假设可以降低温度),降低温度。
简而言之:P是为了建立目标值和当前值的一种线性关系,当你的P较大的时候,你会很快的到达目标值的附近,但是由于P过大,很容易就超过目标值,而超过目标值的时候,你的P很大,又会瞬间拉回来,但拉回来的程度会过大,也就会出现在目标值附近震荡,没办法收敛于目标值的情况。
2.微分常数D的作用
在说积分常数I之前,要先说一下微分常数D。
由上面的理论可以得到,在趋于目标值了之后,我们的P作用就不大了,并且越靠近目标值,P的作用越小,因为P太粗暴了,让整个系统都震荡了起来。
而D的作用,根据公式。Kd*[e(k) - e(k-1)],我们可以当从0→目标值的时候,e(k)是在不断减小的,此时e(k) - e(k-1)是一个负值,再*Kd,我们可以得到,D的作用是为了给系统一个阻尼,并且系统变化的越快,这个阻尼也就越大,这就能抵消P那么粗暴的效果,让P温柔一点,在变化小的时候,D给小阻尼。在突然一个大变化的时候,阻尼就会很大, 这也就让系统不会变化过快,从而使得系统从震荡趋于稳定。
。
3.积分常数I的作用
当PD控制了之后,整个系统就已经可以趋于平衡了,但是如果是在有负载的情况下,尤其是电机要带动某个东西的情况下,很有可能会出现PID输出和消耗抵消了,从而使得系统没有办法达到目标值,例如你的温度已经到达95度,你想要去100度,但是散热的效果和你火力增加温度的效果抵消了,让你永远停在了95度,没有办法继续往上增加。
这时候就需要I的作用,根据公式Ki×Σe(k),正常情况下你的系统只会受到小的扰动,但是如果突然你的系统受到一个很大的变化,如果这时候还要积分,很有可能导致这个积出来的值对整个系统造成比较大的问题,甚至引起系统的崩溃。
这个公式里面,就是把你之前所有的偏差进行累加,并把这个累加的值体现在输出上,这样,如果你的温度停在了95度,那么你的累加值也就会越来越大,最终你的火力也会往上走,实现温度的提升。
I其实是对P的一个补充作用,但我们不能让I不断的累加,必须有一个累加的最大值,因为累加过大,会让积分量太大,有可能出现一个跳变,难以控制。
在实际的控制中,I参数其实是有一个让系统超前的作用,而超前的作用就是与D相反,D的增益起到了一个阻尼的作用,减慢你的变换,而I的增益起到了一个补助加火的作用,加速了你的变换。
————————————————
目的是整定出合适的P值跟I值