请教一下用什么指令可以解决我的这些问题! 点击:322 | 回复:7



XP Vista

    
发表于:2012-05-01 15:12:07
楼主

我用的是LS120系列PLC。

请教一:16位的数据寄存器内容如何进行高8位于低8位互换?

请教二:在总共20个(16位)数据寄存器中(D10至D30)如何找到其中8位数值与自己设置的数值相等的寄存器。也就是说我设置的数值是12,我需要在D10至D30中找出其中8位数值是12的就可以。



楼主最近还看过



青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:24301
  • 注册:2007年4月02日
发表于:2012-05-01 15:38:05
1楼
LS120不熟悉,看别的牌子的都有这些专用指令,看看帮助里面又没有指令帮助。。。。。。。

yjig

  • 精华:2帖
  • 求助:6帖
  • 帖子:110帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2012-05-01 15:40:26
2楼

1、假定需要进行高低交换的寄存器是D0000,交换后的地址为D0001:

SWAP  D0000  D0001

2、LS的指令不熟悉,是否也有类似FX-PLC的变址,如果有,则采用变址循环判断。

XP Vista

  • 精华:4帖
  • 求助:14帖
  • 帖子:320帖 | 1797回
  • 年度积分:0
  • 历史总积分:3209
  • 注册:2002年3月17日
发表于:2012-05-01 15:51:43
3楼
现在做通信用,发现LS120系列的指令确实太少了!!就连最简单的32位寄存器移位指令多没有,还得需要用其它指令来转换!!!

通讯网

  • 精华:11帖
  • 求助:2帖
  • 帖子:464帖 | 10265回
  • 年度积分:0
  • 历史总积分:24711
  • 注册:2004年7月09日
发表于:2012-05-01 16:29:24
4楼
不带符号左移或者右移,移动八次不就行了??活人还能让尿憋死??

XP Vista

  • 精华:4帖
  • 求助:14帖
  • 帖子:320帖 | 1797回
  • 年度积分:0
  • 历史总积分:3209
  • 注册:2002年3月17日
发表于:2012-05-01 16:57:42
5楼

引用 通讯网 的回复内容:不带符号左移或者右移,移动八次不就行了??活人还能让尿憋死??



用这方法不用老兄你说我自己知道!!我想知道的是有没有其他更好的方法!因为需要移动的不是一个数据或者是两个数据寄存器,我需要移动的是50个数据寄存器,

还有楼上的老兄还请你出出我这第二个问题的解决方法??

tianheyi

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 416回
  • 年度积分:0
  • 历史总积分:2244
  • 注册:2011年5月11日
发表于:2012-05-01 18:41:51
6楼

1、笨法是一个一个比较。

2、组成数组,按条件提取。

wyb2866255---王者之师

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-05-01 21:18:34
7楼

     1、第一问的解答:可采用指针指令与自循环左移(或右移)8位的指令就可实现:先取首址字存储器的内容送到一运算存储器,将运运算存储器自身循环左移8位,再送回首址存储器里,指针地址加2,再使字节存储器加1,判断字节存储器大不大于50 ,如小于或等于50 ,再重复以上操作,直到>50 结束 。

2、第二问的解答:也采用指针指令、自循环左移(或右移)8位的指令及运算存储器与设定值比较(如12)来完成:动作与1形式的就不讲,这里只讲判断相等的一个字存储器的编程:将指针地址的存储器的数据,传递给运算存储器,取其低字节(低8位数)与设定值比较,如不等,将运算存储器(字)循环左移一位,再与设定值比较,不等再左移一位。。连续循环左移16,都不能,此数不要,指针地址加2,再取下一个字存储器的数据送入运算存储器,进行上述操作。。如比较相等,将此数送到指定存数区即可。

SSI ļʱ