PLC中经常会使用二进制、十进制、十六进制等进制,在了解各个进制的意义之前,我们需要先了解计算机中数据的存储方式。
计算机中数据都是以二进制的形式进行存储和处理的,因为计算机内部由许多电子元件构成,这些电子元件只能识别两种不同电平状态,称为逻辑 0 和逻辑 1,用二进制数字 0 和 1 表示。
在PLC编程中,会经常用到十进制和十六进制,十进制即是我们常见的普通数字计数方式,而十六进制是把数码计数和数据表示的16进制系统,它由0~9、A~F共16个字符表示。十六进制中的A~F对应的十进制数是10~15。
进制转换在PLC程序编写过程中是非常常见的。以十进制转二进制为例,若需要在程序中把10转换为二进制,我们需要通过计算来得到。我们可以先将10除以2,商为5余数为0;再将5除以2,商为2余数为1;最后将2除以2,商为1余数为0。把这些余数倒过来就得到了10的二进制表示:1010。
同样地,如果需要将10转换为十六进制,这时需要用到十六进制的编号,用二进制表示出10,即1010,然后按照符号表对应,就能得到10的十六进制表示:A。
在一些需要处理大量数据量的程序中,如果使用十进制或者二进制的方式来处理数据,可能会降低程序的运行效率。这时,我们可以使用十六进制来优化程序。
以一个需求为例,假设有一个需要寻找设备传感器中数值为50的数据点的程序,如果使用十进制方式,需要进行50次比对才能找到该数据点。而如果使用十六进制,则只需要进行20次比对,因为10进制的50(或16进制的32)在二进制中对应的数值为0011 0010,而只需要比对它的第五位和第六位。
通过使用进制优化,可以极大地提升程序的运行效率和处理速度。
在PLC程序中,有时候需要对接收到的数据进行验证,以确保数据的合法性。这时候我们可以使用进制对数据进行验证。
例如,我们在接收到数据时,可以将数据按照十六进制形式进行分解,然后验证每个数位是否在0~9、A~F的范围内。如果有任何一个数位不在这个范围内,就说明这个数据是非法的。通过这种方式,可以有效地验证数据的合法性。