step 7 求平均值

来源:百度知道 编辑:UC知道 时间:2024/05/19 11:41:20
采集一个温度值,实时计算当前时刻前5分钟的平均值,如果平均值大于某个设定值,去关一个阀门。要求用梯形图编程,请高手指点,请详细点。

建议将无效数值去除掉,譬如瞬间的最大值或极小值!!
为何要求平均值呢直接比较5分钟的总合不就简单很多吗?

简单方法:确定你所要的精度,决定总共需要采样多少个点,比如N,公式是现在的平均值=(平均上计算的平均值*(N-1)+当前值)/n,实型数计算,具体,以1秒钟取样,取300点为例:使用DB块DB50,定时器T50,
第一部分在最终挂在OB1上的FC或FB中编程:
是:网络1,闭点DB50.DBX0.0,TON,定时时间1秒,DB50.DBX0.0线圈,并联在那个线圈下面,DB50.DBD2=(DB50.DBD2*299+读到的温度实型数)*300

第二部分是挂在OB100中将DB50.DBD2赋值为0,或者合理的数,防止刚上电时误动作,也可以自己去手动复位DB50.DBD2

DB50.DBD2就是5分钟平均值了,计算越频繁,平均值越准确,但一般1秒就不算慢了

整一个fifo,最好是大于14B的
负责采样的ad芯片(16bit),就往不停地往fifo里面写数据
单片机每次读取fifo的前14B的数据求平均