概述
西门子 S7-200 SMART PLC 的变量系统由数据类型和存储区域两个维度构成。理解它们之间的关系,对于正确使用变量、避免地址冲突、优化内存布局至关重要。
一、数据类型
S7-200 SMART 支持以下 8 种数据类型:
| 类型 | 大小 | 范围 | 说明 |
|---|---|---|---|
| Bool | 1 位 | 0 或 1 | 布尔型,用于开关量 |
| Byte | 8 位 | 0 ~ 255 | 无符号字节 |
| Word | 16 位 | 0 ~ 65535 | 无符号字 |
| Int | 16 位 | -32768 ~ 32767 | 有符号整数 |
| DWord | 32 位 | 0 ~ 4294967295 | 无符号双字 |
| DInt | 32 位 | -2147483648 ~ 2147483647 | 有符号双整数 |
| Real | 32 位 | ±1.18e-38 ~ ±3.40e+38 | 浮点数(IEEE 754) |
| String | 可变 | 最多 255 字符 | 字符串 |
如何从地址判断数据类型?
在 S7-200 SMART 中,数据类型通过地址中的类型字符体现:
VD100 → V 区,D 表示 DWord(双字),地址 100
VW100 → V 区,W 表示 Word(字),地址 100
VB100 → V 区,B 表示 Byte(字节),地址 100
| 类型字符 | 数据类型 | 示例地址 |
|---|---|---|
| D | DWord / DInt / Real | VD100, MD20 |
| W | Word / Int | VW100, AIW0 |
| B | Byte | VB100, SMB0 |
| 无(位地址) | Bool | M10.0, Q0.1 |
二、存储区域
S7-200 SMART 将内存划分为不同的存储区域,每个区域有不同的用途:
V 区 — 变量存储区(Variable Memory)
- 用途:用户程序中最大、最灵活的数据存储区
- 容量:取决于 CPU 型号(SR20 约 8KB,SR60 约 20KB)
- 常见用途:模拟量数据、计算中间值、配方数据、配方参数
- 地址示例:VD100, VW200, VB300
M 区 — 内部继电器(Internal Memory)
- 用途:存储开关量状态(位操作)或小容量数据
- 容量:32 字节(M0.0 ~ M31.7)
- 常见用途:中间状态标志、运行模式标志、报警标志
- 地址示例:M10.0(位), MW10(字), MD10(双字)
I 区 — 输入继电器(Input)
- 用途:读取外部输入信号(传感器、按钮、限位开关等)
- 容量:取决于 CPU 型号
- 特点:只读(程序不能修改输入状态)
- 地址示例:I0.0, I0.1, IW0
Q 区 — 输出继电器(Output)
- 用途:控制外部输出设备(继电器、电磁阀、指示灯等)
- 容量:取决于 CPU 型号
- 特点:可读写
- 地址示例:Q0.0, Q0.1, QW0
AI 区 — 模拟量输入(Analog Input)
- 用途:读取模拟量输入信号(0-10V, 4-20mA, 0-20mA)
- 分辨率:12 位(0 ~ 27648 或 0 ~ 32000)
- 地址示例:AIW0, AIW2, AIW4
- 注意:AI 区只能以字(Word)方式访问,地址间隔 2
AQ 区 — 模拟量输出(Analog Output)
- 用途:输出模拟量信号
- 地址示例:AQW0, AQW2
- 注意:同 AI,只能以字方式访问
SM 区 — 特殊寄存器(Special Memory)
- 用途:系统状态、时钟、通讯状态、错误代码等
- 特点:只读或系统定义,用户不应随意修改
- 地址示例:SM0.0(始终导通), SMB0(系统状态位)
三、地址格式详解
位地址(Bool 类型)
格式:{区域}{字节地址}.{位号}
M10.0 → M 区第 10 字节的第 0 位
Q0.1 → Q 区第 0 字节的第 1 位
I2.7 → I 区第 2 字节的第 7 位
V100.3 → V 区第 100 字节的第 3 位
位号范围:0 ~ 7
字节/字/双字地址
格式:{区域}{类型字符}{数字}
VB100 → V 区字节地址 100(Byte)
VW102 → V 区字地址 102(Word/Int)
VD104 → V 区双字地址 104(DWord/DInt/Real)
MB20 → M 区字节地址 20
MW20 → M 区字地址 20
IW0 → I 区字地址 0
AIW2 → AI 区字地址 2
四、地址重叠与对齐
什么是地址重叠?
在 V 区,不同大小的变量可能重叠(共享相同的物理内存):
VD100 占用字节 100, 101, 102, 103 ← 4 个字节
VW100 占用字节 100, 101 ← 2 个字节
VW102 占用字节 102, 103 ← 2 个字节
VB100 占用字节 100 ← 1 个字节
VB101 占用字节 101 ← 1 个字节
重要:如果 VD100 和 VW102 同时使用,它们会共享字节 102 和 103。修改其中一个会影响另一个!
如何避免地址冲突?
推荐做法:不同变量之间留出足够的间隔
VD100 → 占用 100-103
VD104 → 占用 104-107(与 VD100 没有重叠)
VD108 → 占用 108-111
或使用符号表地址自动分配
五、类型映射矩阵
在触摸屏组态中,S7-200 SMART 的变量类型需要映射到目标系统的类型:
| S7-200 SMART | MCGS 变量类型 | MCGS 数据类型描述 |
|---|---|---|
| Bool | INTEGER | 通道的第XX位 |
| Byte | SINGLE | 8位 无符号二进制 |
| Word | SINGLE | 16位 无符号二进制 |
| Int | SINGLE | 16位 有符号二进制 |
| DWord | SINGLE | 32位 有符号二进制 |
| DInt | SINGLE | 32位 有符号二进制 |
| Real | SINGLE | 32位 浮点数 |
| String | SINGLE | 8位 字符串 |
总结
理解 S7-200 SMART 的变量类型和存储区是 PLC 编程的基础。掌握这些知识,你可以:
- 正确选择合适的变量类型,避免数据溢出
- 合理规划内存布局,防止地址冲突
- 在触摸屏组态时准确映射数据类型和地址
使用 SMART Exporter 可以自动完成变量类型的识别和映射,让你不需要手动处理这些细节。