1.2.2 16位与32位
1.位、数位、字节、字和双字
在学习资料或和他人进行交流时,经常会碰到位、字节、字、双字等这些名词,这里对这些名词术语做一些介绍。这些知识是学习和掌握PLC所必备的,务必要正确理解和应用。
PLC处理的量有两种:一种是开关量,即只有“1”和“0”两种状态的量,一个开关量就是一位,输入端X和输出端Y均是一位开关量。另一种是模拟量,模拟量要通过一定的转换(模数转换),转换成开关量才能由PLC进行处理。这种由模拟量转换过来的开关量,可以把它称为数据量。数据量虽然也是开关量,但它的特点是它是由多位开关量组成的一个存储单元整体,这些多位开关量在同一时刻同时被处理。根据计算机发展的过程,产生了4位、8位、16位、32位等整体处理的数据存储单元,同时也形成了位、字节、字、双字等名词术语。
位(bit):数据量是由多个开关量组成的,其中每一个开关量也是只有两种状态,我们把每一个开关量称为数据量的位,也称二进制位(bit)。
数位(digit):由4个二进制位组成的数据量。因4位很快被8位代替,所以现在已经很少用到数位这个名词了。
字节(byte):由8个二进制位组成的数据量。8位机曾经存在很长一段时间,并由此派生出来一些高、低位的术语。如高4位(高址)、低4位(低址)、高位(MSD)、低位(LSD)等,如图1-7所示,b0为低位,b7为高位。
图1-7 字节组成
字(word):由16个二进制位组成的数据量。如图1-8所示,b0为低位,b15为高位。b7~b0为低8位(低字节),b15~b8为高8位(高字节)。
图1-8 字组成
双字(D):由32个二进制位组成的数据量。在FX系列PLC中,双字是由两个相邻的16位存储单元所组成的数据量整体。当用字来处理数据量时,碰到所表达的数不够或处理精度不能满足时,就用双字来进行处理。但是,在硬件中,并没有32位的整体存储单元(32位机才是32位存储单元)。同样,Dn为低16位,Dn+1为高16位,b31为高位,b0为低位,如图1-9所示。
图1-9 双字组成
关于位、字节、字、双字的含义,不同的PLC基本上是一致的。但关于位、字节、双字的关系处理,不同的PLC是不一样的。
例如,PLC的数据存储器容量,三菱FXPLC是以字计,而西门子则是以字节计。又如,在三菱FX系列PLC中,16位的字其高8位(b15~b8)在前,低8位(b7~b0)在后,而西门子PLC则相反,低8位(b15~b8)在前,高8位(b7~b0)在后。在三菱FX系列PLC中基本上没有字节的使用,数据量的处理统一按16位进行,而在西门子PLC中,可以以字节、字、双字等单位进行处理。
2.三菱FX系列PLC的双字处理
三菱FX系列PLC的数据寄存器为16位寄存器。16位数据量所表示的数值和数据的精度不能满足控制要求时,一般采用两个数据寄存器组成双字进行扩展。
三菱FX系列PLC的功能指令的助记符为16位操作的助记符,为表示16位和32位操作的区别,在助记符前加前缀“D”表示所执行的功能操作为32位操作。例如,加法指令的助记符ADD,如为ADD则为16位操作,如为DADD则为32位操作,两者不能混淆。但有些指令,例如,浮点运算指令,它没有16位操作,只有32位操作,因此,在应用时必须加D。
FX系列PLC规定,采用双字处理时,两个数据寄存器必须为编号相邻的数据寄存器。同时规定,编号大的为高16位,编号小的为低16位。例如,D0,D1可为双字寄存器,D1存高16位,D0存低16位。原则上讲,采用双字时,起始编号可以为偶号,也可以为单号,但建议采用偶号起始,如D2,D3;D20,D21等。在指令格式中,都用低位编号写入源址或终址。
【例1】说明指令DADD D0 D2 D10的操作功能。
ADD为加法指令,DADD表示32位加法操作,其操作功能将(D1,D0)的数与(D3,D2)的数相加,加的结果送到(D11,D10)中。
三菱FX系列PLC中不存在高于32位的操作,但在应用乘法指令时,结果会是一个64位数,其存储方式依然是编号紧紧相邻的4个数据寄存器,编号最小的为低位,编号最大的为高位。