1. TestStand限值与配置管理全景

在自动化测试系统中,测试逻辑本身只解决了“怎么测”的问题,而“测到什么程度算合格”“不同工位为什么结果不同”“换一条产线要不要重写序列”这些问题,属于限值与配置管理要解决的范畴。TestStand 把这两类问题拆成两条既独立又交汇的主线:一条是测试限值,决定测量结果如何被判为通过或失败;另一条是配置数据,决定同一套测试序列在不同站台、不同产品、不同环境下如何表现出一致或差异化的行为。理解这两条主线以及它们与站台模型、部署场景的关系,是后续所有配置操作的基础。

一、测试限值:判定结果的“尺子”

测试限值(Limits)是附加在测量步骤上的判定规则。一个典型的数值型限值由下限(Low)、上限(High)、单位(Units)和比较方式(Comparison Type)组成。TestStand 内置的比较类型包括 GELE(大于等于下限且小于等于上限)、GTLT(严格大于下限且严格小于上限)、EQ、NE、LT、GT 等。选择哪种比较方式直接影响边界值附近的判定结果,例如测量值为 5.000 V、限值为 4.900~5.100 V 时,GELE 判通过,而 GTLT 在恰好等于 5.100 V 时判失败。

限值并不只有“通过/失败”两种状态。TestStand 支持为每个限值配置警告限值(Warning Limits),形成“通过—警告—失败”的三态判定。例如某电源模块输出电压标称 12 V,失败限值设为 11.4~12.6 V,警告限值设为 11.7~12.3 V,则 12.4 V 会判为警告而非失败,便于在批量生产中提前发现工艺漂移。此外,限值还可以按字符串、布尔值、数组等数据类型定义,字符串限值常用于比对固件版本号或序列号格式。

限值的来源方式同样关键。它可以直接硬编码在步骤中,也可以从外部文件(如 CSV、INI、数据库)加载,或通过 TestStand 的限值文件(Limits File)机制统一管理。硬编码适合调试阶段,而外部化限值才能支持“同一序列、不同产品型号”的复用。

二、配置数据:让序列“可移植”

配置数据是测试序列运行时可读取的参数集合,典型内容包括仪器地址、通道映射、超时时间、采样率、产品型号、操作员权限等。TestStand 提供多种配置数据载体:Station Globals(站台全局变量)、File Globals(文件全局变量)、RunState 变量以及外部配置文件。它们的生命周期和可见范围不同:Station Globals 随站台进程存在,适合存放本机仪器资源;File Globals 随序列文件加载,适合存放与测试逻辑强相关的参数;RunState 则用于单次执行过程中的临时数据传递。

配置管理的核心目标是解耦——把“测试逻辑”与“环境相关数据”分开。这样,当测试从工程站转移到产线站、从 A 产品切换到 B 产品时,只需替换配置数据,而不必修改序列本身。TestStand 的站台模型(Station Model)正是这一思想的集中体现:它在序列执行前后插入回调(Callback),如 ProcessSetup、PreUUT、PostUUT、ProcessCleanup,允许在统一位置完成配置加载、结果记录、报表生成等动作。

三、站台模型与部署场景的整体关系

把限值、配置数据、站台模型和部署场景放在一起看,可以得到一条清晰的数据流:部署场景决定站台模型的选择,站台模型决定配置数据的加载时机,配置数据为测试步骤提供限值和运行参数,测试步骤产生测量结果,限值对结果做出判定,判定结果再经站台模型回调写入报表或数据库。这条链路中任何一环配置错误,都会表现为“序列能跑但结果不对”或“换台机器就失败”。

TestStand 限值与配置管理全景关系 部署场景 工程站 / 产线站 单机 / 多工位并行 站台模型 Station Model ProcessSetup / PreUUT PostUUT / ProcessCleanup 配置数据 Station Globals / File Globals 仪器地址 / 通道 / 超时 测试序列 测量步骤 + 限值判定 测试限值 Low / High / Warning 测量结果 Pass / Warning / Fail 报表 / 数据库 PostUUT 回调写入 结果反馈 / 追溯 部署场景 → 站台模型 → 配置数据 → 测试序列(限值判定)→ 测量结果 → 报表/数据库 → 反馈追溯

四、一个可对照的配置示例

假设某产线测试一款 DC-DC 模块,工程站与产线站使用同一份序列文件,但仪器地址和限值不同。可以在 Station Globals 中定义如下结构(示例参数,非实测值):

StationGlobals.Instrument.DMM_Address = "GPIB0::22::INSTR"
StationGlobals.Instrument.PowerSupply_Address = "TCPIP0::192.168.1.50::inst0::INSTR"
StationGlobals.Limits.Vout_Low = 11.4
StationGlobals.Limits.Vout_High = 12.6
StationGlobals.Limits.Vout_WarnLow = 11.7
StationGlobals.Limits.Vout_WarnHigh = 12.3
StationGlobals.Product.Model = "DCDC-12W"

序列中的测量步骤通过 StationGlobals.Limits.Vout_Low 等变量引用限值,而不是写死数值。当切换到另一型号时,只需在 ProcessSetup 回调中根据 StationGlobals.Product.Model 重新赋值,或从对应的限值文件加载。这样,同一序列文件即可覆盖多个产品,部署时只需维护配置数据。

判断配置是否“解耦到位”的一个实用标准:把序列文件复制到另一台站台,只修改 Station Globals 或外部配置文件,序列能否直接运行并给出正确判定。如果必须打开序列修改步骤参数,说明配置管理尚未完成。

五、常见误区与排查方向

初学者最容易混淆的是“限值写在哪里”和“配置从哪里来”。限值属于判定规则,配置数据属于运行环境,两者可以都放在 Station Globals 中,但职责不同。另一个常见问题是站台模型回调执行顺序不清:ProcessSetup 在序列加载后、PreUUT 在每个 UUT 测试前执行,若把配置加载放在 PreUUT 中,会导致每个 UUT 重复加载,影响效率;放在 ProcessSetup 中则只加载一次。排查“换站台后结果异常”时,应优先检查 Station Globals 是否随站台变化、限值文件路径是否为绝对路径、以及站台模型是否被正确指定。