主题
数值基本知识
PLC内部采用二进制码处理数据,了解数值的基本概念对编程至关重要。
二进制数
计算机内部以"信号电平"的"低"或"高"两个状态分别对应二进制的"0"或"1"。1位二进制数的计算:
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10(有进位)| 位数 | 可表示的最大无符号数 | 应用说明 |
|---|---|---|
| 8 bit | 255 | 简单控制系统 |
| 16 bit | 65,535 | PLC元件常用数据宽度(1 Word) |
| 32 bit | 4,294,967,295 | ARM处理器,双字(2 Word) |
| 64 bit | 18,446,744,073,709,551,615 | 通用计算机 |
PLC元件中,常用的数据宽度是1 Word(16 bit);部分计数器为2 Word(32 bit)。
十六进制
当二进制位数较多时,阅读和书写都不方便。将每4位二进制数分为一组,用1个数来代表,就形成了十六进制数(HEX):
| 十进制 | 0 | 1 | 2 | ... | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 十六进制 | 0 | 1 | 2 | ... | 9 | A | B | C | D | E | F |
一个16 bit二进制数用4位十六进制数表示,例如 1111000011110000 = H F0F0,可读性大为提高。
八进制
在PLC中,X输入端口和Y输出端口的编号采用八进制。八进制数字范围为0~7,不存在8和9。例如X端口的编号序列为:X0, X1, X2, X3, X4, X5, X6, X7, X10, X11, ...
端口编号注意
X/Y端口编号使用八进制,X7之后是X10(而非X8),Y7之后是Y10(而非Y8),这是初学者容易出错的地方。
BCD码
BCD码(Binary-Coded Decimal)用4位二进制数表示1位十进制数,每位的数值范围为0~9(不存在A~F),便于驱动数码管等显示设备。
| 十进制数 | BCD码 | 十六进制(HEX) |
|---|---|---|
| 0 | 0000 | 0 |
| 9 | 1001 | 9 |
| 10 | 0001 0000 | A |
| 99 | 1001 1001 | 63 |
BCD与HEX转换
PLC内部按HEX格式进行数据计算。驱动数码管显示时,需要将HEX转为BCD码;读取十进制拨码开关时,需要将BCD码转为HEX。PLC提供了 BCD 和 BIN 指令完成这两种格式的互转:
[BCD D0 D10]:将D0中的HEX值转为BCD码存入D10[BIN D10 D0]:将D10中的BCD码转为HEX值存入D0
有符号数与无符号数
有符号数
PLC内部的寄存器D、32 bit计数器C以及四则和函数运算指令都支持有符号数运算。最高位作为符号位:0表示正数,1表示负数(以补码表示)。
| 数据宽度 | 符号位 | 取值范围 |
|---|---|---|
| 16 bit(1 Word) | bit15 | -32,768 ~ 32,767 |
| 32 bit(2 Word) | bit31 | -2,147,483,648 ~ 2,147,483,647 |
补码示例:
HFFFF(16 bit):逐位取反得H0000,加1得H0001,即表示 -1H8000(16 bit):逐位取反得H7FFF,加1得H8000,即表示 -32,768(最小负值)
无符号数
无符号数没有符号位,默认为正数。16 bit无符号数的取值范围是 0 ~ 65,535。进行逻辑运算(AND、OR、XOR等)时,操作数按无符号数处理。
运算注意
进行数值比较大的加减运算时,要注意符号的处理,尤其是出现进位或借位时,需判断"借位标志"和"进位标志",否则可能导致计算结果出错。
浮点数
PLC中的浮点数采用 IEEE 754 标准,占用32 bit存储空间,用于近似表示任意实数。
浮点数由以下部分组成:
| 组成部分 | 说明 |
|---|---|
| 数符 | 1 bit,表示正/负 |
| 阶码 | 8 bit,表示指数 |
| 尾数 | 23 bit,表示有效数字 |
类似于科学记数法:m x 2^e,例如 988436216 可表示为 9.8844 x 10^8。
| 参数 | 值 |
|---|---|
| 精度 | 约7位有效数字 |
| 正数范围 | 约 1.175 x 10^-38 ~ 3.403 x 10^38 |
| 负数范围 | 约 -3.403 x 10^38 ~ -1.175 x 10^-38 |
浮点数使用
在PLC中有模拟量信号处理和运算时,可能用到浮点数。实际使用时不需要对浮点格式有特别了解,计算机会自动处理格式转换。但需注意浮点运算存在精度损失,不适合需要精确比较的场合。