连载八|容易让人糊涂的BCD码和十六进制数

连载八|容易让人糊涂的BCD码和十六进制数

 共享屋精彩PMC文章 

有些知识,不是每个人天生就会,也不是你看了就明白,需要你实践,去应用,不然,看了也没有用,今天来讲解下让人比较迷惑的BCD码和二进制的问题的知识,希望对于学习PMC的人有帮助。

BCD码(Binary-Coded Decimal‎)是二进制编码的十进制数的缩写,BCD码用4位二进制数表示一位十进制数。BCD码各位的数值范围为2#0000~2#1001,对应于十进制数0~9。BCD码不能使用十六进制的A~F(2#1010~2#1111)这6个数字。BCD码本质上是十进制数,因此相邻两位逢十进一。
BCD码的最高位二进制数是符号位,负数的符号位为1,正数为0。16位BCD码的范围为–999~+999。
下图的拨码开关将显示的数字转换为4位二进制数。PLC用12个数字量输入点读取的是3位BCD码,它的值为2#1000 0010 1001,即十六进制数16#829。

BCD码没有单独的表示方法,而是借用了十六进制的表示方法,因此二者很容易混淆。
下图是S7-300/400的BCD码和整数的相互转换指令,可以看到在指令中BCD码均用十六进制的形式表示。

在程序中,怎么知道一个数字是BCD码还是十六进制数呢?
1)看数据的来源和用途。BCD码一般用于输入和输出,例如来自拨码开关的数据是BCD码,送给显示电梯楼层的译码器芯片的是BCD码。
2)看手册的规定,例如数据类型DATE_AND_TIME中的日期和时间值是BCD码,计数器的预设值PV和当前计数值CV_BCD为BCD码。
怎样监视BCD码?
在变量表和程序状态监控中,用十六进制格式监视BCD码。
怎样输入BCD码?
从上图可以看出,BCD码用十六进制格式输入,其最高位(符号位)为16#F(2#1111)。BCD码的低3位各位只能是0~9,如果是16#A~16#F则会出错。
计数器的预设值PV是0~999的BCD码,可以用格式为C#的常数(C#1~C#999)作为计数器的预设值。
下图用MW42提供计数器的预设值PV,如果用MOVE指令将十进制数348(对应的十六进制数为16#15C)传送给MW42,进入RUN模式时,操作系统将它转换为BCD码时出错(16#15C不是BCD码),不能切换到RUN模式。
输入预设值348时,应改为将C#348传送给MW42,它会自动地变为W#16#348,当然也可以直接输入16#348。没有必要用I_BCD指令将348转换为BCD码W#16#348后,再传送给MW42。

以上是西门子BCD码的使用方法,我们再看下在FANUC系统上的显示方法:

 

 

进制的数字18经过SUB31转化后输出来的结果是12.那么这个功能指令的应用场合在什么地方呢?

是的,我们只知道它是这么转化的是没有用的,而实际上我们维修的时候遇到的是实际在在的问题,比如客户报修机床输入TXX找不到刀号了,或者输入T10选的刀是16号刀,11到15号刀找不到了,为什么会出现这么样的现象?如何排查这样的问题,当然这样的问题与每家的机床的数据表也不同,这些在我们的PMC学习班都分享过,我相信,听过这节课的小伙伴对乱刀的问题都知道如何去解决了。没有学会的也不用担心,后期讲解到这个功能指令的时候,我还会再讲解一次。

学习不是学习死知识,要学会应用,学会解决问题,要根据问题找到根本原因,精通PMC的人将为你的维修工作助力。业余学习PMC提升技能,选择共享屋平台就够了。

  • 如果你想获得更多的信息,请关注共享屋公众号:share5888,扫一扫以下二维码即可加入。

share5

share5

分享主题:分享数控机床电气调试与维修知识,提升个人技能。分享的东西你现在可能不需要,但是我相信只要在某个时间你需要的时候能在这里找到,那么我就是成功的.
【座右铭】每天进步一点点。问题有了,方法总会有的。人与人之间的差别在于你只看到别人的成功,看不到别人的努力。
QQ:799309212
微信:share558
技术交流群:343338585
数控资源站:点击进入
share5

Latest posts by share5 (see all)

未经允许不得转载:共享屋 » 连载八|容易让人糊涂的BCD码和十六进制数

赞 (1)

评论 0

评论前必须登录!

登陆 注册