3. PLCnext项目版本命名与编号规范设计

在PLCnext项目中,版本号不是给开发人员自己看的备注,而是贯穿项目模板、库文件、HMI画面、文档和交付包的“身份标识”。如果命名规则不统一,最常见的结果是:现场工程师拿到一个压缩包,无法判断它对应哪次硬件改版、是否包含某个关键修复、能否直接刷写到手头的AXC F 2152控制器上。因此,本节要解决的核心问题是:为PLCnext项目建立一套可读、可排序、可追溯的版本命名与编号规范,并把它固化到项目模板和文档中。

一、四层版本标识的分工

PLCnext项目通常同时存在多个维度的版本信息,建议把它们拆成四个独立字段,而不是混在一个字符串里:

  • 语义化版本(SemVer):面向功能与接口,格式为 主版本.次版本.修订号,例如 2.4.1。主版本在接口不兼容或工艺逻辑重大变更时递增;次版本在新增功能且向后兼容时递增;修订号在仅修复缺陷时递增。
  • 内部版本:面向项目内部迭代,格式为 V主.次,例如 V2.4,用于把同一语义化版本下的多次内部构建归组,便于测试团队按批次管理。
  • 构建号:由CI流水线自动生成,格式为 BYYYYMMDD.NNN,例如 B20250612.007,表示2025年6月12日的第7次构建。构建号只增不减,保证任何一次产物都可唯一定位。
  • 硬件兼容标识:描述该版本可运行的控制器型号与固件范围,格式为 HW-型号-FW范围,例如 HW-AXC2152-FW2024.0+,表示适用于AXC F 2152,且要求控制器固件不低于2024.0。

四层字段组合后形成完整版本串,例如:2.4.1-V2.4-B20250612.007-HW-AXC2152-FW2024.0+。这个字符串既能在Git标签中使用,也能写入项目文档和交付清单。

PLCnext项目版本标识四层结构 语义化版本 主.次.修订 2.4.1 功能与接口维度 内部版本 V主.次 V2.4 内部迭代批次 构建号 B日期.序号 B20250612.007 CI自动生成 硬件兼容标识 HW-型号-FW范围 HW-AXC2152 -FW2024.0+ 完整版本串(Git标签 / 交付清单 / 文档页眉) 2.4.1-V2.4-B20250612.007-HW-AXC2152-FW2024.0+ 项目模板 • 版本变量声明 • 库文件命名前缀 • 硬件兼容检查块 文档体系 • 版本变更记录表 • 交付清单版本栏 • 现场刷写确认单 CI/CD流水线 • 自动生成构建号 • 打Git标签 • 归档产物与清单

二、编号规则的具体约定

要让规范可执行,必须把“什么时候递增哪一位”写成明确规则,而不是靠感觉。以下是一套可直接采用的约定:

变更类型 语义化版本变化 内部版本变化 构建号 示例
修复现场缺陷,接口不变 修订号+1 不变 自动递增 2.4.1 → 2.4.2
新增功能块,向后兼容 次版本+1,修订号归零 次+1 自动递增 2.4.2 → 2.5.0
工艺逻辑重构,接口不兼容 主版本+1,次与修订归零 主+1,次归零 自动递增 2.5.0 → 3.0.0
仅调整HMI画面文字 修订号+1 不变 自动递增 3.0.0 → 3.0.1
更换控制器型号 主版本+1 主+1 自动递增 3.0.1 → 4.0.0

硬件兼容标识的更新规则相对独立:只要目标控制器型号或最低固件要求发生变化,就必须更新该字段,即使语义化版本没有变化。例如从AXC F 2152迁移到AXC F 3152,硬件兼容标识应改为 HW-AXC3152-FW2024.0+,并在文档中记录迁移原因。

三、落地到项目模板

规范只有写进模板,才能被自动继承。在PLCnext Engineer中,建议在项目模板里预置以下内容:

  1. 在全局变量表中声明四个版本字符串变量:gVersionSemantic、gVersionInternal、gVersionBuild、gVersionHardware,初始值留空,由构建脚本注入。
  2. 在程序启动组织块(如 PlcTask 的初始化段)中,将四个变量拼接为 gVersionFull,供HMI和诊断页面读取。
  3. 在库文件命名中强制使用语义化版本前缀,例如 Lib_MotorControl_2.4.1.pex,避免同名库文件覆盖。
  4. 在项目根目录放置 version.json,由CI流水线写入构建号与硬件兼容标识,作为归档依据。
{
  "semantic": "2.4.1",
  "internal": "V2.4",
  "build": "B20250612.007",
  "hardware": "HW-AXC2152-FW2024.0+",
  "full": "2.4.1-V2.4-B20250612.007-HW-AXC2152-FW2024.0+"
}

四、落地到文档与交付

文档侧至少需要三处固定位置承载版本信息:版本变更记录表、交付清单和现场刷写确认单。版本变更记录表建议包含“版本串、日期、变更类型、影响范围、验证人”五列,每次发布必须新增一行,不允许覆盖历史行。交付清单中,版本串应与压缩包文件名一致,例如 ProjectLineA_2.4.1-V2.4-B20250612.007.zip。现场刷写确认单则要求工程师填写控制器实际固件版本,并与硬件兼容标识中的最低要求比对,若低于要求则禁止刷写。

建议在HMI首页固定显示 gVersionFull,这样现场人员无需打开工程即可确认当前运行版本,减少“刷错版本”的概率。
不要用“最新版”“最终版”“改好的”这类词代替版本号。一旦出现多个“最终版”,追溯链就断了,后续排障将无法判断现场运行的是哪次构建。

最后需要强调的是,版本命名规范的价值不在于字符串本身多漂亮,而在于它能否让“代码—构建—交付—现场”四个环节使用同一个标识。只要四层字段分工清晰、递增规则明确、模板和文档同步落地,PLCnext项目的版本治理就有了可执行的基础。