求助:移位的用法(如何给位赋值及读取位的值) 点击:1250 | 回复:5



handapipi

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:145帖 | 743回
  • 年度积分:0
  • 历史总积分:4529
  • 注册:2007年12月05日
发表于:2008-09-20 15:48:08
楼主

我的设备主轴上有一个凸轮,凸面240度,靠接近开关感应给PLC提供信号,我在信号的下降沿检测有没有光电信号,如果有,给一个2进制数的第7位赋值1,凸轮信号的上升沿触发右移位,然后检测这个2进制数的第2位,如果是0不输出,如果是1就输出,我用和利时PLC就是这么编的。和利时的软件里有位赋值指令、移位指令和位提取指令,很方便的就编出来了,研究了半天西门子S7-200的指令,只找到了移位,位赋值和位提取都没有,不知道该怎么办了,请哪位大侠行行好,写个程序让我参考一下,谢谢!




神仰慕的孩子

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 18回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2006年1月19日
发表于:2008-09-20 17:04:43
1楼

看了半天条件.我只想说下我个人的一点小想法.抛砖引玉.

你说的位赋值和位提取,可以通过与逻辑运算和或逻辑运算做到.

比如给二进制的第七位赋值为1,可以通过或逻辑.给原二进制数或上十进制数64,来实现.

比如检测二进制数的第二位,可以通过与逻辑,与上一个十进制数2,然后再通过比较指令,看结果数是不是大于0来判断.

以上~~~~~~

handapipi

  • 精华:0帖
  • 求助:2帖
  • 帖子:145帖 | 743回
  • 年度积分:0
  • 历史总积分:4529
  • 注册:2007年12月05日
发表于:2008-09-21 12:34:18
2楼
不太明白你说的比较怎么比,赋值按你说的应该可以做到,就是加上128,二进制就是10000000(二进制数里面最后的是第0位),我检测第二位,也就是只要第二位是1就输出,可以是00000100、00100100、01010111、11001100等等,请问怎么比较?

神仰慕的孩子

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 18回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2006年1月19日
发表于:2008-09-21 23:48:43
3楼

我说的检测第二位是这样做的.按你举的例子.

00000100和00000100采用逻辑/结果是00000100,也就是这个数的实际值是大于0的.结果就输出

如果是00010010和00000100采用逻辑的话.结果是00000000.也就是说这个数的实际值是等于0的.结果是不输出的.

以上~~~~~

handapipi

  • 精华:0帖
  • 求助:2帖
  • 帖子:145帖 | 743回
  • 年度积分:0
  • 历史总积分:4529
  • 注册:2007年12月05日
发表于:2008-09-22 06:53:46
4楼
哦,明白了,那么赋值的话来个逻辑或就行了,谢谢啊!

神仰慕的孩子

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 18回
  • 年度积分:0
  • 历史总积分:34
  • 注册:2006年1月19日
发表于:2008-09-22 08:01:19
5楼

晕,后来我合计了一下,检测第二位时,不用这么做也行.

如果这个二进制数存到MW100中,直接

A        m101.2

Q 0.0

 

 


热门招聘
相关主题

官方公众号

智造工程师