一通道输入多个数据的处理

各高手,现有这样一问题:一个通道采集N次数据,每次数据存入不同寄存器地址,并且,在采集数据同时,在上位机实时显示最大两个数据。
望各位高手提供思路。

问题补充:
客户要求是这样:
假若采集5次数据:第一次数据为4,存入VW0
                 上位机显示:最大值:4,第二大值0
                 第二次数据为3,存入VW2
                 上位机显示:最大值:4,第二大值3
                 第三次数据为8,存入VW4
                 上位机显示:最大值:8,第二大值4
                 第四次数据为8,存入VW6
                 上位机显示:最大值:8,第二大值4
                 第五次数据为9,存入VW8
                 上位机显示:最大值:9,第二大值8
恳请大家支招。

最佳答案

学习之中1先生:按您“一个通道采集N次数据,每次数据存入不同寄存器地址,并且,在采集数据同时,在上位机实时显示最大两个数据”的要求,编制如下程序。输入通道为AIW2(您可按自己意愿设定),采样周期500ms,采样大值分别存入VW100、VW104,采样较小值分别存入VW102、VW106。比较两大值,把最大值存入VW108,次大值存入VW110。当两大值相等时,把其中之一存入VW108作为最大值;再比较两较小值,把其中大的存入VW110作为次大值;若两较小值
相等时,把其中之一存入VW110作为次大值。这样,所有采样的最大、次大值一直都存在VW108、VW110存储器中,您可以随时调用。程序有注释便于您理解,程序如下:
换一种方式
LD     SM0.0
LPS
AN     M10.0
TON    T32, 500           //1ms定时器,设置500ms
LRD
A      T32
=      M10.0              //M10.0与T32组成500ms脉冲开关
LRD
A      M10.0
INCB   VB10               //T32导通VB10加1
LRD
AB>=   VB10, 1
MOVB   0, VB10            //VB=1时VB复位
INCB   VB10
LRD
AB=    VB10, 0            //vb=0导通
LPS
AW>=   AIW2, VW100        //采集信号与大值比较
MOVW   AIW2, VW100        //采集信号大值存VW100
LPP
AW<    AIW2, VW100        //采集信号与大值比较
MOVW   AIW2, VW102        //采集信号小值存VW102             
LRD
AB=    VB10, 1            //vb=1导通
LPS
AW>=   AIW2, VW104        //采集信号与大值比较
MOVW   AIW2, VW104        //采集信号大值存VW104
LPP
AW<    AIW2, VW104        //采集信号与大值比较
MOVW   AIW2, VW106        //采集信号小值存VW106
LRD
AW>    VW100, VW104       //采集大值比较
MOVW   VW100, VW108       //最大值存VW108
MOVW   VW104, VW110       //次大值存VW110
LRD
AW>    VW104, VW100       //采集大值比较
MOVW   VW104, VW108       //最大值存VW108
MOVW   VW100, VW110       //次大值存VW110
LPP
AW=    VW100, VW104       //采集大值相等时
LPS
MOVW   VW100, VW108       //最大值存VW108
AW>    VW102, VW106       //采集较小值比较
MOVW   VW102, VW110       //校大值存即次大值存VW110
LRD
AW>    VW106, VW102       //采集较小值比较
MOVW   VW106, VW110       //校大值存即次大值存VW110
LPP

AW=    VW102, VW106       //采集较小值相等时
MOVW   VW102, VW110       //次大值存VW110

东方探索

提问者对于答案的评价:
非常感谢“东方探索”,您的程序给我提供了很好的思路,谢谢您的辛苦。我模拟了您编写的程序,结果如下:最大值能实时正确的显示,次最大值不是真正意义上的次最大值,是一个比最大值小的实时值(我是在改动VB10复位语句位置的结果,我把VB10复位语句放在程序的结尾),因时间较紧,我模拟很可能出现偏差,望见谅!
现在我的问题已经解决,因为客户对工件需要连续采集多次数据,除开最大值和次最大值,其它数据还需要作另外运算,所以我编写程序思路如下:把实时数据分别存入连续地址的寄存器,采用间接寻址和循环比较找出最大值和次最大值,经过几次模拟,最大值和次最大值能够实时准确的显示。
感谢“0不是1”,看了您的“中值循环滤波”,获益匪浅。也谢谢其他热情回答者。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午3:34
下一篇 2020年11月1日 下午3:35

相关推荐

  • 从此下的4.0-SP6

    从此下的4.0-SP6有些不正常例如指令向导     请问为什么 最佳答案 在“PLC”菜单中–类型,更改为你需要的类型。一般2…

    SIMATIC S7-200 2021年7月5日
  • S7-200 Modbus主站

    S7-200中modbus主站指令MBUS_MSG,当出现通讯故障后,它的参数Error不等于0,那么何时Error清零? 最佳答案 只有当MBUS_MSG的EN再次使能时,如果通…

    SIMATIC S7-200 2021年7月5日
  • 模拟电位器

    CPU224上的模拟电位器是做什么用的? 问题补充:SMB28和SMB29是要写入程序的吗 最佳答案 S7–200提供模拟电位计: 模拟电位计位于模块前盖下面。您可以调…

    SIMATIC S7-200 2021年7月5日
  • S7-200的OPC通信

    各位大佬,s7-200的OPC通信视频教程哪里有呀?都需要什么软件 最佳答案 SIMATIC WinCC与S7-200 OPC通信(以 CP&nbsp…

    SIMATIC S7-200 2021年7月5日
  • s7-200用编码器如何用定时中断编程频率

    编码器ABZ相,每转一周Z相复位 ,选 用HSC4,模式10,用频率库在Z相复时频率值负数或瞬间变化很大,如何用定时中断或其他思路解决? 最佳答案 你的意思是否…

    SIMATIC S7-200 2017年6月7日
  • S7-200与台达变频器通讯配置

    要求34台,台达变频器与S7-200的PLC通讯,通过西门子触摸屏来设定变频器频率,显示当前频率,并显示变频器故障;输入点要180点,输出点80点左右,请问怎么配置,及相关的案例&…

    SIMATIC S7-200 2018年3月6日
  • EM277 GSD 文件 订货号277-0AA22-0XA0

    EM277   GSD 文件  订货号277-0AA22-0XA0 最佳答案 https://support.indus…

    2021年7月5日
  • 西门子PLC配置:需要4到5路的高速脉冲输出,是否只能选EM253

    准备选用西门子S7-200系列的PLC,因为有一共5个步进电机,2个直流电机,一共需要7路高速脉冲输出。 而CPU226只有2路,所以要配置扩展模块,但EM253太贵了。…

    SIMATIC S7-200 2021年7月4日
  • 西门子200时间锁的问题请教大家。

    西门子PLC内置时钟,断电可以保持多长时间?想写个时间锁程序,是这样写的,时间定在11年12月2日自动停机,但是客户如果设备临时不用,PLC断电一周左右是不是这个内部时钟就不好使了…

    SIMATIC S7-200 2020年10月31日
  • s7-200 CPU224 REL 01.21

    这个型号的PLC为什么多段管线脉冲刚下载进去的的程序能正常发脉冲控制电机,但是断电后在启动就不发脉冲了是怎么回事? 最佳答案 可参考:《PLC脉冲》中多段管线脉冲的讲解http:/…

    SIMATIC S7-200 2019年6月10日