在PLC中,也可以根据小数点位置的不同,将数值分为整数和小数。其中整数就属于定点数,那么,所谓定点数具体指的又是什么呢?
所谓定点,是指小数点是固定的,要么在最高位的左边、要么在最低位的右边。
如上图所示,若将小数点至于数值最高位的左边,该数值就为纯小数,所谓纯小数,就是指整数部分为零的数,例如0.12、0.07等;若将小数点至于数值最低位的右边,该数值就为整数,没有小数部分,例如7、8、9等。一般都是采用整数的定点数表示,所以在谈及定点数时,很多时候都默认是整数。
结合上文所提的符号位,即带符号的二进制整数称为BIN数。大家细心点也可以发现,编程手册中经常出现“BIN”这个词,没错,它代表的就是二进制整数,而且带有符号。
所以,在之后谈及BIN运算指令时,要注意其数值的正负。
2)浮点数
所谓浮点数,其实就是小数,“浮点”表示小数点是浮动的,随着小数点位置的不同,数值的大小也会有所不同。在了解浮点数之前,我们先来了解一个概念:科学计数法。
①科学计数法
科学计数法是一种记数的方法。就是把一个数表示成a×10 n 的形式。如下图所示,其中底数10是固定不变的,变的是a和n,所以要用科学计数法去表示一个数,只需知道a和n即可。
类似的,在PLC中,浮点数就是用科学计数法表示的,又因为它由两部分构成(a与10 n ),所以浮点数都是用32位表示,即占用两个字元件。其中又分为十进制浮点数和二进制浮点数。
②十进制浮点数
根据上文所提,浮点数用两个连续编号的数据寄存器(Dn+1,Dn)表示。如下图所示,Dn保存浮点数的基数,Dn+1保存浮点数的指数,且两个数都带有符号位。例如(D0)=K666,(D1)=K-2,(D1,D0)就表示了十进制数666×10 -2 =6.66。
在三菱PLC FX2N中,基数和指数的取值范围各有不同,表示基数的Dn的取值范围为±1000~9999或0,表示指数的Dn+1的取值范围为-41~35。另外,十进制浮点数中,最小的数是1175×10 -41 ,最大的数为3402×10 35 。至于为什么是这样,我也不甚清楚,反正这是PLC中的规定。
在PLC中,十进制浮点数是不能直接用来运算的,而是用二进制浮点数进行运算的,但它可以和二进制浮点数相互转换,可用来进行数据监视。这就像是计算机系统,计算机中处理数据是基于二进制数的,但我们查看的时候看到的是十进制数,这是因为计算机把二进制数转换为十进制数以便我们查看。
3)二进制浮点数
二进制浮点数在PLC中的表示比较复杂,如上图所示,同样是用两个连续编号的数据寄存器表示,其最高位(b31)仍然表示符号位,这个符号位表示的该浮点数本身的正负,而不是指数的正负。从上图可以看出,指数N占有8位,即b30~b23,而基数a占有23位,即b22~b0。它们的取值如下图所示,其中b0~b30的值为0或1。
虽然二进制浮点数的表示方式比较复杂,但是能不能完全理解它,都不妨碍我们对浮点数的理解,对数值运算指令的运用。所以,不理解二进制浮点数的表方法,问题不大,能理解二进制浮点数本身就行。
例如在三菱PLC FX3U中想输入浮点数3.14,直接输入“E3.14”就行,但在三菱PLC FX2N中不能直接输入浮点数,想输入浮点数,就得先输入整数,再运用相应指令运算或转化。
知道了这些数值的相关定义和处理方式,那么我们在下篇文章就可以继续分享数值运算的相关指令啦!
最后,这次的分享就到这里吧!