一水池高1米,进水速率不固定,通过控制出水调节阀的开度保持液位在固定在0-1米内,控制方法:
1。多段控制: 液位在0—0.2米内,阀门开度取20%,液位0.2-0.4,阀门开度40%,液位0.4-0.6米,阀门开度取60%,液位0.6—0.8米 ,阀门开度取80%,液位0.8-1米,阀门开度取100%。 不足之处:对于某一个进水速率,阀门的开度取值可能很好,但 换一个进水速率,上述阀门开度的取值未必合适!
2。PID控制 :在OB35里调用FB41,填好各个参数,尤其设置好死区范围,将PID的输出送给阀门开度设定值,使液位固定在0.5米左右。
不足之处:1)即使设置了死区,即使能使液位固定在0.5米附近,但液位一旦偏离了死区,出水调节阀就会动作,而且还比较频繁,不能同时很好地解决液位固定与出水调节阀不频繁动作的问题!
2) 用PID控制吧正常情况下液面能控制住,但我的水池液位美隔几小时 就要清空一次,每次清空后打开进水阀重新进水,PID都要寻找最佳阀门开度保持液位。但有时候PID寻找阀门开度就失效,液位始终是0,PID的输出却不减少,造成液位上不来,不理解为什么PID会失效??
3)FB41内嵌的算法是位置式PID算法,而非增量式PID算法,这种算法的不足之处是一开始累计反馈差,下一时刻的输出和以前所有时刻的误差都有关系,这是它的弊端!
请教大侠们:有什么好的办法控制住水池的液位又不让出水调节阀频繁动作!大家怎么处理这种控制模拟量的问题?单纯的调用FB41设置死区可以控制住但效果不佳!