您现在所在的是:

欧姆龙OMRON

回帖:4个,阅读:949 [上一页] [1] [下一页]
1004
初心zYabnJic
文章数:137
年度积分:50
历史总积分:1004
注册时间:2017/4/15
发站内信
发表于:2017/12/19 14:37:20
#0楼
需要比较30个数据,D100-D130,我想要给这30个数据排名,找出前3名,我用FOR循环和地址偏移倒是可以找出最大的数据,但是第二和第三不知道如何编写,不知道哪位大侠能帮下忙?
工控路上不孤单
37234
cvlsam 版主
文章数:12401
年度积分:1586
历史总积分:37234
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2017/12/19 14:46:53
#1楼
以下是引用初心zYabnJic2017/12/19 14:37:20的发言:
需要比较30个数据,D100-D130,我想要给这30个数据排名,找出前3名,我用FOR循环和地址偏移倒是可以找出最大的数据,但是第二和第三不知道如何编写,不知道哪位大侠能帮下忙?

使用MAX指令得到一个数据列的最大值,MAX指令会返回这个最大值的数值以及其在内存中的地址。

通过地址可以将这个最大值保存下来,同时将数据列中这个寄存器清零,此时你只有30个数据了,因为最大值已经被取出了。

接下来继续执行MAX指令,你得到的数据就是数据队列中第二大的了,接着继续执行MAX,你可以获得第三大,第四大。

Good Luck~
1004
初心zYabnJic
文章数:137
年度积分:50
历史总积分:1004
注册时间:2017/4/15
发站内信
发表于:2017/12/19 15:00:19
#2楼
回复 #1楼 cvlsam
谢谢,但是现在这30个数据是会变化的,不过变化不是特别快,而且数据是不能清零,请问大大有没有办法能实现排序啊
37234
cvlsam 版主
文章数:12401
年度积分:1586
历史总积分:37234
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2017/12/19 15:31:28
#3楼
以下是引用初心zYabnJic2017/12/19 15:00:19的发言:
谢谢,但是现在这30个数据是会变化的,不过变化不是特别快,而且数据是不能清零,请问大大有没有办法能实现排序啊

你难道已经将PLC中的数据寄存器的全部用完了么?排序的效率会更低……为什么呢,因为数据是变化的,比较走一个循环,排序至少要走队列数的一半数据循环。

如果你看不懂上面的回帖,我通俗的讲,你不能得到一个数据列的副本,用副本进行操作?

Good Luck~
1004
初心zYabnJic
文章数:137
年度积分:50
历史总积分:1004
注册时间:2017/4/15
发站内信
发表于:2017/12/19 15:38:35
#4楼
回复 #3楼 cvlsam
明白了,一下没转过弯陷入误区了,谢谢

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003