1.5 数制与数据类型
1.5.1 数制
数制也称计数制,是用一组固定的符号和统一的规则来表示数值的方法。如在计数过程中采用进位的方法,则称为进位计数制。进位计数制有数位、基数、位权三个要素。数位,指数码在一个数中所处的位置。基数,指在某种进位计数制中,数位上所能使用的数码的个数,例如,十进制数的基数是10,二进制的基数是2。位权,指在某种进位计数制中,数位所代表的大小,对于一个R进制数(即基数为R),若数位记作j,则位权可记作Rj。
在三菱FX/Q系列PLC中使用到的数制有十进制、二进制、八进制和十六进制。
(1)十进制数
DEC(Decimal)即为十进制数,它有两个特点:1)数值部分用10个不同的数字符号0、1、2、3、4、5、6、7、8、9来表示;2)逢十进一。
例:123.45
小数点左边第一位代表个位,3在左边1位上,它代表的数值是3×100,1在小数点左面3位上,代表的是1×102,5在小数点右面2位上,代表的是5×10−2。
123.45=1×102+2×101+3×100+4×10−1+5×10−2
一般对任意一个正的十进制数S,可表示为:
S=Kn−1(10)n−1+Kn−2(10)n−2+…+K0(10)0+K−1(10)−1+K−2(10)−2+…+K−m(10)−m
其中:kj是0、1、…、9中任意一个,由S决定,kj为权系数;m,n为正整数;10称为计数制的基数;(10)j称为权值。
(2)二进制数
BIN(Binary)即为二进制数,它是由0(OFF)和1(ON)组成的数据,PLC的指令只能处理二进制数。它有两个特点:1)数值部分用2个不同的数字符号0、1来表示;2)逢二进一。
二进制数化为十进制数,通过按权展开相加法。
任意二进制数N可表示为:
N=±(Kn−1×2n−1+Kn−2×2n−2+…+K0×20+K−1×2−1+K−2×2−2+…+K-m×2−m)
其中:kj只能取0、1;m,n为正整数;2是二进制的基数。
(3)八进制数
OCT(Octal)即为八进制数,它有两个特点:①数值部分用8个不同的数字符号0、1、3、4、5、6、7来表示;②逢八进一。
任意八进制数N可表示为:
N=±(Kn−1×8n−1+Kn−2×8n−2+…K0×80+K−1×8−1+K−2×8−2+…+K-m×8−m)
其中:kj只能取0、1、3、4、5、6、7;m,n为正整数;8是基数。
因81=23,所以1位八进制数相当于3位二进制数,根据这个对应关系,二进制与八进制间的转换方法为从小数点向左向右每3位分为一组,不足3位者以0补足3位。
(4)十六进制数
HEX(Hexadecimal)即为十六进制数,它有两个特点:1)数值部分用16个不同的数字符号0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F来表示;2)逢十六进一。这里的A、B、C、D、E、F分别对应十进制数字中的10、11、12、13、14、15。
任意十六进制数N可表示为:
N=±(Kn−1×16n−1+Kn−2×16n−2+…+K0×160+K−1×16−1+K−2×16−2+…+K-m×16−m)
其中:kj只能取0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F;m,n为正整数;16是基数。
因161=24,所以1位十六制数相当于4位二进制数,根据这个对应关系,二进制数转换为十六进制数的转换方法为从小数点向左向右每4位分为一组,不足4位者以0补足4位。十六进制数转换为二进制数的转换方法为从左到右将待转换的十六制数中的每个数依次用4位二进制数表示。
(5)BCD(二制码十进制数)
BCD(Binary-Coded Decimal)为二制码十进制数或二—十进制代码,它是用4位二制数来表示1位十进制数中的0~9这10个数码。BCD码是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元素来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。
BCD码可分为有权码和无权码两类,有权BCD码有8421码、2421码、5421码,其中8421码就是最常用的;无权BCD码有余3码和格雷码。
8421 BCD码是最基本和最常用的BCD码,它和4位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。和4位自然二进制码不同的是,它只选用了4位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的6组代码不用。
Q系列PLC的CPU中能处理的数据长度为16位,所以存储在各个寄存器中数值的表示范围为0~9999。DEC、BIN、OCT、HEX和BCD的数值表示对比如表1-18所示。
表1-18 DEC、BIN、OCT、HEX和BCD的数值表示对比
1.5.2 数据类型
在FX/Q系列PLC的CPU中处理的数据类型主要有位数据、字数据、双字数据、实数型数据、字符串型数据等。
1. 位数据
位数据是指用一位为单位使用的数据,如触点或线圈,可表示的数值只有0或1。“位软元件”和“位指定字软元件”可以被当作位数据使用。
当直接使用位软元件时,只指定一个bit位。当使用位指定字软元件时,字软元件通过指定位号,使得指定位号的0或1被用于位数据。字软元件的位指定是通过指定“字软元件/位号”来完成的。例如D0的第3位(b3)指定为D0.3,D0的位12(b12)指定为D0.C。然而,对于定时器(T),累计定时器(ST),计数器(C)或索引寄存器(Z)而言,位指定不确定(如Z0.0就不存在),如图1-47所示。
图1-47 字软元件的位确定
2. 字数据
字数据是基本指令和应用指令常用的16位数据类型。在Q系列PLC中,CPU模块可以直接使用的字数据是十进制常数(−32768~+32767)和十六进制常数(0000~FFFF)。
由数位指定的位软元件和字软元件可以作为字数据使用。对于直接的访问输入(DX)和直接的访问输出(DY),字数据的指定不能通过数位指定来完成。
(1)当使用位软元件时,经过数据的位数指定,位软元件就可以处理字数据。位软元件的位数指定是“位号/位软元件的初始号”。位软元件的位数指定为K1~K4。对于链接直接软元件,指定是通过“J网络号\数位指定/位软元件的初始号”完成的。如X100到X10F指定网络号No.3,即J3\K4X100。
例如:将X0进行数位指定,则根据K1~K4的不同进行如表1-19所示指定。
表1-19 X0数位指定
(2)当使用字软元件时,在1个字单元(16位)中被指定,如图1-48所示。
图1-48 字软元件的位数指定
3. 双字数据
字数据是基本指令和应用指令常用的32位数据类型。在Q系列PLC中,CPU模块可以直接使用双字数据的是十进制常数(−2147483648~+2147483647)和十六进制常数(00000000~FFFFFFFF)。
经过数位指定的字软元件和位软元件可以当作双字数据使用。对于直接访问输入(DX)和直接访问输出(DY),双字数据的指定不能通过数位指定来完成。
(1)当使用位软元件时,位软元件的数位指定是通过“数位号/位软元件的初始号”完成的。位软元件的数位指定可以在4点(4位)单元中完成,可用于K1~K8的指定。对于链接直接软元件,指定是通过“J网络号\数位指定初始位软元件号”完成的。如X100到X11F指定网络号No.3,即J3\K8X100。
(2)当使用字软元件时,双字数据可以指定所使用的字软元件的低16位。在32位指令中,使用(指定软元件号)及(指定软元件号+1),如图1-49所示。
图1-49 32位指令使用16位软元件
4. 实数型数据
实数又称为浮点数,是用于基本指令和应用指令的浮点数据,它分为单精度浮点数和双精度浮点数。
单精度浮点数的数据长度为32位,其中最高位(bit31)为符号位,最低23位(bit22~bit0)为尾数,中间8位(bit30~bit23)为指数部分。最高位为“0”,表示该数为正数;最高位为“1”表示该数为负数。指数部分用BIN值表示2n的n值,实际值为2n−127。单精度浮点数表示的实数值=(−1)符号×1.[尾数部分]×2指数部分。
双精度浮点数的数据长度为64位,其中最高位(bit63)为符号位,最低52位(bit51~bit0)为尾数,中间11位(bit62~bit52)为指数部分。最高位为“0”,表示该数为正数;最高位为“1”表示该数为负数。指数部分用BIN值表示2n的n值,实际值为2n−1023。双精度浮点数表示的实数值=(−1)符号×1.[尾数部分]×2指数部分。
实数数据类型可以指定所使用的字软元件的低16位。实数指令使用(指定的软元件号)和(指定的软元件号+1),如图1-50所示。
图1-50 实数指令使用字软元件
5. 字符串型数据
字符串是基本指令和应用指令使用的字符型数据,它包含从指定字符起至表示字符串末尾的NULL码(00H)为止的所有数据,每个字符占用一个字软元件。
当指定字符是NULL码(00H)时,使用一个字来存储NULL码,如图1-51所示。
图1-51 NULL码的存储情况
当字符数是偶数时,使用(字符数/2+1)字,并且存储字符串和NULL码。例如,“ABCD”传送到以D0为起始的存储器中,则字符串“ABCD”将被存储到D0和D1中,NULL码将被存储到D2中,如图1-52所示。
图1-52 偶数时的存储情况
当字符数是奇数时,使用(字符数/1+2)字,并且存储字符串和NULL码。例如,“ABCDE”传送到以D0为起始的存储器中,则字符串“ABCDE”和NULL码依次存储到D0~D2中,如图1-53所示。
图1-53 奇数时的存储情况