Skip to content

数值基本知识 ​

PLC内部采用二进制码处理数据,了解数值的基本概念对编程至关重要。

二进制数 ​

计算机内部以"信号电平"的"低"或"高"两个状态分别对应二进制的"0"或"1"。1位二进制数的计算:

0 + 0 = 0    0 + 1 = 1    1 + 0 = 1    1 + 1 = 10(有进位)
位数可表示的最大无符号数应用说明
8 bit255简单控制系统
16 bit65,535PLC元件常用数据宽度(1 Word)
32 bit4,294,967,295ARM处理器,双字(2 Word)
64 bit18,446,744,073,709,551,615通用计算机

PLC元件中,常用的数据宽度是1 Word(16 bit);部分计数器为2 Word(32 bit)。

十六进制 ​

当二进制位数较多时,阅读和书写都不方便。将每4位二进制数分为一组,用1个数来代表,就形成了十六进制数(HEX):

十进制012...9101112131415
十六进制012...9ABCDEF

一个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),这是初学者容易出错的地方。

X/Y 端口八进制编号示意

BCD码 ​

BCD码(Binary-Coded Decimal)用4位二进制数表示1位十进制数,每位的数值范围为0~9(不存在A~F),便于驱动数码管等显示设备。

十进制数BCD码十六进制(HEX)
000000
910019
100001 0000A
991001 100163

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,即表示 -1
  • H8000(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中有模拟量信号处理和运算时,可能用到浮点数。实际使用时不需要对浮点格式有特别了解,计算机会自动处理格式转换。但需注意浮点运算存在精度损失,不适合需要精确比较的场合。


LPPLC 工业物联网云平台 · 软硬件与云平台全栈自研