请教一下最优的算法

前段时间做了一个红外测温的小程序,是测炙热的钢板温度。我的实现方法是读过数据来之后进行排序,用循环指令,来比较各个温度值,只保留50个最高温度的数值,然后对这50个值求平均。可发现这样做的后果是200的执行周期会很长,大约要30——50MS,这样取的数据就很有限了,因为钢板是移动的,探头是固定的。
 还有一个问题是怎么做能在最大程度上消除测量的误差,大家给点建议,谢谢!

问题补充:
但是满了以后首先要进行比较,可能会最多比较50个数(当然这不是最优的算法),这个占了不少运算量,来确定新来的插入哪个位置,找到后还要把后面的数依次后推,又占了不少的运算量。这个都是循环实现的。感觉就是这个地方的问题。
  可是我又想不出更好的办法啊!

 
 先采集保存数据再处理也是个办法,可是在保存的这段时间内没有数据显示 啊!

最佳答案

不会吧?从你的叙述来看只有一个探头持续不断的进行检测输入数据,那么虽说50个数据比较,但循环还是一个一个的进行的,前50个满后,第51个开始进行与最低温度值的那个数据进行比较,高于就留下低于就推出,依次进行呀,不会慢到30-50ms吧。
 另测量误差的消除有很多种:1.检测头保证精度;2.采样周期的选择适当;3.计算公式的使用。。。等等

提问者对于答案的评价:
谢谢了,我试试

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc355942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午2:41
下一篇 2021年7月5日 上午2:42

相关推荐

  • EM231 8通道模拟量输入

    我现在有一个正负9v的电压信号 怎么才能转换成正负5V的吗 最佳答案 因为该模拟量输入模块选择没有正负10v的电压信号(包含正负9v的电压信号),所以需要在外部先进行电压…

    2017年11月2日
  • s7 200数值

    s7 200中,VD12  是否可以用做实数的比较呢?请教高手 最佳答案 200中的VD可以是双整数,也可以是实数,看你在命令中怎么用的,你想用它做双…

    SIMATIC S7-200 2020年11月5日
  • CPU224和MP277不能用MPI通信

    microwin里面PG/PC设置MPI方式,波特率选的19.2,然后触摸屏MP277配置文也选MPI,运行的时候点击屏上的按钮,弹出信息说无法写入PLC。然后我PG/PC设置MP…

    SIMATIC S7-200 2020年10月31日
  • 关于PLC接地的问题

    各位朋友,请教一个关于PLC接地的问题。样本和手册上都指明PLC的接地端应该接地。有一变频器和PLC安装在同一电控柜的系统,进线只有一个接地排。变频器肯定是要接地的,如果PLC也接…

    SIMATIC S7-200 2017年12月7日
  • s7-200pwm控制与模拟量控制

    请问:1.现有一个224XP继电器输出的PLC,但需要控制五路PWM(2个可调速风机,3个开度可调翻板),本人知道可能必须要更换成晶体管输出的PLC,但查手册也只有Q0.0和Q0.…

    SIMATIC S7-200 2017年6月1日
  • 为什么我的电脑不能安装Step7-Micro/Win V4.0软件!

    我在下载中心下的Step7-Micro/Win V4.0软件包,我的电脑系统是XP的,但每次安装时都会在安装到90%时报警:ERROR NUMBER …

    SIMATIC S7-200 2020年11月1日
  • 如何在S7200的程序中加入限制运行的时间?

    如何在S7200的程序中加入限制运行的时间?就是说我想让此程序控制的设备运行6000小时(假设的时间)后停机。这个怎么做?会不会因为关机或断电造成计数失去而不能按规定时间停机呢? …

    SIMATIC S7-200 2021年7月5日
  • CPU226 I0.0指示灯不亮

    请问是不是输入点烧了了,怎么检查呢? 最佳答案 接到其它点上亮,接到I0.0不亮,不就证明点坏了 提问者对于答案的评价:3q 专家置评 已阅,最佳答案正确。

    SIMATIC S7-200 2018年12月6日
  • S7200数据排序

    程序中VD1000开始共240个浮点数的排序及位置。具体如下:VD1000为1号位置,VD1004为2号位置 以此类推一共240个数据,要求把这240个数据从大到小排序,…

    SIMATIC S7-200 2020年10月31日
  • 计数器的当前值怎么在触摸屏里显示呢?

    西门子PLC的计数器当前值怎么在触摸屏里显示呢?我用mov_w  C0 ,VW22指令将C0 move 到VW200,然后再触摸屏…

    2017年12月1日

发表回复

登录后才能评论