技术论坛

读取时钟 状态图表正确 怎么程序不对

作者 主题
新手

经验值: 42
发帖数: 5
精华帖: 0
主题:【探讨】读取时钟 状态图表正确 怎么程序不对


只看楼主 楼主 2021-05-19 14:53:03

状态图表读的数正确   程序读的数确不正确  怎么回事?






 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1696491&b_id=64&s_id=0&num=8

侠圣

经验值: 3015
发帖数: 363
精华帖: 4
回复:读取时钟 状态图表正确 怎么程序不对


只看楼主 1楼 2021-05-19 15:35:38

状态图表的数据是十六进制的,程序段监控里面显示的是十进制!


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19300
发帖数: 3874
精华帖: 1
回复:读取时钟 状态图表正确 怎么程序不对


只看楼主 2楼 2021-05-19 18:22:27

 你把十进制转换成16进制就得了,没有问题的。


弘扬中华传统美德,无私奉献为根本,助人为乐为根源。
以下网友喜欢您的帖子:

  
新手

经验值:
发帖数:
精华帖: 3
回复:读取时钟 状态图表正确 怎么程序不对


只看楼主 3楼 2021-05-20 15:29:58

这还是个BCD码呢。转十进制需要BCD_I的。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12731
发帖数: 1586
精华帖: 1
回复:读取时钟 状态图表正确 怎么程序不对


只看楼主 4楼 2021-05-21 00:29:22

楼上说的对,应该将字节转成字(B_I),然后再用BCD_I指令转成整数


努力学习西门子
以下网友喜欢您的帖子:

  
至圣

经验值: 67546
发帖数: 14783
精华帖: 100
回复:读取时钟 状态图表正确 怎么程序不对


只看楼主 5楼 2021-05-21 08:24:02

读出来的是bcd码。bcd码用16进制显示的效果是人理解的效果。但是程序监控是10进制的显示效果。不是人需要的视觉效果。程序的执行是按照10进制执行。所以程序会错,人看也错。

说的绕,看得更绕。这里面绕了两个弯了。要仔细理解一下。

方法不难,就一条bcd_i指令,但是是为什么,就要好好理一理。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 9764
发帖数: 1453
精华帖: 72
回复:读取时钟 状态图表正确 怎么程序不对


只看楼主 6楼 2021-05-26 09:47:39

这个确实太绕弯了。其实,程序监控的值与状态图表的值都是正确的!之所以说有错误,是因为忽略了数据实际显示时的进制以及表示形式,而是全部按日常生活中的十进制数来读了!

1)读取的时钟数据采用的是:8421BCD码形式;用四位二进制数,表示一位十进制数;

2)程序监控开到的是将此BCD码当做十进制数,直接显示;并且也按十进制数来读,因此读到的数有错误的(其中≤09的数是正确的);

3)状态图表则是以十六进制数显示的,而我们又将其以十进制数来读。即为BCD码(二进码十进数)表示的实际十进制数值,所以是正确的。


书山有路勤为径,学海无涯苦作舟;三人行,必有我师;森林之外的树木也能成才
以下网友喜欢您的帖子:

  
奇侠

经验值: 9764
发帖数: 1453
精华帖: 72
回复:读取时钟 状态图表正确 怎么程序不对


只看楼主 7楼 2021-05-26 10:38:02

日常生活中的数指的都是十进制数。大家都明白,一位数的十进制数的范围是0~9;这不是废话吗!

PLC常用的数有:

1、二进制。一位数的二进制数的范围是0、1;

2、十进制。

3、十六进制。一位数的十六进制数的范围是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F;分别对应的二进制保存形式:0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111;分别对应的十进制数是:0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15;

4、日常所说的BCD码大都是指8421BCD码形式,PLC用的就是此种。一位BCD码表示的十进制数的范围是:0、1、2、3、4、5、6、7、8、9。分别对应的二进制保存形式为:0000、0001、0010、0011、0100、0101、0110、0111、1000、1001;

PLC中的数字保存形式则只有一种:二进制保存形式。无论是二进制、十进制、十六进制,或无符号整数、有符号整数、无符号双整数、有符号双整数、实数、BCD码等等,均采用二进制形式保存;

同一个二进制保存形式的数,以不同进制或以实数显示时,字面值的大小一般是不一样的。

一贴图的VB300为例:

1、二进制是0010 0001,同时也是该数据的保存形式;

2、十进制是33;

3、十六进制是21;此处的21是16#21,值的大小等于十进制的33;

4、BCD码是21。此处的21表示的不是十六进制的21(16#21),而是十进制的21。用四个位元来储存一个十进制的数码方式。即:用八个位元来储存两位十进制的数码。


书山有路勤为径,学海无涯苦作舟;三人行,必有我师;森林之外的树木也能成才
以下网友喜欢您的帖子:

  
至圣

经验值: 14877
发帖数: 1015
精华帖: 1
回复:读取时钟 状态图表正确 怎么程序不对


只看楼主 8楼 2021-05-27 13:39:39

进制不一样吧


自己不努力,一切全白费
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
读取时钟 状态图表正确 怎么程序不对
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。