1.2 数制与数制转换
1.2.1 数制
1.十进制数(Decimal number,D)
十进制系统是以10为基值,具有10个独特的数字——数字0~9。有时为了与二进制数和十六进制数相区别,十进制数可以用一个括号加下脚标10注明,或在后边用大写的D表示。根据数学上计数的理论,N位计数制的数,可以按N(又称基数)的幂指数展开求和的方法求出其值。十进制数可按10的幂指数展开求和的方法表示。例如:
(98.36)10或98.36D或98.36=9×101+8×100+3×10-1+6×10-2
其中某一位数乘10的几次方,要看这一位后面的整数部分有几位。如上面的9后面,整数部分有1位,这个9就相当于9乘10的1次方。
在FX系列PLC中,用十制数表示的有下列地方:
1)定时器、计数器的设定值;
2)辅助继电器M、状态寄存器S、数据寄存器(T、C、D)的编号;
3)指定应用指令的操作数与指定动作;
4)特殊功能模块的编号和缓冲寄存器(BFM)的编号。
2.二进制数(Binary number,B)
通常,PLC是对二进制数进行操作,用二进制来表示变量或变化的码值。二进制系统以数字2为基数,二进制数只有两个数码0和1,加法逢二进一位。二进制数后可加一大写的B表示。例如:
二进制数的每个数字都称为一个位,在PLC中,每个字能够以二进制数或位的形式存储数据。一个字所包括的位数取决于PLC系统的类型,16bit和32bit最常用。图1-3中表示由2个字节组成的16bit字,最低位(LSB)为代表最小值的数字,最高位(MSB)为代表最大值的数字,实际为符号位,为1时数为负,为0时数为正。
图1-3 二进制数据结构
在FX系列PLC中,用十制数对定时器、计数器、数据寄存器的设定值进行指定,但是在PLC内部都是以二进制数进行处理的,而在外部设备进行监控时,则自动变换成十进制数。
3.十六进制数(Hexadecimal number,H)
由于一个数据的字由16个数据位或两个8bit组成。十六进制数有十六个数码:0~9和A、B、C、D、E、F,基数是16,加法逢十六进一位。十六进制数后可加一个大写的H表示。例如:
在FX系列PLC中,同十进制数一样,用于指定应用指令的操作数与指定动作。
4.八进制数(Octal number,O)
八进制系统是以基数为8的系统,一个八进制数能够用三个二进制数字表示。它通常用于微处理器、计算机和可编程序控制系统,PLC用户或程序员可以利用其组成一个信息字节中的8个数据位进行编址。例如:
一般PLC的输入和输出模块地址都是按八进制编址的。
5.二、八、十与十六进制数对照
为了读者方便,现将二、八、十与十六进制数对照,见表1-1。
表1-1 数制系统对照表
6.浮点数
浮点数是属于有理数中某特定子集的数的数字表示方法,在计算机中,用以近似表示任意某个实数。具体地说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。
浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。
1.2.2 各种进制间的转换
在PLC运算时,经常用到各种数制进行转换,监控程序运行工况等。为此,以下讲述各种进制转换的方法。
1.二进制数与十六进制数
(1)二进制数→十六进制数 整数部分:将二进制数从最低位(小数点左边第1位)开始,向左数,每4位二进制数转换为一位十六进制数。例:(最高位不够4位的前面补零凑够4位)。
例:(01110001101.1100001)=38D.C2H(小数部分向右数,每4位一组转换为1位十六进制数,最低位不够4位的后面补零凑够4位)。
(2)十六进制数→二进制数 将每1位十六进制数转换为4位二进制数。
由于二进制数与十六进制数之间的转换方法很简单,所以经常用十六进制数去表示二进制数。一个二进制数与它的十六进制数是一一对应的,这些十六进制数,进入计算机内后,统统都会变成二进制数(实际是变成晶体管集电极电平的“高低”不同状态)。
(3)二进制数、十六进制数→十进制数
例:。这些数据很有用,最好能记住。
(4)十进制数→二进制数
方法一:整数部分用除2取余法:79=1001111
方法二:按某十进制数包含哪些2的幂指数,心算可一步将该十进制数直接写成二进制数:从高位到低位,含有2的幂指数的位写1,没有的位写0。
(5)十进制数→十六进制数
方法一:按十→二→十六进行
方法二:除16取余法。
例:2012=7DCH