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

在Schneider自动化项目中,版本号不是给工程师自己看的备注,而是贯穿PLC程序、HMI画面、变频器参数、SCADA组态和交付文档的“身份标识”。如果版本号规则不统一,现场调试时很容易出现“程序是V2,画面是V1.3,参数表是最终版”的混乱局面。本节围绕可落地的版本号规则展开,重点解决四个问题:主版本、次版本、修订号、构建号分别代表什么;如何结合项目阶段、硬件平台、PLC型号和客户交付要求设计命名模板;如何把版本号写入工程文件、导出包和交付清单;以及如何通过版本号快速判断兼容性和回退路径。

一、四段式版本号的定义与边界

推荐采用“主版本.次版本.修订号.构建号”四段式结构,例如 V2.1.3.045。四段数字不是随意递增,每一段都有明确的变更边界:

  • 主版本(Major):表示架构级或接口级不兼容变更。例如PLC程序从单站控制改为分布式控制、HMI画面从本地操作改为远程集中操作、通信协议从Modbus RTU切换为Modbus TCP、I/O分配表发生大规模调整。主版本变更后,旧版HMI或旧版参数表通常不能直接复用。
  • 次版本(Minor):表示功能新增但保持向后兼容。例如新增一个报警页面、增加一段配方逻辑、扩展一个PID回路、新增一台变频器的控制逻辑。次版本变更后,原有接口和变量地址应尽量保持不变。
  • 修订号(Patch):表示缺陷修复或小范围优化,不改变功能和接口。例如修正一个定时器预设值、调整一个报警延时、修复一个按钮地址错误、优化一段注释。修订号变更通常可以直接替换旧版本。
  • 构建号(Build):表示同一修订号下的编译或导出次数,用于区分“同一天内多次导出”的工程文件。构建号由工具自动递增或由工程师按导出顺序手动填写,不承载功能含义。

需要特别说明的是,构建号与修订号的区别:修订号对应“改了什么”,构建号对应“导出了几次”。例如同一天内修正了同一个报警延时并导出了三次,修订号可以保持 3 不变,构建号依次为 045、046、047。这样既能追溯每一次导出,又不会让修订号虚增。

二、结合项目阶段、硬件平台与PLC型号的命名模板

版本号本身只解决“第几版”,命名模板解决“这是哪个项目、哪个阶段、哪个硬件平台、哪个PLC型号的版本”。推荐命名模板如下:

项目代号_客户简称_阶段_硬件平台_PLC型号_版本号_日期
示例:
HZ-WTP_KY_DEBUG_M340_PLC-M241_V2.1.3.045_20250612
HZ-WTP_KY_FAT_M580_PLC-M580_V1.0.0.012_20250703
HZ-WTP_KY_SAT_M340_PLC-M241_V2.1.3.051_20250718

模板中各字段的含义与取值建议:

  • 项目代号:如 HZ-WTP 表示杭州某水处理项目,用于区分不同现场。
  • 客户简称:如 KY,用于区分同一项目下的不同客户或不同标段。
  • 阶段:建议统一为 DES(设计)、DEV(开发)、DEBUG(厂内调试)、FAT(工厂验收)、SAT(现场验收)、OPS(运维)。阶段字段直接决定该版本是否允许对外交付。
  • 硬件平台:如 M340、M580、M221、M241,表示该版本对应的硬件平台系列。
  • PLC型号:如 PLC-M241、PLC-M580,精确到具体CPU型号,避免同一平台下不同型号混用。
  • 版本号:四段式 V主.次.修.构建。
  • 日期:建议使用 YYYYMMDD,便于排序和追溯。

当同一项目存在多个PLC站时,可在PLC型号后增加站号,例如 PLC-M241_ST01、PLC-M241_ST02。当客户有特殊交付要求时,可在版本号后增加客户交付标识,例如 _CUST-A,表示该版本是专门提交给客户A的交付版本。

三、版本号与工程对象的绑定关系

版本号不能只写在文件名上,还必须写入工程内部,形成“文件—工程—交付物”三层一致。建议在Schneider工程环境中按以下位置绑定:

  • PLC程序:在Control Expert的项目属性中填写版本号,并在程序头部注释块中写入完整命名模板。
  • HMI画面:在画面首页或系统页放置版本号文本,变量地址建议使用内部字符串变量,避免硬编码。
  • 变频器/软起动器参数:在参数表首行标注版本号,参数文件命名与PLC版本号保持一致。
  • SCADA组态:在项目属性或关于页面显示版本号,导出包命名与PLC版本号一致。
  • 交付文档:I/O清单、网络拓扑图、参数表、测试记录均引用同一版本号。

