step7中bcd码和十六进制数

   2024-09-12 建材之家870
核心提示:BCD码(Binary-Coded Decimal?6?0)是二进制编码的十进制数的缩写,BCD码用4位二进制数表示一位十进制数。BCD码各位的数值范围为2#0000~2#1001,对应于十进制数0~9。BCD码不能使用十六进制的A~F(2#1010~2#1111)这6个数字。BCD码本质上是十进制数,因此相邻两位逢十进一。BCD码的最高位二进制数是符号位,负数的符号位为1,正数为0。16位
BCD码(Binary-Coded Decimal?6?0)是二进制编码的十进制数的缩写,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码和16进制都可以用16#表示如果现在装载一个数<BR> L 16#296 如果是BCD码表示十进制296<BR> 如果是十六进制表示十进制663<BR> 系统是怎样区分那个数是BCD码还是十六进制的。

1. BCD 码是用2进制表示的十进制数,如果从最右端每4位转换成16进制数,则BCD 码也可以表示成16进制,例如:
16#123 , 转换成二进制应该是 2#0000 0001 0010 0011
2. 系统是怎样区分那个数是BCD码还是十六进制的。
这取决于使用的指令。例如: STEP7 中S5 定时器中的设定值,就是BCD数,而不是16进制数。
指令的规定与设计在最初一旦被定下来之后,就不能再修改。例如同样是定时器, 在GE 90-30 的PLC 中,它的设定值就是10进制数,而不是16进制数。
3 . 在每一个指令中都有使用的数据类型的规定。在那里,你就知道该使用16进制数还是BCD码了, 先列表如下:
WORD 可以是2进制数,或者16进制数,或者BCD码。
DWORD 可以是2进制数,或者16进制数,或者10进制数。
然而,
INT , DINT 只能是10进制数或者16进制数。
参考出处:
STEP7 中的帮助,在索引项的"输入要查找的关键字"中输入: INT
PLC本身是不用区分的,我觉得在通讯的时候比较有用到;比如上位机采集200的时间的时候,200提供的是BCD码的时间;而上位机跟200对时的时候也需要给200BCD码的时间。主要还是编程的时候,处于省时省力的考虑吧。
 
【温馨提示】本文内容和观点为作者所有,本站只提供信息存储空间服务,如有涉嫌抄袭/侵权/违规内容请联系QQ:727533600 删除!
 
举报收藏 0打赏 0评论 0

上一篇:S7-300与S7-200的PID公式

S7-300的FB 41(连续控制器功能块)和S7-200的PID公式基本上相同,有一些小的区别。 为了避免给定值变化引起微分部分的跳变,S7-200 PID的微分部分是在假设给定值不变的条件下推导出来的。 为了抑制由于控制器输出量的量化造成的连续的较小的振荡,S7-300的PID设置了死区非线性环节。 S7-300的PID引入了扰动量D...

下一篇:wincc与S7-200PLC通过PPI协议通讯

通讯也可考虑采用PPI,硬件费用很低,实现起来也简单1、主站:wincc6可以通过modbus opc server实现。从站:在s7200项目中添加modbus slave协议库(microwin帮助中有详细介绍)。主从站的通讯参数必须一致。2、pc access其实就是一个s7 200 opc server(ppi),比采用modbus简单易用,由于采用ppi协议,PLC项目中不必另...
 
更多>同类电工资讯
推荐图文
推荐电工资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报