前言因为电路状态只有“开”和“关”两种状态,为了在电路中进行数字计算,所以在计算机(电路)中使用了二进制计数系统,该系统只使用0和1。在存储器中,也是使用二进制的计数系统。二进制是以2为基的数制。在二进制系统中,用于表示高和低的两个逻辑电平分别是逻辑1和逻辑0。在数字电路中,电平表示位(bit)。由于二进制用于所有的数学系统,所以就需要有一种方式将我们常用的十进制转化为二进制。另外,为了将数字电路输出的二进制转化为人们可使用的十进制形式,还需要一种将二进制转化为十进制的方法。前言本章节就简单讲述以下内容:–PLC中常用的数制;–数制之间的相互转化方式;–各种数制在PLC中的存储方式。数制在PLC中,常用的数制有以下几种:–十进制–二进制–八进制–十六进制–BCD码–BIN码–格雷码(不做讲解)–7段码(不做讲解)下面分别讲述这几种编码的表述形式与转化方式十进制回顾一十进制是一个位权计数系统;所谓位权计数系统,意思就是每一个数字所在的位置都有一个特定的权(值)。例如:数字5根据小数点的不同位置代表不同的值。数字0.5,5,500都包含一个5,但是每个5的位置不同,所以这几个数大小就不一样。在十进制中,使用0,1,2,3,4,5,6,7,8,9十个基本符号,每个符号称为一个数位。例如:60328.4的计算方法:6x104+0x103+3x102+2x101+8x100+4x10-1十进制计数系统回顾二在本例中将每个位置的权值相加,用来确定十进制的值。6x104+0x103+3x102+2x101+8x100.+4x10-1=60328.4需要注意的是,本例中0没有值,但是对于位权而言,还需要0作为一个占位符。在上面的讲述中,由于大家都已经习惯于使用十进制思考,所以这样处理就显得毫无必要,但是对于下面要讲到的数制来说,该处理过程就非常有必要了。产生这种必要性的原因是人们不习惯用2,8,16作为基数的系统进行思考。在数字60328.4中最高位是6,最低位是4,6在数字的最左边,4在数字的最右边,小数点将整数与小数部分分割开来;实际上,所有数制系统都是类似的!二进制计数系统一与十进制系统一样,二进制系统也是一个位权计数系统。由于二进制系统只使用0和1这两个基本符号,所以它是一个基数为2的系统。它的位权如下表:二进制系统的计算二进制系统的计算:二进制系统的计算和十进制类似。例如:0011+0101=1000;0111+0001=1000。在右表,是十进制与二进制的一个对照表二进制与十进制的转换:加权求和法如果必须确定二进制数字对应的十进制数;可以采用加权求和的方法来解决。该方法就是将每一位为1的位权值累加起来。例如:将1101转换为十进制。•1101(2)=1X23+1X22+0X21+1X20=13(10)二进制与十进制的转换:基数相乘法一在将不同的数制的数字进行互相转换时,还可以用到另一种重要的方法称之为基数相乘法。举例如下:例如:将11100(2)转换为十进制数。第一步:将0+最高位第二步:和乘以2第三步:将乘积加到下一位第四步:从第二步重复一直到最后一位解((((0+1)X2+1)X2+1)X2+0)X2+0=28在以上例二进制解法中由于重复使用了二进制计数系统的基数和值相乘的运算,所以称之为基数相乘法。二进制与十进制的转换:基数相乘法二例如:将100101(2)转换为十进制数。100101(2)=370+1=1;1×2=2;2+0=2;2×2=4;4+0=4;4×2=8;8+1=9;9×2=18;18+0=18;18×2=3636+1=37需要注意的是,如果需要对小数转换,需要用到基数相除法。二进制与十进制的转换:基数相除法一例如:将0.11(2)转换为对应的十进制数。第一步:从将要转换的小数的最低位开始第二步:将最低位数除以2第三步:将商转为前面的小数第四步:重复第二步一直到达小数点1/2=0.5;1.5/2=0.750.11(2)=0.75二进制与十进制的转换:基数相除法二例如:将0.101(2)转换为十进制数解:1/2=0.50.5/2=0.251.25/2=0.6250.101(2)=0.625十进制与二进制的转换:基数相除法一能够将十进制转换为二进制同样重要。基数相除法可以用在将十进制整数转换为二进制数。基数相除法进行转换的过程为:第一步:将十进制数除以2第二步:将得到的商的整数部分放到刚除过数的左边。第三步:将得到的余数放到刚除过数的上边。第四步:将得到的商除以2,重复第二步一直到商为1十进制与二进制的转换:基数相除法二例如:将14转换为二进制数字14/2=7……07/2=3……13/2=1……11/2=0……1•所以14=1110(2)十进制与二进制的转换:基数相除法三例如:将92转换为二进制数92/2=46……046/2=23……023/2=11……111/2=5……15/2=2……12/2=1……01/2=0……1•92=1011100(2)十进制与二进制的转换:基数相乘法一基数相除法用于十进制转换为二进制,将十进制的小数部分转换为二进制的时候就要用基数相乘法。例如:将0.875转换为二进制数0.875×2=1.750……10.75×2=1.5……10.5×2=1……1•0.875=0.111(2)十进制与二进制的转换:基数相乘法二例如:将0.375转换为二进制数0.375×2=0.750……00.75×2=1.5……10.5×2=1……1•0.375=0.011(2)进制转换:作业一一:将下列二进制数转换为对应的十进制数•1、101(2)•2、1111(2)•3、1101(2)•4、1010100(2)•5、100001(2)•6、11101110(2)7、11.11(2)进制转换:作业二一:将下列十进制数转换为对应的二进制数•1、4•2、10•3、15•4、165、206、1407、3758、23.56259、12.375八进制与十六进制在使用中人们很快发现,对任何数字使用二进制是一项十分可怕的事情;数字系统能够非常容易的处理二进制数,而人类面对一大串的0和1常常会头晕目眩。因此,在使用数字系统中还经常使用另外两种计数系统。8进制和十六进制。8进制是一个以8为基的计数系统,该系统只使用0~7这8个数字。满8就进位。十六进制是一个以16为基的计数系统,该系统使用数字0~9和字母A~F来计数。8进制和十六进制提供了书写大量二进制数据的一种简化方法。八进制的位权八进制就是以8为基数的计数系统;这种计数系统使用0,1,2,3,4,5,6,7。八进制的位权如下:八进制到十进制的转换:加权求和法加权求和的方法同样也适用于八进制。例如:将26(8)转换为十进制数。26(8)=2×81+6×80=16+6=22八进制到十进制的转换:基数相乘法基数相乘法同样也适用于八进制到十进制整数部分的转换;转换的过程与二进制到十进制的转换基本相同;唯一不同的是基数是8。使用基数相乘法将26(8)转换为十进制数。•26(8)=((2+0)×8)+6=22八进制到十进制的转换:基数相乘法例如:使用基数相乘法将377(8)转换为十进制数。377(8)=((3+0)×8+7)×8+7=(24+7)×8+7=31×8+7=248+7•=255八进制到十进制的转换:基数相除法对于八进制的小数部分,同样适用于基数相除法,将基数改为8即可。例如:将0.625(8)转换为十进制数。5/8=0.625(2+0.625)/8=0.328125(6+0.328125)/8=0.7910.625(8)=0.791十进制到八进制的转换:基数相除法同样的,十进制到八进制转换时整数部分使用基数相除法。例如:将100转换为八进制数。100/8=12……412/8=1……4……1100=144(8)十进制到八进制的转换:基数相除法例如:将79转换为8进制数79/8=9……79/8=1……1……179=117(8)八进制数到二进制数的转换一使用八进制的一个主要原因,也是八进制的一个主要优点就是八进制可以方便的转换为二进制,二进制也可以方便的转换为八进制。要将八进制转换为二进制,可以把每一位八进制的数转换为三个一组的二进制数,然后连接起来就是要转换的二进制数。例如:将144(8)转换为二进制数。•1=001(2)•4=100(2)•4=100(2)•144(8)=001100100(2)八进制到二进制的转换二例如:将4075(8)转换为二进制数。•4=100(2)•0=000(2)•7=111(2)•5=101(2)•4075(8)=100000111101(2)上例中,将二进制数字按照三位一组书写的简单方法就是所谓的二进制编码的八进制数,简称BCO。二进制数到八进制数的转换如果把用于获取BCO数的计算过程颠倒过来,就可以将二进制数直接转换为对应的八进制数。例如:将10101110(2)转换为八进制数。010101110(2)=256(8)例如:将1111.11(2)转换为八进制数。001111.110(2)=17.6(8)注意:在含小数的二进制数字转换过程中,以小数点为分界线,小数点右边的不够三位的在右边补0,小数点左边的不够三位在左边补0。八进制与十六进制习题一在17(8)后面的数字是什么?将下列八进制数转换为十进制数。•100(8);26(8);17(8)•1251(8);567(8)将下列十进制数转换为八进制数10;26;100;331;1001;八进制与十六进制习题二将下列的八进制数转换为二进制数。1:10(8)2:32(8)3:147(8)将下列的二进制数转换为八进制数1:101110111(2)2:1101010000(2)3:1011.1(2)十六进制数:介绍随着计算机技术的不断进步,更快的速度,更长的字节和地址长度也不断的出现;同样道理,PLC作为计算机技术的一个分支,同样随计算机技术的变化而不断的变化,从最初的4位到8位到32位。现在我们要学习的三菱的FX系列与西门子的S7-200系列都属于8位机,但是高级一点的PLC系统已经是16位机了,更高级的新式的机型已经是32位机。但是个人PC已经发展到64位了,我想不远的将来,PLC上也要应用的64位系统。十六进制数:位权十六进制数需要十六个字符。除了0~9这十个字符外,还使用了字母A~F,以满足十六个字符的需求。在十六进制中,这些字符不能看为字母,应该将其看为数字。例如A(16)=10;B(16)=11等。十六进制数到十进制数的转换:基数相乘法一同样,基数相乘法也可以应用到十六进制转换为十进制的过程中。例如:将1F(16)转换为十进制数。1F(16)=((0+1)×16+15)=16+15=31注意:要想熟练的进行十六进制数的转换,必须记住A~F所对应的十进制数,本例中F(16)=15十六进制到十进制的转换:基数相乘法二例如:将1CE(16)转换为十进制数。1CE(16)=((0+1)×16+12)×16+14=462=28×16+14=448+14=462对于小数点部分,可以使用基数相除法。将0.B4(16)转换为对应的十进制数。4/16=0.2511.25/16=0.7030.B4(16)=0.703十进制到十六进制的转换:基数相乘法十进制到十六进制转换,整数部分是基数相除法,小数部分是基数相乘法。例如:将692转换为十六进制数。692/16=43……443/16=2……B……2•692=2B4(16)此处应该注意的是11等于B,而不应