2. 西门子PLC硬件与数据基础
做生产数据采集,第一步不是写通信程序,而是先弄清楚“数据到底住在PLC的哪里”。S7-1200/1500的CPU内部并不是一片扁平的存储空间,而是按功能划分为若干区域,每个区域有各自的访问方式、掉电保持特性和寻址语法。如果地址认知错了,采集程序即使能连上PLC,读回来的也可能是错位、过期或根本不存在的数据。
一、硬件结构:从CPU到存储卡
S7-1200与S7-1500在硬件组织上思路一致,但规模差异明显。以S7-1200 CPU 1214C DC/DC/DC为例,本体集成14点DI、10点DO、2点AI,本体右侧可扩展最多8个信号模块(SM)或通信模块(CM/CP);S7-1500则采用机架式结构,CPU带显示屏和诊断功能,通过U型连接器挂接电源、DI/DO/AI/AO、工艺模块和通信模块,扩展能力更强。
对数据采集而言,真正关键的是CPU内部的三个部分:工作存储器(Work Memory)存放运行中的程序和数据;装载存储器(Load Memory)通常由SIMATIC存储卡承担,保存离线项目和配方;保持存储器(Retentive Memory)用于掉电后仍需保留的数据。S7-1200的存储卡是必需的,S7-1500则内置装载存储器,存储卡主要用于配方和归档。采集程序读取的是工作存储器中的实时值,因此必须保证采集点位于CPU可访问的存储区内。
二、存储区划分:I、Q、M、DB、L
S7-1200/1500的存储区可归纳为五类,采集时最常用的是I、Q、M和DB:
- 过程映像输入区(I):每个扫描周期开始时从物理输入模块刷新,地址如I0.0、IB0、IW0、ID0。采集数字量状态时读I区,但要注意它反映的是扫描周期开始时的值。
- 过程映像输出区(Q):扫描周期结束时写入物理输出模块,地址如Q0.0、QB0、QW0。采集设备动作状态时,Q区可反映PLC下发的控制结果。
- 位存储区(M):内部中间继电器,地址如M0.0、MB0、MW0、MD0。常用于标志位、状态字和中间结果,部分M区可设为掉电保持。
- 数据块(DB):结构化数据的核心载体,分为全局DB和背景DB。采集的工艺参数、产量计数、配方数据通常都放在全局DB中。
- 局部数据区(L):仅在OB、FC、FB内部有效的临时变量,随调用结束而释放,不能作为跨周期采集的数据源。
需要特别区分物理地址与过程映像地址。I区是过程映像,而通过“直接访问”语法(如PIB、PIW、PID)可以绕过过程映像直接读物理输入模块,适合需要立即读取的场合。采集程序中若对实时性要求高,应明确使用哪种访问方式,并在注释中标注。
三、数据类型:决定读取长度与解析方式
数据类型直接决定采集时读取的字节数和上位机的解析方式。S7-1200/1500常用数据类型如下:
| 数据类型 | 长度 | 取值范围/说明 | 采集用途 |
|---|---|---|---|
| Bool | 1位 | 0或1 | 设备启停、报警状态 |
| Byte/Word/DWord | 8/16/32位 | 无符号整数 | 状态字、计数器 |
| Int/DInt | 16/32位 | 有符号整数 | 温度、压力原始值 |
| Real | 32位 | IEEE 754浮点数 | 工艺参数、流量 |
| String | 可变 | 字符序列 | 批次号、产品型号 |
| DTL | 12字节 | 日期时间结构 | 时间戳 |
采集时最容易出错的是字节序。S7-1200/1500采用大端序(Big-Endian),即高位字节在前。例如一个Int值1000(十六进制03E8),在DB中存储为03 E8;而上位机若按小端序解析,会读成E8 03即-6141。因此通信程序中必须做字节交换,或使用支持S7协议的大端解析库。
四、DB块组织:采集数据的“货架”
全局DB是采集数据的主要来源。建议按“一个设备一个DB”或“一个工艺段一个DB”的原则组织,避免所有变量堆在一个DB里。DB内变量应使用符号名而非绝对地址,例如“DB1”.Motor1_Status,这样即使后续插入变量导致地址偏移,符号访问仍能正确对应。
DB有两种优化访问方式:标准访问(允许绝对地址,如DB1.DBX0.0)和优化访问(只允许符号访问,不支持绝对地址)。优化DB的访问速度更快,且支持保持性设置,但采集时无法用绝对地址读取。如果上位机通过S7协议按绝对地址采集,必须将DB设为“标准访问”或“优化访问但允许绝对地址”。这是实际项目中最常见的采集失败原因之一。
五、地址与结构认知的落地检查
在开始编写采集程序前,建议完成以下检查:确认每个采集点位于I、Q、M或DB中,而非L区;确认数据类型与读取长度匹配;确认DB的访问方式与上位机寻址方式一致;确认需要掉电保持的数据已设置保持性;确认字节序处理方式。下面这张图把S7-1200/1500的存储区、数据类型与DB组织关系集中呈现,可作为采集地址规划的对照参考。
把这张图当作采集地址规划的对照表:左侧确认数据“住在哪”,中间确认数据“长什么样”,右侧确认数据“怎么组织”。三者一致,采集程序才有稳定的数据基础。实际项目中,建议在PLC变量表中为每个采集点标注存储区、数据类型、DB名称和偏移量,形成一份《采集点地址清单》,作为PLC程序与上位机配置的共同依据。