4. 版本标识与命名规范

在WAGO控制器项目中,版本治理的第一道防线不是工具,而是命名。一个工程师打开共享盘或Git仓库时,如果看到的是 Program_Final_v2_new(1).pro 这样的文件,那么无论后面配置多严格的审批流程,变更追溯都已经失败了。本节要解决的核心问题是:为WAGO项目建立一套“人看得懂、机器能解析、工具可排序”的版本标识体系,覆盖版本号、文件命名、目录结构、标签和基线五个层面。

一、版本号规则:语义化版本在PLC项目中的落地

WAGO项目通常包含PLC程序(CODESYS工程)、HMI画面、参数配置、库文件和文档。推荐采用三段式语义化版本号 MAJOR.MINOR.PATCH,并附加WAGO项目特有的构建元数据。定义如下:

  • MAJOR(主版本):当控制逻辑架构发生不兼容变更时递增,例如从单轴控制改为多轴联动、I/O映射整体重构、通信协议从Modbus RTU切换到Profinet。主版本变更意味着现场必须整体重新下载并重新验证。
  • MINOR(次版本):当新增功能或新增设备但保持向后兼容时递增,例如增加一个报警页面、新增一段PID回路、扩展一个远程I/O站点。
  • PATCH(修订号):当修复缺陷、调整参数、优化注释而不改变接口时递增,例如修正定时器预设值、修复HMI按钮地址错误。

完整版本标识建议写成 V2.3.1+20240612.1,其中 + 后为构建元数据:日期 YYYYMMDD 加当日构建序号。这样即使同一天多次提交,也能区分先后。对于WAGO 750系列控制器,还可在版本号后附加目标硬件标识,例如 V2.3.1+20240612.1-750-8212,避免将PFC200的程序误下载到CC100。

版本号只增不减。任何回退操作都应通过新建一个更高PATCH号来“反向修复”,而不是删除或覆盖已有版本,否则标签与基线将失去意义。

二、文件命名:让文件名自带上下文

WAGO项目文件命名推荐采用“项目代号_模块_版本_状态.扩展名”的结构。例如:

WAGO_LINE2_MainProgram_V2.3.1_Released.project
WAGO_LINE2_HMI_Overview_V1.4.0_Review.hmi
WAGO_LINE2_IOConfig_V2.3.1_Released.xml
WAGO_LINE2_Library_MotorLib_V1.0.2_Released.library

关键约束有四点:第一,不使用空格,统一用下划线分隔,避免脚本解析时截断;第二,状态字段只允许 Draft、Review、Released、Deprecated 四种,与后续基线状态一一对应;第三,日期不写入文件名主体,日期信息由版本号构建元数据或Git提交时间承载,防止文件名过长;第四,禁止出现 final、new、ok、改 等无信息量词汇。

三、目录结构:按“项目—模块—类型”分层

目录结构决定了一个新成员能否在五分钟内找到目标文件。推荐WAGO项目采用三层结构:项目层、模块层、类型层。项目层以项目代号命名;模块层按控制对象划分,如 MainProgram、HMI、IOConfig、Libraries、Docs;类型层存放具体文件。版本文件不直接覆盖,而是通过Git分支或标签管理,工作区只保留当前Released版本。

WAGO项目版本标识体系总览 版本号规则 MAJOR:架构不兼容变更 MINOR:新增功能,向后兼容 PATCH:缺陷修复与参数调整 构建元数据:+YYYYMMDD.N 硬件标识:-750-8212 文件命名 项目代号_模块_版本_状态 状态:Draft/Review/ Released/Deprecated 禁止:final、new、ok 分隔符统一用下划线 目录结构 项目层:WAGO_LINE2 模块层:MainProgram/HMI 类型层:.project/.hmi/.xml 工作区仅保留Released 历史版本由Git标签承载 标签与基线标识 轻量标签:v2.3.1(仅指向提交) 附注标签:v2.3.1-rc1(含发布说明、验证人、硬件型号) 基线命名:BL_20240612_V2.3.1 基线内容:程序+HMI+IO配置+库+文档 版本标识的追溯链 文件命名 → 版本号 → Git标签 → 基线 → 现场下载记录

四、标签:Git中的版本锚点

在Git仓库中,标签是版本标识的最终锚点。WAGO项目建议同时使用轻量标签和附注标签:轻量标签用于日常内部提交,如 v2.3.1;附注标签用于正式发布,如 v2.3.1-rc1,并在标签消息中记录发布说明、验证人、目标硬件型号和关联的变更单号。例如:

git tag -a v2.3.1-rc1 -m "Release V2.3.1 for 750-8212; verified by Zhang; CR-2024-0612"

标签一旦推送,不允许移动或删除。若发现标签指向错误提交,应新建一个更高PATCH号的标签来修正,并在发布说明中注明废弃原因。对于WAGO项目,建议在标签名中避免使用 /,因为部分CI脚本对斜杠处理不一致,统一用连字符。

五、基线:可交付的完整快照

基线是版本治理中“可交付”的正式节点,它不等于单个标签,而是一组标签的集合。一个WAGO项目基线应包含:PLC程序标签、HMI标签、IO配置标签、库文件标签、文档标签,以及一份基线清单文件。基线命名推荐 BL_日期_版本号,例如 BL_20240612_V2.3.1。基线清单可采用如下结构:

组件版本标签状态验证人
MainProgramv2.3.1Released张工
HMIv1.4.0Released李工
IOConfigv2.3.1Released张工
MotorLibv1.0.2Released王工
Docsv1.1.0Released李工

基线建立后,现场下载记录必须回写基线编号。例如在WAGO控制器的项目信息中写入 BL_20240612_V2.3.1,或在HMI启动画面角落显示该编号。这样当现场出现异常时,工程师可以第一时间确认设备运行的是哪个基线,而不是靠记忆或翻找邮件。

基线不是“冻结后永不修改”。若基线发布后发现严重缺陷,应建立新的基线 BL_20240613_V2.3.2,并在变更单中说明与前一基线的差异。禁止在原基线标签上直接修改文件,否则追溯链断裂。

六、落地检查清单

在项目启动阶段,建议将以下检查项纳入WAGO项目的配置管理计划:版本号三段式是否定义并写入README;文件命名是否通过脚本校验;目录结构是否按项目—模块—类型分层;Git标签是否采用附注标签并包含验证信息;基线清单是否覆盖程序、HMI、IO、库、文档五类组件;现场下载记录是否回写基线编号。完成这六项,版本标识体系即可支撑后续的变更申请、影响分析和发布审计。

需要强调的是,命名规范的价值不在于“好看”,而在于可解析、可排序、可追溯。当CI脚本能够从文件名中自动提取版本号和状态,当Git标签能够直接关联变更单,当现场设备能够显示基线编号,版本治理才真正从文档约定变成了工程能力。