4. 追溯标识设计
在TestStand测试系统中,追溯标识的设计质量直接决定了后续质量分析、不良品召回和过程能力评估的可行性。一个完整的追溯标识体系通常由四类核心标识构成:序列号(Serial Number)标识单件产品,批次号(Lot/Batch Number)标识一组同源产品,工单号(Work Order)标识一次生产任务,测试站ID(Station ID)标识执行测试的物理工位。这四类标识并非孤立存在,它们需要在TestStand运行时被正确绑定到变量、写入测试报告并随数据流传递到质量系统。
四类标识的语义与绑定位置
序列号是最细粒度的追溯单元,通常由MES在工单开工时按规则生成,或由产线扫码枪从产品标签读取。在TestStand中,序列号一般绑定到RunState.Root.Locals.UUT.SerialNumber,这是TestStand内置的UUT(被测单元)容器中的标准字段。批次号绑定到RunState.Root.Locals.UUT.LotNumber,工单号可绑定到RunState.Root.Locals.UUT.WorkOrder或自定义的StationGlobals变量中。测试站ID则更适合放在StationGlobals.StationID中,因为它在整个测试站生命周期内保持不变,不需要每个UUT重复赋值。
需要特别注意的是,TestStand的RunState.Root.Locals.UUT容器在每个测试序列执行时会被重新初始化,因此序列号、批次号、工单号这类与单件产品绑定的标识必须在PreUUT回调或序列的Setup步骤中完成赋值。而测试站ID属于站级常量,应在StationGlobals中一次性配置,避免在每个UUT中重复写入。
绑定实现:从数据源到运行时变量
实际项目中,序列号、批次号和工单号通常来自MES接口或产线扫码枪。以扫码枪为例,操作员扫描产品标签后,条码内容通过串口或键盘仿真方式进入TestStand。推荐在PreUUT回调中调用一个GetUUTInfo序列,该序列通过TCP或HTTP请求向MES查询当前序列号对应的批次号和工单号,避免操作员手动输入多个字段。以下是一个典型的变量赋值代码片段(在TestStand的C#或LabVIEW动作步骤中执行):
// 在 PreUUT 回调中执行
RunState.Root.Locals.UUT.SerialNumber = scanResult; // 扫码枪返回值
RunState.Root.Locals.UUT.LotNumber = mesResponse.Lot;
RunState.Root.Locals.UUT.WorkOrder = mesResponse.WorkOrder;
// StationID 已在 StationGlobals 中配置,无需重复赋值
RunState.Root.Locals.UUT.StationID = StationGlobals.StationID;
这里有一个容易出错的细节:RunState.Root.Locals.UUT中的字段名必须与报告模板中引用的路径完全一致。如果报告模板写的是UUT.SerialNumber,而代码中写入了UUT.SN,报告中将出现空值。建议在项目初期就建立一份变量命名规范,并在TestStand的StationGlobals中定义好所有标识字段的默认值,便于调试时快速识别缺失项。
测试站ID的特殊处理
测试站ID与前三类标识的本质区别在于它的生命周期。序列号、批次号、工单号随每个UUT变化,而测试站ID在测试站部署时确定,通常与物理工位、设备编号、校准状态绑定。因此,测试站ID应存储在StationGlobals.StationID中,并在TestStand启动时通过配置文件或环境变量加载。如果产线存在多台测试站,建议在StationGlobals中同时维护StationID、StationName、LineID三个字段,便于质量系统按产线维度聚合数据。
报告模板中的变量引用与验证
TestStand的报告生成器支持在模板中直接引用运行时变量。以XML报告为例,可以在报告模板的UUT节点下添加如下字段:
<UUT>
<SerialNumber><!-- 引用 RunState.Root.Locals.UUT.SerialNumber --></SerialNumber>
<LotNumber><!-- 引用 RunState.Root.Locals.UUT.LotNumber --></LotNumber>
<WorkOrder><!-- 引用 RunState.Root.Locals.UUT.WorkOrder --></WorkOrder>
<StationID><!-- 引用 StationGlobals.StationID --></StationID>
</UUT>
绑定完成后,必须进行验证。最直接的方法是在TestStand执行一次完整的测试序列,然后打开生成的报告文件,检查四个标识字段是否都有值且格式正确。更严格的验证方式是在PostUUT回调中增加一段校验逻辑:如果SerialNumber为空或等于默认值,则将测试结果标记为"追溯信息不完整",并阻止报告上传到质量系统。这样可以防止无追溯标识的数据污染质量数据库。
与质量系统的数据对接
四类标识最终需要随测试结果一起上传到质量系统。常见的对接方式有两种:一是TestStand直接通过数据库步骤将结果写入质量系统的数据库表;二是TestStand生成报告文件,由独立的文件上传服务解析报告并写入质量系统。无论采用哪种方式,都需要确保标识字段在传输过程中不被截断或转义。例如,工单号中如果包含特殊字符(如斜杠或空格),在XML报告中需要正确转义,在数据库写入时需要参数化查询,避免SQL注入或字段截断。
从追溯设计的角度看,序列号、批次号、工单号和测试站ID构成了一个四维索引:序列号定位单件,批次号定位一组,工单号定位一次生产任务,测试站ID定位执行位置。当质量系统收到一条不良记录时,可以通过这四个维度快速圈定影响范围——是单件问题、批次问题、工单问题,还是某个测试站的系统性问题。因此,在TestStand运行时变量绑定阶段就保证四类标识的完整性和准确性,是整个追溯体系能否发挥作用的基础。