plc 的内存字与字节分布问题 点击:2353 | 回复:10



binggao

    
  • 精华:0帖
  • 求助:4帖
  • 帖子:5帖 | 33回
  • 年度积分:0
  • 历史总积分:256
  • 注册:2011年3月11日
发表于:2012-03-07 20:21:31
楼主

我遇到一个样题,如下:

时间计时程序,将秒数存到VW4中,分钟存到VW2中,程序计时停止时要将秒数的数值

以二进制的形式在QB0输出端的负载LED上体现出来

指令有:MOVB   VB5,   QB0

      VW4的两个字节VB4、VB5,而秒数值为0-59,请问这个数值在VW4中的有效位是在VB4中,还是在VB5中呢?

      上面的指令对不对啊?



楼主最近还看过



xiaoyao110

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 654回
  • 年度积分:0
  • 历史总积分:4853
  • 注册:2007年3月06日
发表于:2012-03-07 22:30:48
1楼

是在VB5中,

VW4 的高字节是VB4,低字节是VB5

 

 

青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:24301
  • 注册:2007年4月02日
发表于:2012-03-07 22:43:31
2楼
一般都是从低位开始放置的

wyb2866255

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-03-07 23:53:13
3楼
     用“MOVB   VB5,   QB0”是对的,MW4包括MB4、MB5高、低二个字节,每个字节为8位,最大计数值为二进制数:1111_1111,转换为十进制数为255。 由于编程是将秒数送入MW4,而秒数最大数值为59,此数<255 ,故计数值始终存在MB5内,而MB4总=0.

王者之师-MadforG

  • 精华:9帖
  • 求助:0帖
  • 帖子:191帖 | 1053回
  • 年度积分:0
  • 历史总积分:7185
  • 注册:2010年7月01日
发表于:2012-03-08 00:02:53
4楼

  VW4的两个字节VB4、VB5,在西门子中是按高位VB4,地位VB5来存储的,即VW4=VB4.VB5的从高到低的存储方式。其中,每个变量为即VB占8位,也就是8个二进制位,即:11111111,,相对于VW4来说是一个占16位的变量字,可以容纳的最大的值为:1111111111111111.对于二进制的计算为(111111111)=255,(111111111111111111)=65535,可见59是在我们VW4的低位中,即在VB5中!

  此时VW4中的二进制存储为:(00000000,00111011)=59

狼牙精神

  • 精华:6帖
  • 求助:5帖
  • 帖子:469帖 | 5379回
  • 年度积分:3
  • 历史总积分:62964
  • 注册:2020年3月27日
发表于:2012-03-08 09:35:33
5楼
引用 王者之师-MadforG 的回复内容:  VW4的两个字节VB4、VB5,在西门子中是按高位VB4,地位VB5来存储的,即VW4=VB4.VB5的从高到低的存储方式。其中,每个变量为即VB占8位,也就是8个二进制位,即:11111111,,相对于VW4来说是一个占16位的变量字,可以容纳的最大的值为:1111111111111111.对于二进制的计算为(111111111)=255,(111111111111111111)=65535,可见59是在我们VW4的低位中,即在VB5中!  此时VW4中的二进制存储为:(00000000,00111011)=59

解释的很详细。

binggao

  • 精华:0帖
  • 求助:5帖
  • 帖子:6帖 | 33回
  • 年度积分:0
  • 历史总积分:256
  • 注册:2011年3月11日
发表于:2012-03-08 20:21:47
6楼
回复内容:
对:王者之师-MadforG关于  VW4的两个字节VB4、VB5,在西门子中是按高位VB4,地位VB5来存储的,即VW4=VB4.VB5的从高到低的存储方式。其中,每个变量为即VB占8位,也就是8个二进制位,即:11111111,,相对于VW4来说是一个占16位的变量字,可以容纳的最大的值为:1111111111111111.对于二进制的计算为(111111111)=255,(111111111111111111)=65535,可见59是在我们VW4的低位中,即在VB5中!  此时VW4中的二进制存储为:(00000000,00111011)=59内容的回复:

我今天试了一个国产的PLC,结果是VB4为低字节,VB5是高字节
这么说不同厂家的设备遵循的存储方法是不同的了?          

冰的临界点

  • 精华:12帖
  • 求助:0帖
  • 帖子:31帖 | 151回
  • 年度积分:0
  • 历史总积分:1207
  • 注册:2012年4月05日
发表于:2012-04-18 15:03:55
7楼
这个版块是单片机版块,plc区高手很多

建议删除该帖

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 580回
  • 年度积分:0
  • 历史总积分:2884
  • 注册:2010年9月08日
发表于:2012-04-18 15:31:00
8楼
双字节的好像还好,遇到的都是高位字节在前,32位的双字,一般按3、2、1、0存储,也有按1、0、3、2存储的

建议删除该帖

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 580回
  • 年度积分:0
  • 历史总积分:2884
  • 注册:2010年9月08日
发表于:2012-04-18 15:43:35
9楼

16位的字一般都是高位在前,低位字节在后,32位的双字就不一定了,有高位字在前的,有低位字在前的

hnhdzzc

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2012年4月23日
发表于:2013-10-07 20:37:02
10楼

mark..................


热门招聘
相关主题

官方公众号

智造工程师