4. TestStand开发环境与工程组织
在TestStand中,工程组织方式直接决定了多工位测试系统的可维护性、可扩展性和团队协作效率。一个设计良好的工程结构,能让新增工位、修改测试步骤、复用类型定义变得清晰可控;而组织混乱的工程,往往在工位数量增加后迅速演变为难以维护的“意大利面条”。本节围绕Workspace、Sequence File层级、Station Globals、类型定义与文件命名规范五个核心概念,说明如何构建一个结构清晰、可长期演进的多工位测试工程。
Workspace:工程的顶层容器
Workspace(工作区)是TestStand工程的顶层组织单元,对应磁盘上的.tsw文件。它本身不包含测试逻辑,而是以引用方式组织多个Sequence File、代码模块、配置文件和部署资源。在多工位系统中,Workspace的价值在于:把与同一被测产品相关的所有序列文件、类型定义和工位配置集中在一个可打开、可部署、可版本管理的边界内。
一个典型的多工位Workspace结构如下:
MultiStationTest.tsw
├── Station_A.seq
├── Station_B.seq
├── Station_C.seq
├── Common
│ ├── CommonTypes.ini
│ ├── GlobalConfig.seq
│ └── Utilities.seq
└── Deploy
└── StationConfig.tsd
这里需要区分两个概念:Workspace文件只保存引用路径,不复制被引用文件的内容。因此当工程需要迁移到另一台机器时,必须保证引用路径有效,或使用相对路径组织目录结构。建议将Workspace文件放在工程根目录,所有被引用文件使用相对于Workspace的路径,这样整个工程目录可以整体拷贝或纳入版本控制。
Sequence File层级:从文件到步骤组
Sequence File(.seq)是TestStand中承载测试逻辑的基本文件,其内部层级为:Sequence File → Sequence → Step Group → Step。理解这个层级是组织测试逻辑的基础。
Sequence File可以包含多个Sequence,每个Sequence对应一个可独立执行的测试流程。在多工位系统中,常见的组织方式有两种:一是每个工位一个Sequence File,文件内包含该工位的全部Sequence;二是按功能划分Sequence File,例如PowerTest.seq、RFTest.seq,每个工位通过调用这些功能Sequence组合出自己的测试流程。前者适合工位差异大、独立部署的场景,后者适合工位共享大量测试逻辑的场景。
Sequence内部的Step Group分为Setup、Main、Cleanup三个固定组。Setup用于初始化仪器、加载配置;Main承载核心测试步骤;Cleanup负责资源释放和状态复位。这个分组不是可选的装饰,而是TestStand执行模型的组成部分:即使Main中某一步骤失败,Cleanup仍会执行,这对多工位系统中防止仪器资源泄漏至关重要。
Station Globals:工位级共享数据
Station Globals是TestStand中定义在Station级别的全局变量集合,所有Sequence File都可以访问。在多工位系统中,它承担着“工位配置中心”的角色。典型用途包括:仪器资源地址(如VISA::TCPIP::192.168.1.101::INSTR)、工位编号、测试阈值、操作员权限等级、日志文件路径等。
Station Globals的定义位于Station配置中,可以通过TestStand的Station Options对话框编辑,也可以导入.ini文件批量配置。在多工位部署时,一个常见做法是:为每个工位准备一份独立的Station Globals配置文件,部署时根据工位编号加载对应文件。例如:
[StationGlobals]
StationID = "A01"
DMM_Address = "TCPIP::192.168.1.101::INSTR"
PowerSupply_Address = "TCPIP::192.168.1.102::INSTR"
PassThreshold_V = 3.300
PassTolerance_mV = 50
LogPath = "D:\TestLogs\StationA"
需要特别注意的是,Station Globals是运行时变量,修改后不会自动写回配置文件。如果需要在运行时动态调整并持久化,应通过StationGlobals的WriteToFile方法显式保存,或在Cleanup中统一处理。
类型定义:自定义数据类型的组织
TestStand的类型定义(Type Definition)用于描述自定义数据结构,例如测试结果记录、工位配置结构、测量数据包等。类型定义可以保存在Sequence File内部,也可以独立为.ini文件供多个Sequence File共享。在多工位系统中,推荐将公共类型定义集中到CommonTypes.ini,各工位Sequence File通过引用方式使用。
一个典型的多工位测试结果类型定义示例:
Type: StationTestResult
StationID : String
TestTime : String
SerialNumber : String
Measurements : Container
Voltage_V : Number
Current_mA : Number
Frequency_MHz : Number
PassFail : Boolean
ErrorCode : Number
ErrorMessage : String
使用共享类型定义的好处是:当结果结构需要增加字段时,只需修改CommonTypes.ini一处,所有引用该类型的工位自动获得更新。这比在每个Sequence File中重复定义要可靠得多。
文件命名规范
多工位工程的文件命名应遵循一致、可预测的规则,便于在Workspace中快速定位和版本管理。建议采用以下约定:
- Workspace文件:
项目名.tsw,如MultiStationTest.tsw。 - 工位Sequence File:
Station_工位编号.seq,如Station_A01.seq。 - 功能Sequence File:
功能名.seq,如PowerTest.seq、RFTest.seq。 - 类型定义文件:
CommonTypes.ini或类型名.ini。 - 工位配置文件:
StationConfig_工位编号.ini。 - 部署文件:
Deploy_工位编号.tsd。
命名中避免使用空格和中文,使用下划线分隔单词。版本号可以放在文件名末尾,如Station_A01_v2.seq,但更推荐用版本控制工具管理,而不是在文件名中堆叠版本号。
.seq平铺在根目录。
工程组织检查清单
在完成工程结构搭建后,可以用以下清单快速检查组织是否合理:
| 检查项 | 合格标准 |
|---|---|
| Workspace引用路径 | 全部使用相对路径,工程目录可整体迁移 |
| Sequence File划分 | 工位差异与共享逻辑分离,无重复定义 |
| Step Group使用 | Setup/Main/Cleanup职责明确,Cleanup必执行 |
| Station Globals | 工位相关参数集中管理,无硬编码地址 |
| 类型定义 | 公共类型集中定义,工位文件引用而非复制 |
| 文件命名 | 统一前缀/后缀,无空格和中文,版本可控 |
以上五个概念——Workspace、Sequence File层级、Station Globals、类型定义、文件命名规范——共同构成了TestStand多工位工程的骨架。它们不是孤立的配置项,而是相互关联的组织决策:Workspace划定边界,Sequence File层级定义逻辑结构,Station Globals提供工位级参数,类型定义保证数据一致性,命名规范维持可读性。在实际项目中,建议先确定Workspace和目录结构,再定义公共类型和Station Globals,最后按工位编写Sequence File,这样能最大程度减少后期的返工和重构。