这样做的目的是:现场任何一份文件都能通过版本号反查到对应的PLC程序、HMI画面和参数表,避免“程序升级了但画面没升级”的错配。

四、版本号变更的判断路径

版本号变更不是凭感觉递增,而是按变更内容判断。下面这张图给出了从“发生变更”到“确定四段号如何递增”的判断路径,同时标出了主版本变更时必须同步检查的兼容性对象。

版本号变更判断路径与兼容性检查 发生工程变更 程序 / 画面 / 参数 / 组态 判断1:是否改变接口或架构? 通信协议 / I/O分配 / 控制架构 / 变量地址 判断2:是否新增功能? 新增页面 / 新增回路 / 新增设备控制 判断3:是否仅修复缺陷? 定时器 / 报警延时 / 地址修正 / 注释 判断4:是否仅重新导出? 同修订号下多次编译 / 导出 确定递增段位并写入版本号 主版本 / 次版本 / 修订号 / 构建号 主版本变更必查 HMI变量地址表 通信协议与端口 I/O分配与接线 参数表与配方 次版本变更建议 更新功能清单 补充测试用例 同步HMI画面版本 更新操作手册 修订号变更记录 缺陷编号 修改位置 验证结果 构建号记录 导出时间 导出人 导出用途

图中左侧红色框表示主版本变更时必须同步检查的兼容性对象,右侧蓝色框表示次版本变更时建议同步更新的交付物,左下紫色框和右下橙色框分别对应修订号和构建号的记录要求。实际执行时,先按判断1到判断4的顺序确定递增段位,再按对应侧栏检查配套对象,避免只改程序不改画面。

五、客户交付版本的命名与冻结规则

客户交付版本与内部开发版本必须区分。建议在阶段字段使用 FAT 或 SAT 标识客户可见版本,并在版本号后增加交付标识。例如:

HZ-WTP_KY_FAT_M340_PLC-M241_V2.1.3.045_20250612_CUST-A
HZ-WTP_KY_SAT_M580_PLC-M580_V1.0.0.012_20250703_CUST-A

交付版本一旦提交客户,应执行“冻结”规则:该版本对应的PLC程序、HMI画面、参数表、I/O清单和测试记录不再修改;如需修改,必须递增修订号或次版本号,并重新生成新的交付版本。冻结的目的是保证客户手里的版本与工程内部版本一一对应,避免现场出现“客户说V2.1.3,工程师手里却是V2.1.4”的争议。

实用建议:在Control Expert中可将版本号写入项目属性的“注释”字段,并导出为PDF或文本随工程包一起归档。HMI画面建议在首页右下角放置版本号文本,变量地址使用内部字符串变量,例如 %MW100:10 存放版本号字符串,避免每次改版都要重新编辑画面。

六、版本号与回退路径

版本号规则最终要服务于回退。当现场升级后出现异常,工程师需要快速判断“回退到哪个版本”。建议在版本记录表中保留以下字段:版本号、日期、阶段、变更摘要、兼容的HMI版本、兼容的参数表版本、回退目标版本。例如:

版本号 日期 阶段 变更摘要 兼容HMI 回退目标
V2.1.3.045 20250612 FAT 修正报警延时 V2.1.3.045 V2.1.2.041
V2.1.4.001 20250620 SAT 新增配方页面 V2.1.4.001 V2.1.3.045
V2.2.0.001 20250703 SAT 通信改为Modbus TCP V2.2.0.001 不兼容回退

表中“不兼容回退”表示主版本变更后,旧版HMI和参数表不能直接使用,回退必须连同HMI和参数表一起回退。这样,版本号就不只是命名规则,而是现场变更控制和故障回退的判断依据。

注意:构建号不要用于区分功能差异。如果两个版本功能不同,应递增修订号或次版本号,而不是靠构建号区分。构建号只用于区分同一修订号下的多次导出,否则版本记录会迅速失控。

总结来说,Schneider自动化项目的版本命名与编号规范,核心是“四段号定义清楚、命名模板字段完整、工程内部绑定一致、交付版本冻结可查、回退路径明确”。做到这五点,版本号才能真正成为项目治理的工具,而不是文件名上的装饰。