西门子数据类型问题 点击:305 | 回复:1



PLC酷客

    
  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-12-24 09:07:51
楼主

 数据类型问题 

 

大家好,我用-59传送到MD100(定义为DINT类型),显示为-59,但是我用-59传送到MD200(DWORD类型),怎结果变成了65477,当他们转换成字符串时,也不一样,在程序上把MD100与0比较,结果显示MD100小于0,但用MD200与0比较时,结果显示大于0?这两种数据类型为什么会出现这种情况,数字都是用二进制存储在CPU中,为什么一个为负数,令一个为正数?我有点困惑 

 

答:

我觉得你这两个-59可能是不一样的,前者为32位整数,后者为16位整数,如果16位整数要传送到一个32位变量里需要先用I_DINT进行转换。 

 



楼主最近还看过



红旗~

  • 精华:0帖
  • 求助:1帖
  • 帖子:3帖 | 143回
  • 年度积分:0
  • 历史总积分:86
  • 注册:2004年4月02日
发表于:2013-12-26 19:56:12
1楼

DINT和DWORD数据类型不同,一个有符号位一个无,-59传到DINT时第31位被置1,表示负,但在DWORD时31位的1就不是表示符号位了,规则的问题!


热门招聘
相关主题

官方公众号

智造工程师