BCD码与整数互转算法梯形图实现方法.pdfVIP

BCD码与整数互转算法梯形图实现方法.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

BCD码(8421)和整数互转算法的梯形图实现

BCD码(BinaryCodedDecimal)是用4位二进制数来表示1位十进制数中的0~9的编码方法。其中,最常

使用到的是8421BCD码。8421码是一种有权码,其各位的权分别是(从最有效开始到最低有效位)8,4,2,1。

比如,BCD码0x9234(二进制1001001000110100)所代表的十进制数为9234。此种编码方法在很多计算机系统

及现场仪表中较为常见。在工业控制中,PLC可能要和现场仪表或计算机交互数据,如果PLC没有BCD和整数

互转的功能块,那么就需要工程师自行编写转换程序。本文以HORNER控制器为例,为您展示8421BCD码和整

数互转的梯形图逻辑实现。

PartA.BCD码转整数的程序实现

从BCD码的原理可知,对于一个16位的BCD码而言,其数据表示范围为0~9999。故此我们利用数算,

依次提取位,百位,十位,个位的数值,然后再把这些数值乘以对应的加权(1000,100,10,1)后相加,即可得到对

应的整数。

在下面的例子中,待转换的BCD码位于%AQ81(16位)寄存器,下文中我们称之为Input;转换结果放置

在%AQ88(16位)寄存器中,我们称之为Output。%S7为系统寄存器,始终为ON.

1.如果要转换的数小于16(0x10),则直接MOVEInput至Output,输出结果。

2.如果要转换的数大于等于16(0x10),且小于256(0x100)

a.首先把Input除以16得到十位数值A;

b.然后把Input对16做取余运算(MOD)得到个位数值B;

c.最后Output=(A*10)+B;

3.如果要转换的数大于等于256(0x100),且小于4096(0x1000)

a.把Input除以256得到百位数值A;

b.把Input对256做取余运算得到余数Y;

c.把余数Y除以16得到十位数值B;

d.把余数Y对16做取余运算得到个位数值C;

e.最后Output=(A*100)+(B*10)+C;

4.如果要转换的数大于等于4096(0x1000)

a.把Input除以4096得到千位数值A;

b.把Input对4096做取余运算得到余数Y;

c.把余数Y除以256得到百位数值B;

d.把余数Y对256做取余运算得到余数Z;

e.把余数Z除以16得到十位数值C;

f.把余数Z对16做取余运算得到个位数值D;

g.最后Output=(A*1000)+(B*100)+(C*10)+D;

整个程序的全景图如下:

我们可以将其建为自定义功能块,或者子程序,方便在程序的其他位置多次调用。

PartB.整数转BCD码的程序实现

整数转BCD的原理同上,只不过各数位对应的加权分别变为了4096,256,16和1。

在下面的例子中,待转换的BCD码位于%AQ91(16位)寄存器,下文中我们称之为Input;转换结果放置

在%AQ96(16位)寄存器中,我们称之为Output。%S7为系统寄存器,始终为ON.

1.如果要转换的数小于10,则直接MOVEInput至Output,输出结果。

2.如果要转换的数大于等于10,且小于100

a.首先把Input除以10得到十位数值A;

b.然后把Input对10做取余运算得到个位数值B;

c.最后Output=(A*16)+B;

3.如果要转换的数大于等于100,且小于1000

a.把Input除以100得到百位数值A;

b.把Input对100做取余运算得到余数Y;

c.把余数Y除以10得到十位数值B;

d.把余数Y对10做取余运

文档评论(0)

182****0328 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档