3. 程序版本标识方法
在MELSEC iQ-R项目中,程序版本治理的第一步不是“改程序”,而是让每一个程序文件都能被唯一识别。GX Works3本身并不提供类似Git的提交历史,但它提供了四类可写入、可读取、可随工程一起保存的标识载体:程序文件属性、程序注释、版本号字段以及日期时间戳。把这四类信息组合成一套命名与填写规则,就能在不依赖外部工具的前提下,实现“谁在什么时候改了什么、当前是第几版、能否回退”的基本追溯能力。
四类标识载体的定位与差异
程序文件属性是GX Works3中每个程序(Program)对象自带的元数据入口,在导航窗口右键程序名选择“属性”即可打开。其中“程序名”是工程内部唯一键,改名会影响调用关系,因此不建议把版本信息塞进程序名;“标题”“作者”“注释”等字段适合承载版本说明。程序注释分为程序级注释和行/步级注释,前者用于说明该程序的整体用途与版本变更摘要,后者用于标注关键修改点。版本号字段是GX Works3为程序文件提供的独立版本标识,通常以数字或字符串形式保存,适合做递增管理。日期时间戳则来自工程保存时间或程序最后修改时间,是客观时间证据,但精度只到分钟,且复制工程时可能被一并复制,因此不能单独作为版本依据。
四者的关键差异在于:程序名是“身份”,版本号是“序号”,注释是“说明”,时间戳是“证据”。版本标识规则的本质,就是规定这四者如何协同填写,使任意一个程序文件在任意时刻都能被唯一确定。
版本号命名规则的设计
版本号建议采用“主版本.次版本”两段式,例如 V1.00、V1.01、V2.00。主版本在程序功能结构发生不兼容变更时递增,例如新增了会影响调用接口的FB、改变了扫描顺序或重构了安全逻辑;次版本在功能兼容的修改中递增,例如修正定时器设定值、调整注释、优化触点逻辑。每次修改程序后,必须同步更新版本号,不能出现“程序已改、版本号未动”的情况。
对于多程序工程,建议在版本号前加程序缩写,形成“程序缩写-版本号”的复合标识,例如 MAIN-V1.03、SAFE-V2.01、HMI-V1.10。这样在导出程序文件或截图交流时,单看文件名就能判断来源与版本。需要强调的是,版本号字段本身是文本,GX Works3不会自动递增,也不会校验格式,因此规则必须靠人工执行和检查来保证。
注释字段的填写规范
程序注释建议采用固定三段式:第一行写程序用途,第二行写本次变更摘要,第三行写修改人与日期。例如:
【用途】主控流程:启动/停止/急停复位
【变更】V1.03 修正急停复位后Y10未断开问题
【修改】张工 2025-06-12
行级注释则用于标注具体修改位置,建议在修改点前一行插入 // V1.03 修改:增加急停复位互锁,这样在程序列表中搜索“V1.03”即可定位本次所有改动。注释不参与编译,不影响程序运行,但它是版本追溯中最直接的人工线索。
日期时间戳的使用边界
GX Works3在保存工程时会记录时间,程序属性中也能看到最后修改时间。时间戳的优点是客观、无需人工填写;缺点是精度有限、复制工程时会保留原时间、且无法区分“同一分钟内多次修改”。因此时间戳只能作为辅助证据,不能替代版本号。建议在每次保存前,先在程序注释中写入当天日期,再执行保存,使注释日期与系统时间戳互相印证。
可追溯版本标识规则示例
下面给出一份可直接套用的版本标识规则表,适用于中小型iQ-R项目。字段可根据项目规模增减,但版本号、注释、日期三项建议保留。
| 标识载体 | 填写位置 | 格式示例 | 更新时机 |
|---|---|---|---|
| 程序名 | 导航窗口程序名 | MAIN / SAFE / HMI | 仅结构重构时调整 |
| 版本号 | 程序属性·版本 | MAIN-V1.03 | 每次修改程序后 |
| 程序注释 | 程序属性·注释 | 用途/变更/修改人 | 每次修改程序后 |
| 行级注释 | 修改点前一行 | // V1.03 修改:… | 修改当行时 |
| 日期时间戳 | 工程保存时间 | 2025-06-12 14:30 | 保存工程时自动生成 |
规则落地时的常见问题
第一类问题是“只改程序不改版本号”。这会导致版本号与实际内容脱节,回退时无法判断哪个文件对应哪个版本。解决办法是把“更新版本号与注释”写入修改流程的最后一步,作为保存前的强制检查项。第二类问题是“注释写在程序名里”。程序名是调用键,改名会引发未定义符号或调用失败,版本信息应放在属性字段而非程序名。第三类问题是“依赖时间戳判断新旧”。当工程被复制、另存或从备份恢复时,时间戳可能失真,必须以版本号为准。第四类问题是“多人各自维护版本号”。建议指定一名版本管理员,或在每次合并前统一核对版本号与注释,避免出现同一版本号对应不同内容的情况。
把上述规则固定下来后,GX Works3中的每个程序文件都会同时具备身份、序号、说明和时间四类信息。即使没有外部版本管理工具,也能通过程序属性、注释搜索和时间戳比对,快速回答“当前是第几版、上一版改了什么、谁改的、什么时候改的”这四个追溯问题。下一阶段的工作,是在此基础上建立变更前后的差异比对与回退机制。