前段时间做了一个红外测温的小程序,是测炙热的钢板温度。我的实现方法是读过数据来之后进行排序,用循环指令,来比较各个温度值,只保留50个最高温度的数值,然后对这50个值求平均。可发现这样做的后果是200的执行周期会很长,大约要30——50MS,这样取的数据就很有限了,因为钢板是移动的,探头是固定的。
还有一个问题是怎么做能在最大程度上消除测量的误差,大家给点建议,谢谢!
问题补充:
但是满了以后首先要进行比较,可能会最多比较50个数(当然这不是最优的算法),这个占了不少运算量,来确定新来的插入哪个位置,找到后还要把后面的数依次后推,又占了不少的运算量。这个都是循环实现的。感觉就是这个地方的问题。
可是我又想不出更好的办法啊!
先采集保存数据再处理也是个办法,可是在保存的这段时间内没有数据显示 啊!
最佳答案
不会吧?从你的叙述来看只有一个探头持续不断的进行检测输入数据,那么虽说50个数据比较,但循环还是一个一个的进行的,前50个满后,第51个开始进行与最低温度值的那个数据进行比较,高于就留下低于就推出,依次进行呀,不会慢到30-50ms吧。
另测量误差的消除有很多种:1.检测头保证精度;2.采样周期的选择适当;3.计算公式的使用。。。等等
提问者对于答案的评价:
谢谢了,我试试
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc355942.html