2. 旧系统资产盘点

迁移工程最怕的不是“新系统不会用”,而是“旧系统里到底有什么没人说得清”。资产盘点就是给旧SCADA做一次完整体检,把散落在各处的标签、画面、脚本、报警、历史数据和通信接口逐一登记、分类、评估,形成后续迁移映射与工作量估算的唯一依据。盘点的目标不是简单列清单,而是回答三个问题:有什么、在哪里、迁移代价多大。

一、盘点对象与数据来源

AVEVA旧SCADA(如InTouch、System Platform、Citect等)的资产通常分布在工程文件、运行时数据库和外部接口三个层面。盘点时应先确定数据来源,再逐类提取:

  • 标签(Tags):来自InTouch的Tagname Dictionary(.dbf或导出CSV)、System Platform的Galaxy数据库、Citect的Variable Tags。需记录标签名、类型(I/O、内存、间接)、数据类型、工程单位、量程、初始值、报警关联。
  • 画面(Graphics):InTouch的WindowMaker窗口、Citect的Graphics Builder页面。需记录画面名、分辨率、引用标签数、嵌入脚本、ActiveX控件、动画链接。
  • 脚本(Scripts):InTouch的Application Scripts、Window Scripts、Key Scripts、Condition Scripts;System Platform的Script Function。需记录触发条件、调用对象、外部依赖。
  • 报警(Alarms):报警组、报警优先级、报警限值、报警文本、报警确认方式、报警历史存储位置。
  • 历史数据(History):InTouch的Historian、System Platform的Historian、第三方数据库。需记录采集周期、存储时长、压缩方式、数据点数量。
  • 通信接口(Communications):DAServer、I/O Server、OPC DA/UA、Modbus、DDE、SQL连接。需记录协议、设备地址、扫描周期、连接参数。

二、盘点方法与工具

手工逐条抄录效率低且易漏,推荐“导出+脚本解析+人工复核”三步法。以InTouch为例,可通过Tagname Dictionary的Export功能导出CSV,再用Python脚本统计标签类型分布、报警标签占比、间接标签引用关系。画面部分可用WindowMaker的“Export to CSV”或第三方工具提取窗口内所有动画链接。脚本则需逐文件导出为文本,用正则匹配外部调用(如SQL、DDE、文件读写)。

对于System Platform,可直接查询Galaxy数据库的Object、Attribute、Graphic、Script等表,用SQL导出资产清单。Citect则可通过Project Editor的“Export”功能导出变量、页面、报警和趋势配置。

盘点前务必在测试环境或只读副本上操作,避免误改生产工程文件。导出文件按“系统名_资产类型_日期”命名,便于版本追溯。

三、资产分类与迁移优先级评估

盘点结果需要分类打标,才能指导后续迁移。建议按“迁移难度”和“业务重要性”两个维度评估:

资产类型迁移难度业务重要性建议策略
简单I/O标签低高批量映射,优先迁移
间接标签/数组中中需重构为结构化标签
静态画面低中可自动转换或重绘
复杂动画/ActiveX高高需重新设计,评估替代方案
Application Scripts高高逐条分析,重写为现代脚本
报警配置中高导出后按新系统报警模型重建
历史数据中高评估归档格式,规划数据迁移
OPC/DDE接口中高优先升级为OPC UA

四、盘点成果与交付物

一次完整的资产盘点应输出以下交付物:

  1. 标签清单:包含标签名、类型、数据类型、量程、单位、报警关联、迁移状态。
  2. 画面清单:画面名、分辨率、引用标签数、脚本数、ActiveX控件数、迁移难度评级。
  3. 脚本清单:脚本名、触发条件、调用对象、外部依赖、行数、迁移建议。
  4. 报警清单:报警组、优先级、限值、文本、确认方式、历史存储。
  5. 历史数据清单:数据点、采集周期、存储时长、压缩方式、归档路径。
  6. 通信接口清单:协议、设备地址、扫描周期、连接参数、替代方案。

这些清单不仅是迁移映射的输入,也是工作量估算和风险识别的依据。例如,若发现某画面引用了200个间接标签且嵌套三层,就需要单独评估重构成本;若某脚本调用了已停用的DDE接口,则需提前规划替代通信方案。

AVEVA旧SCADA资产盘点全景图 数据来源层 工程文件 (.dbf/.csv) Galaxy数据库 运行时配置 外部接口日志 备份归档 六大资产类型 标签 Tags I/O标签 · 内存标签 · 间接标签 类型/量程/单位/报警关联 画面 Graphics 窗口/页面 · 分辨率 · 动画链接 ActiveX控件 · 嵌入脚本 脚本 Scripts Application/Window/Key/Condition 触发条件 · 外部依赖 · 行数 报警 Alarms 报警组 · 优先级 · 限值 报警文本 · 确认方式 · 历史 历史数据 History 采集周期 · 存储时长 · 压缩 数据点数量 · 归档路径 通信接口 Communications DAServer · OPC DA/UA · Modbus DDE · SQL · 扫描周期 · 设备地址 评估维度与交付物 迁移难度 低 / 中 / 高 业务重要性 高 / 中 / 低 迁移策略 映射/重构/重绘/替代 交付物 6类清单 + 映射表

五、盘点中的常见陷阱

实际盘点时,有几个高频问题需要特别留意。第一,标签名重复或大小写不一致:InTouch标签不区分大小写,但导出到CSV后可能因工具差异产生重复记录,需去重并核对。第二,画面引用已删除标签:旧系统运行多年,部分标签已被删除但画面仍保留引用,迁移前需清理无效链接。第三,脚本中的硬编码路径:如脚本直接读写“D:\Data\report.csv”,迁移后路径可能不存在,需改为配置项。第四,报警限值写在脚本里而非报警配置中:这类“隐形报警”容易漏盘,需逐脚本搜索比较语句。第五,历史数据归档格式不兼容:旧Historian可能使用专有格式,需提前确认导出为CSV或SQL的可行性。

盘点不是一次性任务。建议在迁移每个阶段前重新核对资产清单,因为旧系统可能仍在运行并产生新标签或修改画面。建立“盘点基线”并冻结变更,是控制迁移范围的有效手段。

完成资产盘点后,你会得到一份覆盖六大类资产的完整清单,以及每项资产的迁移难度和策略建议。这份清单将直接驱动后续的标签映射、画面转换、脚本重写、报警重建、历史数据迁移和通信接口升级工作。没有盘点,迁移就是盲人摸象;有了盘点,每一步都有据可依。