[汇川] 小型PLC教程之2.3其他进制简介(8进,16进制,BCD码)

[复制链接]
查看182 | 回复0 | 2024-11-14 07:22:47 | 显示全部楼层 |阅读模式
>

上一篇教程,我们为大家介绍了二进制数据 【极课工控】小型PLC系列教程之2.2数值存储与二进制.. 。

位数少的CPU,并非不能处理大的数值,只不过需要多次运算,有时还需要编程人员熟悉算法。就像大车一次可以搬运的货物,用小车就需要往返多次才能搬完,车越小,需要的次数越多,耗时也越多。

H1U/H2U系列PLC元件中,常用的数据宽度是1Word(即16bit);部分计数器为2Word(32bit)。对于16bit的无符号数据,用2进制表示的最大值为1111,1111,1111,1111,换算为十进制就是65,535。

本篇博文将为大家详细介绍一下其他的数据进制,其中我们在PLC编程中用的比较多的是十进制和十六进制数据,BCD码一般用在数码管显示的用途中。

十进制

十进制数据就是我们人类使用的12345678910 11 12这样的数据,逢十进一。咱们上小学就开始学的数学,都是基于10进制的。十进制数据在编程中用的比较多。

小型PLC中十进制数据用K开头标识,如:

MOV K20 D200 将20这个十进制数据赋值给D200数据寄存器

十六进制

十六进制,逢十六进一。

十六进制(Hexadecimal)是计算机中数据的一种表示方法。同日常生活中的表示法不一样,它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;十六进制用hex表示。

在小型PLC中十六进制前缀是 H,如下梯形图程序:
MOV HA D100 将十六进制数据 A(也就是十进制的10)赋值给D100寄存器

对于十进制500而言,用十进制表示出来是500,用十六进制表示是HEX: 01F4,用二进制表示:1 1111 0100。

每个十六进制位相当于4个二进制位:

十进制十六进制二进制
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
10A1010
11B1011
12C1100
13D1101
14E1110
15F1111
16100001 0000
17110001 0001
18120001 0010
19130001 0011
20140001 0100

每一个十六进制位对应的4个二进制位,FF对应的二进制位就是1111 1111.

八进制:

八进制数据用的稍微少一点,逢八进一。具体不详细说,和上面差不多,用的并不多

BCD码(数码管显示-摘自手册P20)

最符合人们阅读习惯的数字格式是十进制,在人们监控或设置工作参数时,往往需要采用十进制格式进行数据显示,而计算机内部使用的是HEX格式,故需采用一种底层为每4个二进制位组成一个数字位,而每个数字位只能为十进制数的0~9,由此组成的数值,这种格式数字在存储器中的编码称为BCD码(Binary-Coded Decimal)。

在PLC内部,原理上用4位二进制数代表1位十进制数,在每一位BCD码中,不存在HEX格式中的A~F。对于一个8bit宽度的寄存器单元,能存储的最大BCD数只能是99,因此将HEX格式转换为BCD码后,会占用更大的存储空间。

PLC内部总是按HEX格式进行数据计算的,在驱动非智能的显示设备(如数码管)显示数据之前,往往需要将PLC内部的十六进制( HEX)格式数据先转换为BCD码,然后进行显示输出;将用户以十进制方式设置的参数存入PLC内存之前,则往往需要将该BCD码转换为十六进制( HEX)格式。

H1U/H2U系列PLC内部提供了HEX与BCD两种格式相互转换的命令,在需要进行显示输出,或设置开关读取的时候,执行该格
式转换指令。

人们在电脑显示器上看到的十进制读数,都是经过了计算机自动作BCD转换后才显示的;监控时修改的参数,则是电脑软件作了HEX转换后写入的,无需人为干预而已。

进制转换

一般都不要自己手动算,但是还是应该知道手动怎么算的。我们实际应用中都是使用转换工具的,微软自带的计算器,就带这个功能。下面给大家介绍一下微软自带的计算器如何进行数据类型转换:

Windows键+R,然后输入“calc”回车,就能打开系统自带的计算器。

点击左上角的查看,然后选择程序员模式,就能进行各个数进制之间的转换了。

可以自行选择各种数据进制进行尝试:

要将(无符号)二进制数10110101换算为十进制数,则计算要复杂很多,一般这么算:

bit7bit6bit5bit4bit3bit2bit1bit0
10110101
2^72^62^52^42^32^22^12^0

1乘2^7 + 0乘2^6 + 1乘2^5 + 1乘2^4 + 0乘2^3+1乘2^2+0乘2^1 + 1乘2^0 = 181(无符号类型的算法)

如果有符号类型,最高位表示的是符号位,算法和这个不一样,还要考虑补码,反码特别麻烦。。。

数据转换手算方法在手册P21上有详细讲解


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则