对于PLC数据类型中的W和I 点击:4166 | 回复:16



wang_039

    
  • 精华:0帖
  • 求助:15帖
  • 帖子:44帖 | 115回
  • 年度积分:0
  • 历史总积分:275
  • 注册:2010年12月24日
发表于:2012-10-01 20:53:14
楼主
求助帖5分-已结帖

  我们都知道,W和I类型的变量都是16位宽的,有的指令中称为字(W),有的称为整数(I),这让我很困惑,它似乎意味着有的是无符号的,有的是有符号的,怎样来区分呢?再比如这个数据运算指令,MOV_DW,输入端写负数竟然传送错误,而MOV_W就可以正确传送。谁有这方面的详细说明吗?或者解释一下也行。

  谢谢,国庆节好。



楼主最近还看过



王者之师——梁真

  • 精华:2帖
  • 求助:3帖
  • 帖子:8帖 | 591回
  • 年度积分:0
  • 历史总积分:2570
  • 注册:2012年7月06日
发表于:2012-10-02 15:15:21
1楼

MOV_DW是双字传送

MOV_W是字传送指令

chenminglei0509

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 721回
  • 年度积分:0
  • 历史总积分:5079
  • 注册:2011年3月13日
发表于:2012-10-02 16:37:18
2楼

字类型的话,只能表示占用12个位的数据,而这个数据具体是什么作用的,是数据还是地址还是字符都不知道。而int类型的话表示短整形数据,是整形数据大家做中的一员。整形数据家园还有长整形,短整形以及无符号的长短整形以及字符型。整形数据只能表示整数而不能表示小数,如果需要具体表示小数的话,就需要采用浮点数了。int类型数据的正负是用首位的1,0来表示的,所以输入附属的时候直接自己转换一下就可以了,应该不存在MOV-DW双字传输会出错的情况。楼主可以把图片贴上来看看嘛?

阿水--王者之师

  • 精华:23帖
  • 求助:347帖
  • 帖子:1611帖 | 22281回
  • 年度积分:37
  • 历史总积分:98482
  • 注册:2007年3月22日
发表于:2012-10-03 08:22:04
3楼

    MOV_DW是双字传送 , MOV_W是字传送指令  你所输入的字大小不一样当然要错呀 !

wang_039

  • 精华:0帖
  • 求助:15帖
  • 帖子:44帖 | 115回
  • 年度积分:0
  • 历史总积分:275
  • 注册:2010年12月24日
发表于:2012-10-03 16:47:35
4楼

  今天公司上不了网,等我发个图你看下。

  这个数据类型还是不太明白,有时用字,有时用整型。

询问

  • 精华:0帖
  • 求助:1帖
  • 帖子:121帖 | 274回
  • 年度积分:0
  • 历史总积分:832
  • 注册:2004年10月13日
发表于:2012-10-03 20:24:06
5楼
INT 表示有符号的,WORD表示无符号的,MOV_DW保持和这个没有关系,应该是,你输入的类型错了,DW是双

zwm00306

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 1541回
  • 年度积分:0
  • 历史总积分:5963
  • 注册:2001年10月22日
发表于:2012-10-04 08:36:37
6楼

都是16位和32位的数吧。。。。。。

bhdxzgp

  • 精华:5帖
  • 求助:8帖
  • 帖子:141帖 | 5451回
  • 年度积分:0
  • 历史总积分:21609
  • 注册:2006年4月16日
发表于:2012-10-04 12:52:26
7楼

节日工作辛苦了啊!!

注意身体啊

劳逸结合啊!!!

wang_039

  • 精华:0帖
  • 求助:15帖
  • 帖子:44帖 | 115回
  • 年度积分:0
  • 历史总积分:275
  • 注册:2010年12月24日
发表于:2012-10-04 20:36:37
8楼

  我再试试,感觉一些数据类型的规定不准确。

  节日歇了一天。有一个小时的篮球就可以调整了。

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-10-04 23:20:52
9楼

     W为无符号字整数,其范围为0~65535,I为有符号字整数,其范围为 -32767~+32767。字存储器存储数为0~FFFF,如以无符号字整数显示为:0~65535,如以有符号字整数显示为 -32768~+32767。其:0~+32767=0~7FFF,-1~-32768=>FFFF~8000。

   

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-10-04 23:53:32
10楼

 MOV_DW,输入端写负数竟然传送错误,而MOV_W就可以正确传送。谁有这方面的详细说明吗?或者解释一下也行。

     不会吧,对MOV_W,可输入负数范围为-1~-32768,即16进制数FFFF~8000,如用-32769输入将显示错误,因为它超出负数范围,但用 -32769 输入给MOV_DW,编译是没问题的。见下图:

wang_039

  • 精华:0帖
  • 求助:15帖
  • 帖子:44帖 | 115回
  • 年度积分:0
  • 历史总积分:275
  • 注册:2010年12月24日
发表于:2012-10-05 21:23:46
11楼

  谢谢诸位。

  但是看我这个图。

 

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-10-05 22:09:13
12楼

      网络2 -10显示的 4294967286是 将VD10双字内容显示为无符号的双字整数,如将其显示为有符号的双整数

就= -10 。 -10写入双字的16进制形式为 :16#FFFFFFF6   即:如将它转换为无符号双字整数=4294967286,如将它转换为有符号双字整数= -10.   我写的程序显示为-10,见下图:

wang_039

  • 精华:0帖
  • 求助:15帖
  • 帖子:44帖 | 115回
  • 年度积分:0
  • 历史总积分:275
  • 注册:2010年12月24日
发表于:2012-10-07 20:44:26
13楼
W和DW不是要求无符号的吗。唉。

门徒-原创军团

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 689回
  • 年度积分:0
  • 历史总积分:3245
  • 注册:2011年9月22日
发表于:2012-10-12 23:57:59
14楼
引用 wang_039 的回复内容:W和DW不是要求无符号的吗。唉。



wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-11-08 13:22:37
15楼
13楼:我们所用的S7-200的编程版本不一样造成的,你的版本对MOV传递指令输出显示为无符号整数,我用的版本对MOV传递指令输出显示为有符号整数。对-10这个带符号的整数,在存储器的内容为:16#FFFFFFF6 ,如此值显示为有符号的整数为 -10,如显示为无符号整数就是:4294967286。

wang_039

  • 精华:0帖
  • 求助:15帖
  • 帖子:44帖 | 115回
  • 年度积分:0
  • 历史总积分:275
  • 注册:2010年12月24日
发表于:2012-11-08 15:07:17
16楼
                                      高手啊,谢谢。

热门招聘
相关主题

官方公众号

智造工程师