了解中控系统里 “字节变量” 和 “自定义变量” 的区别、用法以及它们之间的关系,我会从新手易懂的角度帮你梳理清楚这两个核心概念。
一、核心概念解析
1. 字节变量(Byte Variable)
字节变量是中控系统最基础、最底层的变量类型,本质上是占用 1 个字节(8 位)存储空间 的数值型变量,取值范围通常是 0-255(无符号)或 -128~127(有符号)。
特点:
系统原生支持,是硬件和底层通讯的 “最小数据单元”(比如串口、Modbus 通讯中传输的基础数据);
直接映射硬件寄存器 / 地址(如 PLC 的输入输出寄存器、串口设备的字节地址);
不可改名、不可自定义类型,只能按系统规定的地址 / 编号使用(比如
B0、B1、VB100等)。典型用途:
存储传感器的原始数据(如温度采集的 8 位数值);
控制硬件开关状态(1 个字节的某一位表示 “开 / 关”);
与外设(如变频器、仪表)进行字节级的数据交互。
2. 自定义变量(Custom Variable)
自定义变量是你根据业务需求手动创建的变量,是对底层字节变量的 “封装” 或 “抽象”,可以理解为 “给复杂逻辑起的好记名字”。
特点:
可自定义名称(如
车间温度、风机转速、门禁状态)、类型(除了字节,还可定义整数、浮点数、字符串等);可以关联 1 个或多个字节变量(比如用 2 个字节变量拼接成 1 个 16 位整数的自定义变量);
面向业务逻辑,可读性强,方便编程和维护。
典型用途:
存储业务相关的数值(如
设定温度=25℃,无需关心底层对应哪个字节);封装复杂数据(如用 4 个字节变量组合成 1 个 32 位浮点数的 “水压值”);
逻辑判断(如
if 风机运行状态=1 then 启动报警)。
二、实际应用示例(以常见中控软件如组态王 / MCGS 为例)
场景:读取温度传感器数据(传感器输出 1 字节原始值,对应 0-255℃)
1. 先定义字节变量(底层)
系统自动分配字节地址,比如 VB100(V 区字节变量,地址 100),用于接收传感器的原始字节数据。
2. 创建自定义变量(业务层)
表格
| 自定义变量名 | 类型 | 关联字节变量 | 换算规则 |
|---|---|---|---|
| 车间温度 | 浮点数 | VB100 | 车间温度 = VB100 × 1.0 |
3. 代码 / 组态示例(MCGS 为例)
python
运行
# 1. 读取底层字节变量(VB100)的原始值Bytevalue = !VB100 # MCGS中!表示读取变量值# 2. 赋值给自定义变量(封装成业务可读的变量)自定义变量_车间温度 = Bytevalue # 若有换算,可加公式:Bytevalue * 0.1# 3. 业务逻辑使用(比如温度超过50℃报警)if 自定义变量_车间温度 > 50: !报警灯 = 1 # 控制硬件输出字节变量else: !报警灯 = 0
三、关键区别对比
表格
| 维度 | 字节变量 | 自定义变量 |
|---|---|---|
| 本质 | 底层存储单元(1 字节) | 业务层逻辑变量 |
| 命名 | 系统固定(如 B0、VB100) | 自定义(如 “车间温度”) |
| 类型 | 仅字节型(0-255) | 可定义整数、浮点数、字符串等 |
| 关联性 | 直接映射硬件 / 寄存器 | 关联 1 个或多个字节变量 |
| 可读性 | 差(需记地址) | 强(见名知意) |
| 用途 | 硬件通讯、底层数据存储 | 业务逻辑、人机交互 |
总结
字节变量是基础:中控系统的 “底层语言”,直接对接硬件,是数据存储和传输的最小单元;
自定义变量是封装:为了方便编程和维护,将字节变量(或多个字节变量)封装成贴合业务的变量,是你实际编程时主要使用的变量类型;
核心关系:自定义变量最终都会转化为字节变量的读写操作,字节变量是自定义变量的 “物理载体”。

