[三菱] 担心学PLC基础差,那咱们就先来补补基础吧~

[复制链接]
查看69001 | 回复0 | 2024-8-10 16:40:18 | 显示全部楼层 |阅读模式


昨日,易维通联合【方正智芯】【上手PLC】共同开发的“PLC学习训练营”已正式开始接受报名了,感兴趣的朋友可以点击蓝色标题,了解详情。

Annie导读

有些朋友在刚开始打算学习一门技能时,总是会担心自己基础差,可能学不了,跟不上。针对这种情况,Annie想说,如你所愿,你肯定学不好。毕竟没有勇气开始,就一定不会有成功。

但要如何帮助大家克服这种担心基础差的消极心理呢?其实,也简单,那就从最基础的学起呗。哈哈,大不了,咱从1+1开始!

Annie今天推荐的文章就是北岛李工为这类朋友量身定制的PLC基础系列之数制及其表示方法。抓紧学起来吧~

所谓“数制”,是指“数”的表示方法,即计数的方法。数制采用进位的方法,当数值增加到该位能表示的最大值时,会将位数增加一位(进位)。按照进位的规则进行计数的数制,称为进位数制。

常见的进位数制有:

二进制(Binary)

十进制(Decimal)

十六进制(Hexadecimal)



人类的思维习惯于十进制(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次方。



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



由于二进制数位数太多,编程时书写起来不太方便。为了简化书写,同时保持二进制宜于“位”操作的特性,人们把四个二进制位组成一组,用来表示一个数。由于四个二进制位所成表示的最大数是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,如下图:



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



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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则