在上一篇的速度PID控制的文章中,我们已经介绍了关于PID指令以及相关参数的具体应用。所以本篇文章,主要是给出程序部分。 首先在给出程序之前,我们先了解一下以下几个概念: 1.市电电压的过零性:我们平常在用的市电电压为交流220V,它的频率是50HZ,因此1秒种内,它会出现50个正弦波形,得出每个波形的周期是20ms,而过零性的现象就是:当在每个上半波形或者下半波形内,如果此时固态继电器需要关断或者导通,那么是不能马上关断或者导通的,必须等到过了下一个零点后,才能关断或者导通。因此,我们当我们用固态继电器控制市电时,必须考虑将导通时间大于10ms。 2.PWM指令:PWM S1 S2 D,其中S1是脉宽,S2是周期,它们的单位都是ms。所以根据上面说的过零性,S1的值必须大于10才行。S1➗S2✖️额定功率实时输出功率,当S1S2时,就是全功率运行。另外,S2不能过长,因为它是以ms为单位,比如,将S1设置为1000,S2设置为10000,看似很合理,输出功率10%,感觉能把水加热,但是实际情况是,1秒加热,99秒不加热,那你说,这能加热到目标温度吗?显然不行。所以,一般我们将S2设置成1000。 好了,我们言归正传,下面是FX3U-4AD模块参数设置: #0:由于我的温度变送器是4-20ma的量程,因此我们将4号通道设置成3。 #5:我们选择平均次数,平均次数根据需求来,可以设的大点,这样温度变化就能稳定一些。 #13:通道4的实时温度数据。 硬件接线:主要是4AD和温度变送器的接线。固态继电器的太简单,就不画出来了。 模拟量算法: 4AD输入的是4ma-20ma,对应量程是0-16000。 温度变送器也是4ma-20ma,对应量程是-50°到400°。 因此我们直接略过4ma-20ma这组数据,直接让0-16000和-50°-400°进行耦合。 根据斜率方程式y=kx+b,然后得到两组列算式: -50=0*k+b 400=16000*k+b 最后得出温度的计算公式:当前温度=(#13号数据*9)/320-50 有了上面的公式,我们就可以进行编程了,下面会贴出2种自整定的方法: 对了,提一句:加热是逆动作,制冷是正动作! 首先是极限循环法: 最后是阶跃响应法: 最后,这只是一个温控PID的框架,具体PID参数的设置,还是得依靠自己的经验,再结合自整定参数,根据现场情况进行修改。 附PID参数调整口诀: 参数整定找最佳,从小到大顺序查; 若要反应增快,增大P减小I; 若要反应减慢,减小P增大I; 如果比例太大,会引起系统震荡; 如果积分太大,会引起系统迟钝。 |
|