2. Schneider自动化项目版本资产识别

版本治理的第一步不是建库,也不是定流程,而是把项目里“到底有哪些东西需要被管版本”识别清楚。施耐德电气(Schneider Electric)的自动化项目往往由多个工具链协同完成:控制层用 Control Expert 编写程序,操作层用 Vijeo Designer 或 EcoStruxure Operator Terminal Expert 组态画面,设备层通过 FDT/DTM 或设备描述文件接入,功能逻辑则可能封装成 DFB/EFB 库。这些资产分散在不同工具、不同目录、不同扩展名中,如果不先做资产识别,后续的版本比对、发布和回滚都会失去基准。

一、Control Expert 项目文件的三种形态

Control Expert(原 Unity Pro)的项目文件扩展名是版本治理中最容易混淆的一类,因为它存在 .sta、.stu、.stx 三种形态,分别对应不同的保存语义:

  • .sta:归档文件(Archive)。由“生成归档”操作产生,是一个压缩打包后的只读快照,包含项目源、硬件配置、部分编译信息。它适合作为“发布基线”或“交付物”,但不适合日常编辑。
  • .stu:单用户项目文件(Single-user)。这是工程师日常打开、编辑、编译的工作文件,包含完整的源程序与配置。它是最活跃、最频繁变更的资产。
  • .stx:导出交换文件(Export)。用于把项目或部分内容导出为可交换格式,常用于跨版本迁移、向第三方交付或做差异比对。

识别要点在于:.stu 是“工作态”,.sta 是“冻结态”,.stx 是“交换态”。版本库中如果只存 .stu,会面临二进制文件无法有效 diff 的问题;如果只存 .sta,又无法继续开发。合理的做法是:以 .stu 作为开发主线纳入版本控制,在每次里程碑节点生成 .sta 归档并单独标记为发布版本,.stx 则按需生成,用于评审或迁移。

判断一个 Control Expert 资产是否“可发布”,不能只看文件是否存在,还要确认它是否已成功编译、硬件配置是否与目标 PLC 一致、以及是否包含最新的 DFB 库引用。

二、HMI 项目资产

HMI 侧常见两类工具:Vijeo Designer 用于 Magelis 系列触摸屏,EcoStruxure Operator Terminal Expert 用于新一代 Harmony/触摸屏终端。它们的项目文件同样是二进制工程包,内部包含画面、变量、报警、配方、脚本等对象。

HMI 资产的版本属性有三个关键点:第一,变量连接。HMI 变量通常映射到 Control Expert 的 PLC 变量地址或符号,一旦 PLC 侧变量改名或改地址,HMI 工程即使文件没变,实际运行也会出错。第二,目标机型与固件。同一工程下载到不同型号或不同固件版本的终端,行为可能不同。第三,配方与报警文本。这些内容常由工艺人员维护,变更频繁但容易被忽略。

因此,HMI 项目不能只记录“文件名+日期”,还应记录:目标终端型号、终端固件版本、所连接的 PLC 项目版本、以及变量映射所依赖的符号表版本。

三、库文件:.fdt、.dtx、DFB/EFB

库文件是版本依赖中最隐蔽的一环。常见类型包括:

  • .fdt:FDT 框架下的设备类型描述或项目相关文件,常与 DTM 配合使用。
  • .dtx:设备描述文件,描述现场设备(如变频器、仪表)的参数与通信特性。
  • DFB(Derived Function Block):用户自定义派生功能块,由项目工程师编写,属于“项目私有库”。
  • EFB(Elementary Function Block):施耐德提供的基础功能块库,随 Control Expert 版本发布。

DFB 与 EFB 的区别决定了版本治理策略:EFB 随软件版本走,升级 Control Expert 时可能整体变化;DFB 随项目走,必须与项目一起纳入版本库。如果 DFB 被多个项目共用,就应抽成独立库并单独打版本号,否则会出现“A 项目改了 DFB,B 项目编译失败”的连锁问题。

四、固件与配置文件

PLC 固件、HMI 终端固件、通信模块固件、以及 DTM 目录中的设备配置,都属于“运行环境资产”。它们不直接写在项目文件里,却决定了项目能否正确运行。版本识别时应记录:CPU 型号与固件版本、通信模块型号与固件、终端固件、以及关键 DTM 版本。这些信息建议在项目根目录维护一份 environment.md 或配置清单,与项目版本号绑定。

五、依赖关系与资产清单示例

把上述资产放在一起,可以看到一条清晰的依赖链:Control Expert 项目依赖 DFB/EFB 库与 PLC 固件;HMI 项目依赖 PLC 变量符号与终端固件;设备配置依赖 DTM/DTX 与现场设备固件。下面这张图用结构关系的方式呈现了这些资产之间的依赖方向,便于在识别阶段逐项核对。

Schneider 自动化项目版本资产依赖关系 Control Expert 项目 .stu 工作文件(开发主线) .sta 归档(发布基线) .stx 导出(交换/迁移) HMI 项目 Vijeo Designer 工程 Operator Terminal Expert 画面/变量/报警/配方 库文件 DFB 用户派生功能块 EFB 基础功能块库 设备描述与配置 .fdt / .dtx 设备描述 DTM 目录与设备参数 固件与运行环境 PLC CPU 固件版本 HMI 终端固件版本 引用 变量映射 依赖 依赖 依赖 识别原则:① 工作态与冻结态分开管理;② 库文件与项目绑定或独立打版本;③ 固件与配置单独记录;④ HMI 必须记录变量映射所依赖的 PLC 版本。 建议在项目根目录维护 environment.md,记录 CPU 型号/固件、终端型号/固件、DTM 版本、Control Expert 版本、库版本。

基于上述依赖关系,可以整理出一份可直接使用的资产识别清单。下表以某水处理项目为例,列出需要登记的字段。表中数值为教学示例,实际项目应按现场情况填写。

资产类别 典型文件/对象 版本属性 依赖对象 示例值
控制程序 .stu / .sta 项目版本号、编译时间 DFB 库、PLC 固件 V1.3.0 / 2024-06-12
HMI 工程 Vijeo Designer 工程 工程版本、目标机型 PLC 符号表、终端固件 V1.2.0 / HMIGTO5310
用户库 DFB 库文件 库版本号 Control Expert 版本 Lib_Pump V2.1
设备描述 .dtx / DTM 描述文件版本 现场设备固件 ATV320 DTM V3.2
固件 CPU / 终端固件 固件版本号 硬件型号 BMEP582040 FW 3.10
常见误区:把 .sta 当作日常编辑文件反复打开修改,会导致归档语义失效;或者只备份 .stu 而忽略 DFB 库,导致换一台电脑后编译报“功能块未定义”。识别阶段就要把这两类问题排除。

完成资产识别后,应形成一份“版本资产台账”,至少包含:资产名称、文件路径、当前版本、责任人、依赖项、最后变更日期。这份台账是后续版本比对、发布和回滚的输入。没有台账,版本治理就只能停留在口头约定;有了台账,才能进一步设计版本号规则、分支策略和发布流程。