s7-200 大量数据的大小排序问题

在大约2秒的时间内,有大量的模拟量数据经模拟量输入口输入,已经转化为实际数值,每一个扫描周期来一个数,现在的问题是如何把其中最大的50个数据取出来并按由大到小的顺序依次放在相邻的存储单元里。

问题补充:
我用的循环比较,大于等于后一个数,小于等于前一个数时,把数写入这个位置,后面的依次移一位,可问题是最开始的五十个没法进来,我不知道怎么处理了 !

 

 
 针对我的思路,大家给点意见.

最佳答案

首先定义一张表,每次循环将数值存入表中,存满50次以后,根据下面的排序程序,进行排序
 将下一个循环进来的数据保存在另外一个区(如:vw200),然后通过FOR 循环,与每一个数进行比较,从大数开始比较,如果vw200与到第一个比vw200的数值,将后面的数据用BMB指令后移一位,将vw200数据保存在该位置
 以下数据处理上同

 你也可以不用排序,在进数据的时候,就采用上面的方法
 附:排序程序如下:

 排序程序注释:
          该程序主要是对字节、字、双字连续数据区进行排序,开始地址为vb0(可以修改),长度控制vw100,选择排序的字节、字、双字的长度,类型选择用 vw102区,分类如下
        vw102(值)                 字节                  字                          双字
           0                                     √
           1                                                             √
           2                                                                                              √
        程序默认长度是10,类型是字,升序(请在DB块中设定)

   主程序:
   LD     SM0.0
   CALL   circle:SBR0
   子程序:
   circle:SBR0
   TITLE=程序注释
   Network 1 
   LDW>   VW102, 2
   OW<    VW102, 0
   CRET
   Network 2 // 网络标题
   // 网络注释
   LD     SM0.0
   MOVD   &VB0, AC0
   MOVW   0, LW20

   Network 3 
   LD     SM0.0
   FOR    LW0, 1, VW100

   Network 4 
   LDW<>  LW0, LW20                   //次数保存                                   
   MOVD   AC0, AC1                    //首地址
   MOVW   LW0, LW20
   MOVD   AC1, AC2
   AENO
   LPS
   AW=    VW102, 1
   +D     2, AC2                      //次地址
   LRD
   AW=    VW102, 0
   INCD   AC2
   LPP
   AW=    VW102, 2
   +D     4, AC2

   Network 5 
   LD     SM0.0

   MOVW   LW0, LW4                    //循环次数减1
   INCW   LW4

   Network 6 
   LD     SM0.0
   FOR    LW2, LW4, VW100

   Network 7 
   LD     SM0.0
   LPS
   AW=    VW102, 1
   AW<=   *AC2, *AC1
   CALL   SBR1, *AC1, *AC2, *AC1, *AC2
   LRD
   AW=    VW102, 0
   AB<=   *AC2, *AC1
   CALL   SBR2, *AC1, *AC2, *AC1, *AC2
   LPP
   AW=    VW102, 2
   AD<=   *AC2, *AC1
   CALL   SBR3, *AC1, *AC2, *AC1, *AC2

   Network 8 
   LD     SM0.0
   LPS
   AW=    VW102, 1
   +D     2, AC2
   LRD
   AW=    VW102, 0
   INCD   AC2
   LPP
   AW=    VW102, 2
   +D     4, AC2

   
   Network 9 
   NEXT
   Network 10 
   LD     SM0.0
   LPS
   AW=    VW102, 1
   +D     2, AC0
   LRD
   AW=    VW102, 0
   INCD   AC0
   LPP
   AW=    VW102, 2
   +D     4, AC0

   Network 11 
   NEXT

   exchange_word:SBR1
   LD     SM0.0
   MOVW   LW0, LW6
   MOVW   LW2, LW4

   exchange_byte:SBR2
   LD     SM0.0
   MOVB   LB0, LB3
   MOVB   LB1, LB2

   exchange_dword:SBR3
   LD     SM0.0
   MOVD   LD0, LD12
   MOVD   LD4, LD8

提问者对于答案的评价:
谢谢 .

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午10:33
下一篇 2021年7月5日 上午10:34

相关推荐

  • 200一个串口上怎么同时连接触摸屏和上位机

    我用的是224xp,2个串口,串口0已经和传感器自由口通讯使用了。为控制成本,不想扩展串口模块。现在CPU剩1个port1口需要同时连接1台触摸屏(SMART1000IE)和1台上…

    SIMATIC S7-200 2017年11月25日
  • CPU226CN

    想问一下226cn cpu有报警诊断功能吗 类似于300的 最佳答案 有的,工具栏PLC-信息。http://www.ad.siemens.com.cn/pro…

    SIMATIC S7-200 2021年7月5日
  • CPU224加EM232模拟量输出控制电机同步

    现在有十只东方调速马达,支持外部电压调速(DC0–5V,1MA以上,输入阻抗15千欧),我想知道是否可以通过CPU224的EM232模块,模拟量输出0–5V控制这十只电机实时同…

    SIMATIC S7-200 2020年10月31日
  • 多西门子200PPI通讯

    我采用PPI通讯,只能连2个200的PLC,有哪位朋友能告诉我问题出在哪,我要实现3个以上的通讯 问题补充:对通讯线是否有要求呢?终端电阻用多大的为好,还有可否提供例程,谢谢 最佳…

    SIMATIC S7-200 2021年7月5日
  • S7-200之间和组态王的以太网通讯

    S7-200 226CPU两块,其中一块接CP243-1模块,两块CPU之间通过PPI电缆连接,请问这样可否实现组态王和两块CPU的通讯呢? 问题补充:可以再具体点吗?谢…

    SIMATIC S7-200 2020年10月31日
  • 200plc的uss-ctrl指令问题

    USS-CTRL指令里的速度给定和反馈是用全速的百分数表示的,我能否把这个数直接转换成电机的转速来显示?比如转换成0—1435R/MIN。谢谢指教 最佳答案 我能否把这个数直接…

    SIMATIC S7-200 2021年7月4日
  • 如何控制步进电机

    想利用224的Q0.1和Q0.1输出脉冲驱动控制器再控制步进电机运转,当I0.0触发时电机运转,I0.1触发时停止电机,停止电机的时间越短越好,看过手册上的说明,不是太懂,高分求哪…

    SIMATIC S7-200 2020年11月5日
  • et200sp CAD图集

    谁有ET200SP CAD 图集,找了很久找不到 最佳答案 ET200SP CAD 图集下载(输入型号ET200SP 下载相应的C…

    SIMATIC S7-200 2017年6月10日
  • 掉电保持状态器

    图一。为什么没有失电保持型状态器(S)。只有MB掉电记忆。那我顺控掉电要继续停电位置运行怎么办。那桌面实现状态掉电记忆,求解救方法。谢谢各位师傅 问题补充:ever你好,你看我的图…

    2017年11月12日
  • MP370与200PLC通讯?

    请问大虾们!MP370怎么与200PLC通讯?用什么电缆好呢?是什么协议? 问题补充:我怎么把组态下载到MP370,用什么电缆协议?PC上需要什么卡呢? 最佳答案 如果用MP370…

    SIMATIC S7-200 2021年7月5日

发表回复

登录后才能评论