发布于 2011-03-16 12:42:01
28楼
目前的情况是:调节阀从0%---100%,需要10秒。
我的思路:PLC接受温度变送器的输出信号(0-10V)后,首先进行线性变换,确保内部所得到的温度与温度变送器同步;PID对设定温度值与实际值进行偏差调节,将有输出。随着温度的逐步提高(接近设定温度值),PID的输出是先大后小,假设从0-200-1000(定义PID的最大输出为1000,对应10秒),接着又是1000-200-0,这样一个大致的变化,每一次最新的输出值减去前一次的输出值就是实际的开关阀信号及开度量,假设差值为正,就是连续打开;假设差值为负,就是转为关阀信号。
差值信号判断正负后,分别赋值于两个PWM模块,正值给1号PWM,负值经过正值转换后赋值于2号PWM,由两个PWM输出接电动阀的正反转线圈,实现电动阀的开关调节。但是这里面有一个问题:PWM的周期设定为多少呢?根据编程的思路,PID第二次输出减去第一次输出,我们定义的是实际的开度变化,那么PWM的周期应该设定为10秒,这样才符合思路,但是PID的扫描周期假设设定为1秒的话,那么每秒后的输出差值将和PWM之间存在一个时间差9秒,也就是pwm的变化跟不上PID的输出差值变化;如果将PID的扫描周期和PWM的周期设定为一致,PID的反应又很慢,跟不上温度的变化,这就是一个矛盾,怎么解决这个矛盾?希望各位大侠给出一个见解。我也在想,是不是我的思路本身就有缺陷,呵呵,学习也许就是这样!
“不管怎么想,延迟问题是无法回避的!也就是说,只能使得PID与PWM的周期尽量选一个合适的时间,比如3秒一次计算并一次输出,既能保证PID的采样足够快,也要保证开关阀动作的实时一致。还有一个缺憾就是:电动调节阀的开度显示算法无法跟踪,只能在调节阀上加滑动电位器了。”