西门子经典问题求解 点击:337 | 回复:13



jhm1129

    
发表于:2012-02-17 22:40:33
楼主
求助帖10分-已结帖
西门子的plc最大存储单位是一个双字  即32位    移位指令可以对这32个位进行左移右移或者循环移位   但是现在我想对89个位进行操作  就是我想对89个位进行左移右移或者循环移位   苦思冥想  竟是没想出来什么方法   所以请教一下高人指点  这个能不能实现  要怎么实现  


楼主最近还看过



zhaiyaolily

  • 精华:4帖
  • 求助:9帖
  • 帖子:60帖 | 4250回
  • 年度积分:0
  • 历史总积分:2553
  • 注册:2011年10月11日
发表于:2012-02-17 22:43:12
1楼
当然喽,不够的补充点零,以三十二为一个单位

jhm1129

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2012年1月16日
发表于:2012-02-17 22:46:04
2楼
回复内容:
对:zhaiyaolily关于当然喽,不够的补充点零,以三十二为一个单位 内容的回复:

没太明白  能不能详细一点点

welfare87

  • 精华:1帖
  • 求助:4帖
  • 帖子:53帖 | 2827回
  • 年度积分:0
  • 历史总积分:25853
  • 注册:2009年2月20日
发表于:2012-02-18 00:07:34
3楼

这要加点逻辑控制了,89位用三个双字,移位时根据前后双字首末位的状态,填“1”或“0”

茗风

  • 精华:4帖
  • 求助:1帖
  • 帖子:83帖 | 1272回
  • 年度积分:0
  • 历史总积分:5069
  • 注册:2006年11月16日
发表于:2012-02-18 09:29:45
4楼
引用 welfare87 的回复内容:这要加点逻辑控制了,89位用三个双字,移位时根据前后双字首末位的状态,填“1”或“0”


就是这样

青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:24301
  • 注册:2007年4月02日
发表于:2012-02-18 09:34:58
5楼
引用 welfare87 的回复内容:这要加点逻辑控制了,89位用三个双字,移位时根据前后双字首末位的状态,填“1”或“0”

应该如此,用第二个字的最高位触发一个状态,转移到第三个字中继续移动,形成循环.

zhxl198808

  • 精华:7帖
  • 求助:14帖
  • 帖子:79帖 | 3915回
  • 年度积分:0
  • 历史总积分:22219
  • 注册:2008年9月06日
发表于:2012-02-18 12:55:26
6楼
引用 welfare87 的回复内容:这要加点逻辑控制了,89位用三个双字,移位时根据前后双字首末位的状态,填“1”或“0”



说的有道理!

彩云之滇东北

  • 精华:37帖
  • 求助:5帖
  • 帖子:148帖 | 2725回
  • 年度积分:0
  • 历史总积分:21121
  • 注册:2005年6月14日
发表于:2012-02-18 14:49:56
7楼

89个位可用32位连续移位,移出的进入下一个32位     

竹子

  • 精华:0帖
  • 求助:14帖
  • 帖子:25帖 | 606回
  • 年度积分:0
  • 历史总积分:2157
  • 注册:2009年11月26日
发表于:2012-02-18 15:32:05
8楼
说的有道理!说的有道理!

梦飞

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 404回
  • 年度积分:0
  • 历史总积分:4180
  • 注册:2007年6月19日
发表于:2012-02-18 15:54:44
9楼
多个位移单元和位移指令混用。用一个子程序实现。

wyb2866255

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

    下面是用S7-200编写的一次循环一位的3个双字(96位)循环左移程序,供大家参考。只要理解多双字移位编程的构思,对89位及 左右移位的编程都可以实现。

 

 

 

wyb2866255

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-02-18 17:46:57
11楼
     补充说明:上面编程是对VD0~VD8三个双字的循环左移,即每按一下按钮(I0.0),VD0~VD8三个双字的内容将循环左移一位。

wyb2866255

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-02-19 17:55:59
12楼

       再编写一个81位自身循环左移一位,且要求含有循环位的字节中不进行循环的其它位保持原值不变的编程程序:

     循环的81位地址为:最高位V0.0(即VB0的最低位),VD1、VD5二个双字(64位),VW9一个字(16位),共81位,要求VB0的V0.1~V0.7的7位的内容,编好的程序如下:

weifukang688

  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 61回
  • 年度积分:0
  • 历史总积分:1048
  • 注册:2011年9月16日
发表于:2012-02-20 12:54:24
13楼
我也不太明白,请详细介绍。谢谢
SSI ļʱ