北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章545 浏览8640833

PLC基础篇之数制及其表示方法

所谓“数制”,是指“”的表示方法,即计数的方法。数制采用进位的方法,当数值增加到该位能表示的最大值时,会将位数增加一位(进位)。按照进位的规则进行计数的数制,称为进位数制。常见的进位数制有:二进制(Binary)、十进制(Decimal)和十六进制(Hexadecimal)。

cover.jpg

人类的思维习惯于十进制(Decimal),所谓“逢十进一”。这个没什么好说的,地球人都知道。

本文要介绍的是PLC编程相关的概念,因此要重点介绍的是二进制(Binary)和十六进制(Hexadecimal)。

现代计算机普遍采用冯·诺伊曼(John von Neumann,1903~1957)的体系结构。美籍匈牙利科学家冯·诺伊曼根据电子元件的双稳特性,提出数字计算机应采用二进制进行存储和运算。

二进制(Binary)只有“0”和“1”两个数码,可以表示数字量的两种不同的状态,比如触点的吸合与断开,线圈的通电与断电等等。在PLC的存储单元中,可以使用一个“位(bit)”来表示“0”或者“1”两种值,8个“位”组成一个字节(Byte)。以西门子S7系列PLC为例,可以使用STL语句 “S  Q0.0”将Q0.0置为“1”。其中,“Q0.0”中的“Q”表示输出过程映像区(Output),第一个“0”表示第“0”个字节,第二个“0”表示该字节的第“0”位。当该指令执行后,PLC的输出模块的Q0.0将会有信号输出,它连接的继电器线圈会通电,常开触点吸合,接通相应的电路。

二进制采用“逢二进一”的规则,可以使用多位二进制数来表示数值。将最低位记为第0位,从右往左的第n位,其权值(数制中某位上的1所代表的数值)为2的n次方。

binary.jpg

在西门子S7系列PLC中,二进制常数以“2#”开始,比如:2#1101。二进制数可以转换成十进制数,转换方法是把各个位上的数乘以其权值,然后相加。比如2#1101,等于1乘以2的3次方(=8),加上1乘以2的2次方(=4),加上1乘以2的0次方(=1),等于十进制13。

nunber_binary.jpg

由于二进制数位数太多,编程时书写起来不太方便。为了简化书写,同时保持二进制宜于“位”操作的特性,人们把四个二进制位组成一组,用来表示一个数。由于四个二进制位所成表示的最大数是2#1111(=15),于是就出现了十六进制的数制。十六进制的数码除了包括十进制的0~9之外,还包括A~F六个字母。A等于十进制的10,依次递增,F等于10进制的15。

十六进制的表示方法比较多,在C/C++中用前缀"0x"表示,比如上一篇文章中提到的“0x0384”;在VB中使用前缀"&H"表示,比如“&H1A2B”;在西门子S7系列PLC中,使用“16#”来表示16进制数。但通常情况下,在表示16进制数的时候,需要同时指出它的数据类型(后续会有专门文章介绍数据类型相关知识),比如B#16#56表示16进制数56,它的数据类型是字节(Byte)。

十六进制数可以很方便的转换成二进制数,只需要把每一位数转成二进制数,然后组合起来即可。比如B#16#56,其中16#5=2#0101,16#6=2#0110,所以16#56=2#1010110,如下图:

h2b.jpg

程序设计中还用到一种编码,称为BCD码。BCD是英文"Binary-Coded Decimal"的缩写,这种编码的数制是十进制。BCD码使用四个二进制数来表示一位十进制数,每一位允许的范围是2#0000~2#1001,也就是十进制的0~9,采用“逢十进一”的规则。

bcd.jpgBCD码是有符号的,用最高位来表示符号,“0”表示正数,“1”表示负数。对于一个四位的BCD码而言(16个二进制位),能表示的范围是“-999~+999”。为什么呢?其实比较好理解,你想,最高位是符号位,那么就剩下了三位,由于每一位BCD码,其本质是十进制数,所以每一位最大的数都是9,所以三位数最大就是999,加上符号,所以四位BCD码能表示的十进制数的范围是“-999~+999”。同样的道理,八位BCD码(32个二进制位)能表示的十进制数的范围是“-9999999~+9999999”。

好了,关于PLC编程需要的数制的知识就先聊到这里了。相关参考文章:

PLC基础篇之编程语言的魅力

PLC基础篇之PLC的诞生及工作原理

给你讲个来自《格列佛游记》的计算机故事

扫描关注微信公众号:


PLC基础篇之数制及其表示方法

来源:本站|   大小:293 KB|   下载次数:1963次

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论