3. 测试站版本清单与资产盘点
版本治理的第一步不是升级,而是"看清现状"。一个 TestStand 测试站真正决定行为的东西,往往分散在五类资产里:TestStand 引擎本身、序列文件、代码模块、配置文件、驱动与插件。它们各自独立演进,却又在运行时彼此咬合。如果只记录"TestStand 是 2019 还是 2021",而不知道某个工位的 MainSequence.seq 调用了哪个版本的 LabVIEW VI、加载了哪一版 NI-DAQmx,那么一旦出现"换台电脑就报错"或"昨天还能过今天不过"的问题,排查就会变成盲猜。本节要做的,就是把这五类资产变成一份可追溯的台账。
为什么必须做资产盘点
测试站的行为由"引擎 + 序列 + 代码 + 配置 + 驱动"共同决定,任何一项版本漂移都可能改变结果。典型场景包括:TestStand 引擎从 2019 升到 2021 后,某些步骤类型的默认行为变化导致序列报错;某台机器上 NI-DAQmx 是 19.5,另一台是 21.3,同一段采集代码的时序参数解释不同;操作员手工改过 StationGlobals.ini 里的限值,却没有记录。资产盘点的价值在于:把"隐性依赖"变成"显性记录",让任何一次变更都有据可查、可回退、可复现。
五类资产及其版本标识
不同资产的"版本"含义不同,采集方式也不同,需要分别对待:
- TestStand 引擎:版本号来自
Help > About或注册表HKLM\SOFTWARE\National Instruments\TestStand\CurrentVersion,同时记录补丁号(如 2021 f1)。引擎版本决定了序列编辑器、运行时引擎和 API 的行为。 - 序列文件(.seq):没有内置版本号,需要人为管理。建议在序列文件属性或
StationGlobals中维护一个SeqVersion变量,并在文件命名或版本控制中体现。同时记录文件路径、最后修改时间、修改人。 - 代码模块:包括 LabVIEW VI、C/C++ DLL、.NET 程序集、Python 脚本等。版本标识来自各自格式:VI 有版本号和修订号,DLL 有文件版本属性,.NET 程序集有 AssemblyVersion。必须记录模块路径和调用它的步骤。
- 配置文件:
StationGlobals.ini、TestStand.ini、SearchPaths配置、硬件配置文件(如.ini、.xml)。这类文件常被现场修改,需要记录基线版本和当前差异。 - 驱动与插件:NI-DAQmx、NI-VISA、NI-DMM、InstrumentStudio、Switch Executive 等。版本号来自 NI Package Manager 或
MAX,需记录驱动名称、版本、安装日期。
资产台账的字段设计
台账不是简单的清单,而是一张关系表。每条记录至少应包含以下字段,才能支撑追溯:
| 字段 | 说明 | 示例 |
|---|---|---|
| 资产类别 | 引擎/序列/代码/配置/驱动 | 代码模块 |
| 资产名称 | 可读名称 | 采集VI |
| 文件路径 | 绝对路径或相对站根路径 | D:\Station\Modules\Acquire.vi |
| 版本号 | 该资产自身的版本标识 | 1.3.0.12 |
| 关联序列 | 调用它的序列文件 | MainSequence.seq |
| 关联步骤 | 具体步骤名 | Acquire_Voltage |
| 基线版本 | 已验证通过的版本 | 1.3.0.10 |
| 当前状态 | 一致/漂移/待确认 | 漂移 |
| 最后核对日期 | 最近一次盘点时间 | 2024-06-12 |
其中"关联序列"和"关联步骤"是台账区别于普通清单的关键——它把代码模块和序列文件连起来,形成可追溯的调用链。当某个模块升级时,能立刻知道哪些序列受影响。
盘点流程与采集方法
盘点可以按"先自动、后人工"的顺序进行。TestStand 引擎和驱动版本可以通过脚本或命令行批量采集;序列文件和代码模块可以通过遍历站根目录、读取文件属性获得;配置文件则需要对比基线。下面是一段用于采集引擎与驱动版本的示例思路(伪代码,参数为示例值):
# 采集 TestStand 引擎版本(示例)
reg query "HKLM\SOFTWARE\National Instruments\TestStand\CurrentVersion" /v Version
# 输出示例:Version REG_SZ 21.0.0f1
# 采集 NI 驱动版本(示例,通过 nipkg)
nipkg list-installed --filter "ni-daqmx"
# 输出示例:ni-daqmx 21.3.0.49152
# 遍历站根目录下的 .seq 与模块文件(示例)
Get-ChildItem -Path "D:\Station" -Recurse -Include *.seq,*.vi,*.dll |
Select-Object FullName, LastWriteTime, Length
采集完成后,把结果填入台账,并与基线版本逐条比对。比对结果分为三类:一致(当前版本等于基线)、漂移(当前版本不等于基线)、待确认(无基线或无法读取版本)。漂移项需要重点标注,并记录漂移原因和影响评估。
从台账到可追溯
台账建立后,还需要让它"活"起来。建议把台账纳入版本控制(如 Git),每次变更都提交记录;在测试站启动时,可以增加一个自检步骤,自动比对当前资产版本与台账基线,发现漂移时给出提示。这样,资产盘点就从一次性的文档工作,变成了持续运行的治理机制。
把这张关系图落到实际工作中,就是一份可执行的盘点清单。建议每次盘点后更新台账的"最后核对日期",并对漂移项做一次影响评估:该漂移是否影响测试结果?是否需要回退到基线?如果确认新版本可用,则更新基线版本并记录变更原因。这样,台账不仅记录了"现在是什么",也记录了"为什么变成这样",为后续的版本治理提供完整依据。