您现在所在的是:

欧姆龙OMRON

回帖:7个,阅读:3112 [上一页] [1] [下一页]
* 帖子主题:

数据比较指令求教

2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
注册时间:2008/12/28
发站内信
发表于:2014/8/7 11:10:02
#0楼
今天在编写一段程序的时候,需要用到数据检索。
比如用数据&0和DM90~DM120内的数据进行比较,比较后系统能输出一共有多少个为零的内存,第一个为零的内存区是哪一个。用TCMP只能比较16个内存区。
希望坛里的高手们能给支支招。
2284
东昌机电
文章数:643
年度积分:50
历史总积分:2284
注册时间:2013/9/13
发站内信
工控人谈电商
发表于:2014/8/7 11:56:19
#1楼
以下是引用刘国辉2014/8/7 11:10:02的发言:
今天在编写一段程序的时候,需要用到数据检索。
比如用数据&0和DM90~DM120内的数据进行比较,比较后系统能输出一共有多少个为零的内存,第一个为零的内存区是哪一个。用TCMP只能比较16个内存区。
希望坛里的高手们能给支支招。

你用2条TCMP指令不就可以了么。

Regards
SANKA电机
2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
注册时间:2008/12/28
发站内信
发表于:2014/8/7 12:57:25
#2楼
回复 #1楼 东昌机电
两个TCMP是可以解决比较的数量问题,但是如何找到第一个为零的内存区并告诉我,能否指点一二。
2284
东昌机电
文章数:643
年度积分:50
历史总积分:2284
注册时间:2013/9/13
发站内信
工控人谈电商
发表于:2014/8/7 14:01:54
#3楼
以下是引用刘国辉2014/8/7 12:57:25的发言:
两个TCMP是可以解决比较的数量问题,但是如何找到第一个为零的内存区并告诉我,能否指点一二。

第一步:使用TCMP指令进行比较,如果比较结果相符,则对应的位会被置为ON。

附件 snap1.jpg

第二步:使用编码器指令DMPX指令,将最先为ON的位的偏移量求出,我偷懒了,使用了2条DMPX指令去判断,当低位为0的时候,去判断高字的比较状态。



附件 snap2.jpg

最后,因为得到的结果是16进制的,所以需要转换并加上首地址90,最终得到的就是结果了。


附件 snap3.jpg

上述程序的机型为CP1H。

Regards
SANKA电机
2565
逆水行舟
文章数:405
年度积分:79
历史总积分:2565
注册时间:2005/10/27
发站内信
发表于:2014/8/7 17:09:57
#4楼
以下是引用东昌机电2014/8/7 14:01:54的发言:
以下是引用刘国辉2014/8/7 12:57:25的发言:
两个TCMP是可以解决比较的数量问题,但是如何找到第一个为零的内存区并告诉我,能否指点一二。

第一步:使用TCMP指令进行比较,如果比较结果相符,则对应的位会被置为ON。

附件 snap1.jpg

第二步:使用编码器指令DMPX指令,将最先为ON的位的偏移量求出,我偷懒了,使用了2条DMPX指令去判断,当低位为0的时候,去判断高字的比较状态。



附件 snap2.jpg

最后,因为得到的结果是16进制的,所以需要转换并加上首地址90,最终得到的就是结果了。


附件 snap3.jpg

上述程序的机型为CP1H。

Regards
学习了
2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
注册时间:2008/12/28
发站内信
发表于:2014/8/8 11:14:42
#5楼
回复 #3楼 东昌机电
太牛了!我就是在找这种效果的指令方式!膜拜膜拜!
2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
注册时间:2008/12/28
发站内信
发表于:2014/8/8 14:59:32
#6楼
回复 #3楼 东昌机电
东昌机电,我对DMPX仔细看了一下,程序内也做了实验,发现和说明书上的有出入,不知为何,以下为截图,请不吝赐教!
附件 QQ群.jpg
2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
注册时间:2008/12/28
发站内信
发表于:2014/8/8 15:02:53
#7楼
回复 #6楼 刘国辉
我认为D400内的数据是不对的

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

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

62.4004