登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:五个或者十二个连续位移位循环,中途可以加入数值

点击:1014 回复:11

 各位晚上好,
 小弟在使用S7200 出现个问题
问题1  需要在几个连续位里面移位循环, 但是循环质量ROL 和ROR都不能够满足,
      因为程序自带的移位循环只能够移一个字节或者一个字或者一个双字
      但是我现在需要的是 五个位和十二个位连循环
问题2  我在移位的时候  可以让第一个位接通或者断开 ,然后移位到下一个位去
问题3   移位的时候断电后要保持各个位的状态
 实在是想不出来  有什么好的办法没有
16-10-20 22:07
比如左移    第一次是0000 0001
                第二次是0000 0010
                第五次是0001 0000
正常情况下第6次是 0010 0000
目的是第6次变0000 0001
16-10-20 22:47
我也是初学者,移位操作在C语言里面基本上都是一个单位,按你所说,我的建议是你可以试试编码译码,也在200系列里面。这只是我的建议,请各位大神吐槽!谢谢!小弟只是看到问题,有自己的想法,分享一下而已…咻
16-10-21 02:29
西没有移位指令?
16-10-21 06:53

引用 小明真聪明 在 2016/10/20 22:47:59 发言【内容省略】

那不是很简单的,比较一下大于32,那么就送1进寄存器。
16-10-21 08:34
这个不是太简单了。字节低五位循环移位来举例。用这个思路自己写一个子程序,使用时只有调用子程序就行。
高三位那就都是0了
1,先执行循环左移移位  RRB VB300,1
2,执行判断   if(VB300 && 0x20),西门子指令应该是 ANDB 判断结果是否为1
3,结果0,继续下一次移位。
4,结果1,说明移到VB300.5位的结果是1
5,执行一次异或运算,XORB 0x01,VB300  (VB300.0翻转变为1)
6,执行一次与运算,ANDB 0x20,VB300  (VB300.5写0)
16-10-21 09:12
西有没有位标志,用它将1送入这个数据区
西不熟悉
用omron的移位到第6次时,05位为1,使用
LD 000.05
MOV #1 000 注:000就是位移数据区
就可以了
西门子也应该有类似的指令
最后修改:2016/10/21 11:08:35
16-10-21 11:08
跟你说的很类似,参考一下
最后修改:2016/10/27 12:05:28
16-10-27 11:57
图片
16-10-27 11:59
结果呢?
16-11-05 15:19

上一页下一页

工控新闻

更多新闻资讯