力天
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看力天的 主题 / 回贴
楼主  发表于: 2011-05-23 18:05
现在有18个数据,请教高手怎么用S7-200来从小到大排序,排怕羞完成后去掉最小值和最大值,求剩下16个数字的平均值?
力天
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看力天的 主题 / 回贴
1楼  发表于: 2011-05-23 18:12
现在有18个数据,请教高手怎么用S7-200来从小到大排序,排序完成后去掉最小值和最大值,求剩下16个数字的平均值?
zwqbingzhu
佛曰:不可说,不可说
级别: VIP会员

精华主题: 0
发帖数量: 103 个
工控威望: 351 点
下载积分: 824 分
在线时间: 99(小时)
注册时间: 2007-09-15
最后登录: 2014-07-16
查看zwqbingzhu的 主题 / 回贴
2楼  发表于: 2011-09-05 17:28
这个程序一般用于模拟量的滤波,三菱的话直接有这个排序指令
封锁一生
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看封锁一生的 主题 / 回贴
3楼  发表于: 2011-09-05 23:31
做个比较,再来两个循环应该可以,我现在也在做个程序也是条件比较多,快蒙了www.hncgq.com
jzr1976
级别: 探索解密
精华主题: 0
发帖数量: 101 个
工控威望: 195 点
下载积分: 751 分
在线时间: 49(小时)
注册时间: 2009-12-13
最后登录: 2013-10-24
查看jzr1976的 主题 / 回贴
4楼  发表于: 2011-09-05 23:54
顶下先
wsir123
日子在忙碌中才会显得充实,我喜欢这样的生活。
级别: 论坛版主

精华主题: 4 篇
发帖数量: 1504 个
工控威望: 5491 点
下载积分: 24426 分
在线时间: 818(小时)
注册时间: 2007-01-22
最后登录: 2024-06-09
查看wsir123的 主题 / 回贴
5楼  发表于: 2011-09-06 08:57
摘自网络,具体去处不详,仅供参考。

用冒泡排序实现假定十个数据,放在DB1中,安放顺序如下:

DBD0

DBD4



DBD36

下面是西门子的程序

OPN   DB    1                 /////打开DB1这个数据块

      L     10           ////装载10到MB0中,因为有十个数据,要进行十次排序,9次也可以的

LL0:  T     MB    0

      L     P#0.0   ////装载地址指针,这是关键,不要搞错了

      LAR1  

      L     9

LL1:  T     MB    2   ////内部循环,进行9次,直到把最大值排到最后

      L     DBD [AR1,P#0.0]

      L     DBD [AR1,P#4.0]

      <R    

      JC    LL2          ////比较前后两个值,如果前面大于后面的,则前后数据交换

      L     DBD [AR1,P#0.0]

      T     #m_temp

      L     DBD [AR1,P#4.0]

      T     DBD [AR1,P#0.0]

      L     #m_temp

      T     DBD [AR1,P#4.0]

LL2:  +AR1  P#4.0     ////指针自动进行加4,因为是浮点数,所以要跳过4个字节

      L     MB    2

      LOOP  LL1       ///这个指令自动的将A寄存器里的值减1

      L     MB    0

LOOP  LL0
保持每天一点小进步足矣。。。