4. 变量管理与过程数据组织

在 WinCC 中,变量(Tag)是画面、脚本、报警和归档系统与现场过程值之间的唯一桥梁。变量管理是否清晰,直接决定了后续组态效率、运行性能和后期维护成本。本节围绕内部变量、外部变量、变量组、变量归档以及数据类型映射五个核心概念展开,帮助读者建立一套可落地的过程数据组织方法。

一、内部变量与外部变量的本质区别

WinCC 变量按数据来源分为两大类。内部变量(Internal Tag)不连接任何 PLC 或外部设备,其值完全由 WinCC 自身维护,常用于画面切换标志、语言切换、临时计算中间量、脚本触发位等。内部变量没有地址,只有名称、数据类型和初始值,例如定义一个二进制内部变量 @ScreenSwitch 用于画面跳转,或定义一个 32 位浮点内部变量 @TotalFlow 用于累计计算。

外部变量(External Tag / Process Tag)则通过通信驱动与 PLC、仪表或第三方系统建立连接,其值来自现场。外部变量必须绑定一个有效的地址,例如 S7-300/400 通过 MPI 或 PROFIBUS 连接时,地址形如 M0.0、DB1.DBD0、I0.1、Q0.0;S7-1200/1500 通过 S7 通信或 OPC UA 时,地址可能表现为符号名或节点 ID。外部变量的数量受 WinCC 授权点数限制,因此不能随意创建,必须按实际 I/O 和过程数据需求规划。

内部变量不占用授权点数,但也不参与过程控制;外部变量占用点数,是过程数据的真实来源。组态时应优先复用外部变量,避免为同一过程值创建多个外部变量副本。

二、变量组:把过程数据按工艺单元组织

当项目规模增大,变量数量可能达到数百甚至数千个。如果全部平铺在变量管理器中,查找和维护将非常困难。WinCC 提供变量组(Tag Group)机制,允许按工艺单元、设备类型或功能区域对变量进行分层归类。例如一个水处理项目可以建立如下结构:

  • 进水单元:进水流量、进水浊度、进水阀开度、进水泵状态
  • 加药单元:加药泵频率、药箱液位、加药量累计
  • 过滤单元:滤池压差、反洗状态、反洗次数
  • 出水单元:出水流量、出水余氯、出水阀反馈

变量组本身不改变变量的通信行为,但它带来三个实际好处:一是画面组态时可按组筛选变量,减少误选;二是脚本中可用组前缀批量引用;三是归档和报警可按组批量配置。建议变量组命名与 PLC 程序中的功能块或设备编号保持一致,例如 GRP_Inlet、GRP_Dosing,这样在 PLC 与 WinCC 之间切换时认知负担最小。

三、变量归档:从实时值到历史趋势

过程数据不仅要“看当前”,还要“看过去”。WinCC 的变量归档(Tag Logging)负责将外部变量或内部变量的值按周期或事件写入归档数据库,供趋势控件、报表和数据分析使用。归档组态的核心参数包括:

  • 归档周期:如 1 s、10 s、1 min、1 h,周期越短数据量越大;
  • 归档类型:周期归档、事件触发归档、变化归档;
  • 归档时长:按时间或记录数设定,超出后覆盖或停止;
  • 压缩与分段:大项目应启用分段归档,避免单文件过大。

一个常见的教学示例是:对出水余氯变量 AI_OutCl2 设置 5 s 周期归档,归档时长 30 天,用于趋势画面回看。若该变量同时用于报警,则报警归档与变量归档是两套独立机制,不要混淆。

四、数据类型映射:WinCC 与 PLC 的对应关系

外部变量在创建时必须选择数据类型,且该类型必须与 PLC 侧地址的数据宽度和解释方式一致,否则会出现数值错乱或通信失败。下表给出 S7 系列 PLC 与 WinCC 常见数据类型的对应关系(示例,具体以实际驱动文档为准):

PLC 数据类型WinCC 数据类型典型地址示例说明
BOOL二进制变量M0.0 / DB1.DBX0.01 位,用于状态、按钮
BYTE无符号 8 位数MB10 / DB1.DBB00~255
INT有符号 16 位数MW20 / DB1.DBW2-32768~32767
DINT有符号 32 位数MD30 / DB1.DBD4累计量常用
REAL浮点数 32 位MD40 / DB1.DBD8模拟量、流量、温度
STRING文本变量 8 位字符集DB1.DBB20 起需指定长度

需要特别注意的是字节序和地址对齐。S7 采用大端字节序,而 WinCC 驱动通常已处理该转换,但若通过 OPC UA 或第三方网关接入,必须确认字节序设置。此外,DB 块中若存在优化访问属性,传统绝对地址可能不可用,此时应改用符号寻址或关闭优化访问。

WinCC 变量管理与过程数据组织关系图 PLC / 现场设备 BOOL 状态位 M0.0 / DBX0.0 INT 计数值 MW20 / DBW2 REAL 模拟量 MD40 / DBD8 DINT 累计量 MD30 / DBD4 STRING 文本 DBB20 起 WinCC 变量管理 外部变量(过程变量) 绑定 PLC 地址,占用授权点数 二进制变量 有符号 16 位 浮点数 32 位 有符号 32 位 文本变量 内部变量 无地址,不占点数,用于画面/脚本 @ScreenSwitch / @TotalFlow 变量组(Tag Group) 按工艺单元分层:进水 / 加药 / 过滤 / 出水 GRP_Inlet / GRP_Dosing / GRP_Filter 归档与使用 变量归档 周期 5 s / 30 天 趋势 / 报表 画面绑定 I/O 域 / 趋势控件 按钮 / 状态指示 报警系统 限值 / 离散报警 报警归档 全局脚本 C / VBS 读写 计算与联动 数据类型必须与 PLC 地址宽度一致;变量组用于组织,归档用于历史,内部变量用于 WinCC 自身逻辑

五、实际组态中的组织策略与常见问题

在真实项目中,建议按以下顺序组织变量:先根据 PLC 符号表或 I/O 清单列出所有需要监控的过程量,再按工艺单元建立变量组,然后逐个创建外部变量并核对数据类型与地址。对于模拟量,通常还需要在 WinCC 侧做线性变换,例如将 0~27648 的原始值映射为 0~100 ℃,这可以通过变量属性中的“线性标定”完成,也可以在上位脚本中计算。若使用线性标定,应确保标定后的工程单位与画面显示一致。

常见问题包括:外部变量地址写错导致通信不上;数据类型选错导致数值跳变;变量组层级过深导致查找困难;归档周期设置过短导致数据库快速增长。排查时可以先在变量管理器的“在线”状态下观察变量值是否刷新,再检查驱动连接状态和地址语法。对于归档问题,可查看归档数据库大小和分段配置,必要时调整归档周期或启用压缩。

不要为同一个 PLC 地址创建多个外部变量。若多个画面需要同一过程值,应复用同一个变量,否则不仅浪费授权点数,还会造成归档和报警配置分散,后期修改时容易遗漏。

总结来说,变量管理不是简单的“建点”,而是对过程数据的一次结构化设计。内部变量服务于 WinCC 自身逻辑,外部变量承载现场过程值,变量组提供组织维度,变量归档保留时间维度,数据类型映射保证数值正确。把这五者关系理清,后续的画面、报警、趋势和脚本才能建立在可靠的数据基础之上。