我打算放弃一些精度,用比较简单的算法来做。不知道行得通不?
1.把阀门开度和流量简化为线性关系,根据罐内重量压力变化,分阶段线性化处理。得到几个K值;
2. 根据设定重量和设定时间得到需要的流量FL值;
3.启动放料后,捕捉第一次重量变化值,和时间点T1;
4.然后捕捉第二次重量变化值W1,和时间点T2, 同时计算流量FL1刷新上位机数据;
5.第三次重量变化值W2,和时间点T3, 同时计算流量FL2刷新上位机数据;
6.第四次重量变化值W3,和时间点T4, 同时计算流量FL3刷新上位机数据;
7.如果FL1=FL2=FL3=FL+/-5%,则继续;计算FL时候要做些数据处理,不然“FL1=FL2=FL3=FL+/- 5%”很难成立;
8.如果条件不满足,计算新的FL,根据K值,调节阀门开度,重复第二步到第七步。
9.加料完成后看看精度,最后通过提前量或阀门延时关闭来弥补精度误差。不用PID算法了。
说明:这样三次采集数据后调整可以弥补抖动。流量慢的时候数据刷新慢,慢点调整,精度影响小。流量大的时候数据刷新快,快点调整,保证精度。 流量值刷新也快了,以前是一分钟刷新一次,太慢了。新增流量慢的时候基本20秒刷新一次,流量快的时候5秒刷新一次。