概述

西门子 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 可以自动完成变量类型的识别和映射,让你不需要手动处理这些细节。