戳上方
蓝字
"技成电工课堂”
关注我们哦!
所谓数值运算,就是通过加减乘除来实现数值的变换。在PLC中,数值运算的指令不算难,难的是怎样理解PLC对这些数值的定义与处理方式。所以,我将这部分知识分为上下两篇文章来述说。
在学习数值指令之前,我们得先了解这些数值有哪些特点。
在数学中,数的分类有很多,那在PLC中,数值的分类是不是也有很多的?在学习之前,看到数值运算指令,我顿时瑟瑟发抖,不会在PLC中也要学习数学吧!
后来才发现,是我杯弓蛇影了,PLC中的数值,除了我之前所说的各种进制数外,其实也不过是有整数与小数之分、整数与负数之分而已。这让我松了一口气。那么,我们正式开始这次的学习分享吧!
一、PLC的正数和负数
在数学中,负数和正数的区别,在于前面的正负号,例如-5和+5,而PLC中是不是也是这样的呢? 并不是的。 PLC中,正负之分是通过最高位(b15或b31)的值来判定的。最高位为0表示正数,最高位为1表示负数。 例如数据寄存器D0中最高位b15=0,表示D0的值为正数;若b15=1,那么D0的值就为负数。 另外,除了最高位用于区分正负之外,其他位(b14…b0或b30…b0)的值也有区别,这主要是体现在负数的表示中。在说明这一点之前,我们先来了解一下什么是原码、反码和补码。 在数字电路中,数码有原码、反码和补码之分,这样可以使得数值运算变得更为简单。结合符号位(最高位),所谓原码,是指数值本身,例如十进制数+11、-5用二进制数表示的原码分别为01011、10101,此时最高位的“0”、“1”为符号位。 在数字电路中规定,正数的原码=反码=补码,也就是正数的原码、反码和补码都是其本身,如上图所示的+11,其反码和补码也是01011。 而负数就不一样了,符号位始终保持不变,负数的反码就是对各数值位分别取反,如上图所示的-5,反码就是把1 0101变成1 1010。而负数的补码等于其反码加1,如1 1010+1=1 1011。 那么,反码和补码存在的意义又是什么呢?其实,补码的作用就是使运算变得更方便快捷,一个数减去另一个数,就等于这个数加上另一个数的相反数的补码,从而把减法运算转化为加法运算。 如下图所示,求解11-5,5的相反数为-5,从而把11-5转化为11+(-5的补码),并舍去进位,最后得到的结果恰好为6。 为什么把减法转化为加法就可以变得方便呢?这是因为加法的电路可以更为容易设计,这是数字电路的知识,在此我就不再展开阐述,大家感兴趣的可以自行了解。 类似于数字电路对原码、反码和补码的定义,在PLC中,正数(符号位为0)直接用其原码表示,而(符号位为1)负数就用其补码表示。这说明,数据寄存器中的数据若为负数,那它各个数位的值并不代表它本身的值,而是其补码。例如D0所存的数据为H8003,如下图所示,其最高位b15=1,为负数,所以这是补码,不能认为D0的数值大小为-3。 由于最高位为符号位,所以PLC中数值的取值范围也会有所不同,如16位和32位的取值范围如下图所示,此时取值范围显然不是±65536(16位)。 另外,PLC中还对两个数作出特别的规定,如图所示的K0和K-32768,特别是B1000 0000 0000 0000不是表示负零。 知道了PLC中对正负数的定义,我们继续往下看它是怎么定义整数和小数的。二、PLC的定点数与浮点数
在PLC中,也可以根据小数点位置的不同,将数值分为整数和小数。其中整数就属于定点数,那么,所谓定点数具体指的又是什么呢? 1、定点数 所谓定点,是指小数点是固定的,要么在最高位的左边、要么在最低位的右边。 如上图所示,若将小数点至于数值最高位的左边,该数值就为纯小数,所谓纯小数,就是指整数部分为零的数,例如0.12、0.07等;若将小数点至于数值最低位的右边,该数值就为整数,没有小数部分,例如7、8、9等。一般都是采用整数的定点数表示,所以在谈及定点数时,很多时候都默认是整数。 结合上文所提的符号位,即带符号的二进制整数称为BIN数。大家细心点也可以发现,编程手册中经常出现“BIN”这个词,没错,它代表的就是二进制整数,而且带有符号。 所以,在之后谈及BIN运算指令时,要注意其数值的正负。 2、浮点数 所谓浮点数,其实就是小数,“浮点”表示小数点是浮动的,随着小数点位置的不同,数值的大小也会有所不同。在了解浮点数之前,我们先来了解一个概念:科学计数法。 (1)科学计数法 科学记数法是一种记数的方法。就是把一个数表示成a×10n的形式。如下图所示,其中底数10是固定不变的,变的是a和n,所以要用科学计数法去表示一个数,只需知道a和n即可。 类似的,在PLC中,浮点数就是用科学计数法表示的,又因为它由两部分构成(a与10n),所以浮点数都是用32位表示,即占用两个字元件。其中又分为十进制浮点数和二进制浮点数。 (2)十进制浮点数 根据上文所提,浮点数用两个连续编号的数据寄存器(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×1035。至于为什么是这样,我也不甚清楚,反正这是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中不能直接输入浮点数,想输入浮点数,就得先输入整数,再运用相应指令运算或转化。 知道了这些数值的相关定义和处理方式,那么我们在下篇文章就可以继续分享数值运算的相关指令啦! 最后,这次的学习分享就到这里吧! 注:本文章内容都是基于三菱FX PLC 2N所写 选自《三菱FX系列PLC功能指令详解》第五章第27~28课时(技成培训网原创,作者:杨思慧,未经授权不得转载,违者必究)
如何0基础学习PLC?
关注回复 “ 工控全套 ”
获取更多工控案例与电气软件大全!
你的分享、点赞、在看我都喜欢