BCD码(Binary Coded Decimal)是用4位二进制数来表示1位十进制数中的0~9的编码方法。其中,最常使用到的是8421BCD码。8421码是一种有权码,其各位的权分别是(从最有效高位开始到最低有效位)8,4,2,1。比如,BCD码0x9234(二进制1001 0010 0011 0100)所代表的十进制数为9234。此种编码方法在很多计算机系统及现场仪表中较为常见。在工业控制中,PLC可能要和现场仪表或计算机交互数据,如果PLC没有BCD和整数互转的功能块,那么就需要工程师自行编写转换程序。本文以HORNER控制器为例,为您展示8421BCD码和整数互转的梯形图逻辑实现。
Part A. BCD码转整数的程序实现
从BCD码的原理可知,对于一个16位的BCD码而言,其数据表示范围为0~9999。故此我们利用数学运算,依次提取出千位,百位,十位,个位的数值,然后再把这些数值乘以对应的加权(1000,100,10,1)后相加,即可得到对应的整数。
在下面的例子中,待转换的BCD码位于%AQ81(16位)寄存器,下文中我们称之为Input;转换结果放置在%AQ88(16位)寄存器中,我们称之为Output。%S7为系统寄存器,始终为ON.如果要转换的数小于16(0x10), 则直接MOVE Input至Output,输出结果。
2. 如果要转换的数大于等于16(0x10),且小于256(0x100)
a. 首先把Input除以16得到十位数值A;
b. 然后把Input对16做取余运算(MOD)得到个位数值B;
c. 最后Output = (A*10) + B;
3. 如果要转换的数大于等于256