s7-200 字移动指令 问题 点击:601 | 回复:4



ysyin

    
  • 精华:0帖
  • 求助:9帖
  • 帖子:10帖 | 7回
  • 年度积分:0
  • 历史总积分:108
  • 注册:2008年11月24日
发表于:2013-03-14 11:55:02
楼主

以下程序不明白,为何说把输入信号转换成双字,又如何让VD10=模拟量输入值,请高手指导,

正在下载,请等待……
下载附件需0积分!




银光人生—华

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 13597回
  • 年度积分:0
  • 历史总积分:52877
  • 注册:2007年11月23日
发表于:2013-03-14 13:55:09
1楼

 

西门子地址是这样的:

VD10就是VW10  VW12  两个字组成的;

至于楼主你说为什么模拟量是VD10?就是因为双字包含2个字;

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2013-03-14 14:18:16
2楼

下载后的程序如下:

      这段子程序没有移位指令,其程序功能是:网络13是时时将模拟量转换为的数字量(AIW0)送入VW12。网络14进行VW12与0比较,如比值≥0,则将0—>VW10,否则将16#FFFF—>VW10。采用这种编程后,如VD10值≥0,说明VD10即为AIW0的单字数转换的双字数,如VD10值<0,说明此时的VD10是负数,不是AIW0转换的双字数。

 

Lgj3388

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 236回
  • 年度积分:0
  • 历史总积分:925
  • 注册:2003年8月13日
发表于:2013-03-14 15:44:57
3楼

回答这个问题要先搞清楚负数是如何用二进制表示的。

负数在寄存器中是以二进制补码的形式存在的。

补码=负数的绝对值取反+1

例:-1 的表示

-1 的绝对值在16位的二进制中(字)为0000000000000001

取反得1111111111111110

再+1变成1111111111111111这就是-1在16位寄存器中的真值(VW12)

转换成32位双字)11111111 11111111 11111111 11111111 (VD10)

VW12≥0,说明双字数VD10的低16位为正无须对高16位(VW10)取反。若VW12 <0,说明此时的VD10 的低16位是负数,要使转换后的双字的值也为负数就须对高16位(VW10)取反 。MOVW  16#FFFF,VW10的作用就是取反。

 


 

Lgj3388

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 236回
  • 年度积分:0
  • 历史总积分:925
  • 注册:2003年8月13日
发表于:2013-03-15 09:00:55
4楼
这下子楼猪更整不明白了。建议2楼将你的回复内容的最后一句修改一下,以免被人误解。

热门招聘
相关主题

官方公众号

智造工程师