西门子全国代理6AV2123-2DB03-0AX0西门子全国代理6AV2123-2DB03-0AX0
眉山回收西门子直流调速器装置
雅安回收西门子直流调速器装置
巴中回收西门子直流调速器装置
贵州回收西门子直流调速器装置
西门子电源授权代理商,西门子电源分销商,西门子电源分销商,
西门子交换机分销商,西门子交换机分销商,西门子交换机一级代理商,西门子交换机代理商,西门子S7-1200系列代理商,西门子S7-1200CPU分销商,西门子S7-1200CPU分销商,西门子S7-1500CPU代理商,
西门子S7-1500CPU代理商,西门子模块代理商,西门子模块一级代理商,西门子模块总代理商,西门子模块分销商,西门子模块代理商
贵阳回收西门子直流调速器装置
六盘水回收西门子直流调速器装置
PLC的正数和负数
在数学中,负数和正数的区别,在于前面的正负号,例如-5和 5,而PLC中是不是也是这样的呢?并不是的。
PLC中,正负之分是通过高位(b15或b31)的值来判定的。高位为0表示正数,高位为1表示负数。
例如数据寄存器D0中高位b15=0,表示D0的值为正数;若b15=1,那么D0的值就为负数。
另外,除了高位用于区分正负之外,其他位(b14…b0或***…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位,即***~b23,而基数a占有23位,即b22~b0。它们的取值如下图所示,其中b0~***的值为0或1。
虽然二进制浮点数的表示方式比较复杂,但是能不能完全理解它,都不妨碍我们对浮点数的理解,对数值运算指令的运用。所以,不理解二进制浮点数的表方法,问题不大,能理解二进制浮点数本身就行。
例如在三菱PLC FX3U中想输入浮点数3.14,直接输入“E3.14”就行,但在三菱PLC FX2N中不能直接输入浮点数,想输入浮点数,就得先输入整数,再运用相应指令运算或转化。
- 西门子CPU200416F-2代理商 2023-11-04
- 西门子CPU224XPCN紧凑型单元 2023-11-04
- 贵港西门子CPU一级代理商 2023-11-04
- 西门子CPU模块416F-2模块控制器 2023-11-04
- 雅安西门子S7-1200代理商 2023-11-04
- 西门子CPU224XPCN模块控制器 2023-11-04
- 深圳触摸屏供应6AV2123-2GB03-0AX0 2023-11-04
- 眉山西门子S7-1200代理商 2023-11-04
- 西门子CPU416F-2控制器模块 2023-11-04
- 钦州西门子电源一级代理商 2023-11-04