3. 测试设备与仪器资源分类建模
在 TestStand 工程中,仪器资源管理的第一步不是写序列,而是把“设备”抽象成可被序列稳定引用的“资源”。如果直接把 GPIB::22::INSTR 这类地址硬编码进步骤,一旦更换接口卡、调整机架位置或替换同型号仪器,序列就会大面积失效。因此本节围绕三个维度建立分类模型:接口类型决定通信通道与寻址方式,功能角色决定测量能力与可复用步骤,资源命名规范决定序列与设备之间的解耦程度。
一、按接口类型分类:先分清“怎么连”
接口类型描述的是仪器与控制器之间的物理与协议通道,它直接影响 TestStand 中调用的驱动层和地址格式。常见六类接口的建模要点如下:
- GPIB:传统并行总线,地址形如
GPIB0::12::INSTR,其中 0 为板卡号、12 为仪器主地址。适合老式台式仪器,需注意总线速率与多设备串联时的地址冲突。 - VISA:不是物理接口,而是统一 I/O 抽象层。它可封装 GPIB、串口、TCP/IP、USB 等,地址如
TCPIP0::192.168.1.50::inst0::INSTR。在 TestStand 中优先通过 VISA 别名访问,避免直接写物理地址。 - PXI:模块化机箱总线,地址常表示为
PXI0::15::INSTR或通过槽位号定位。适合高通道数、高同步性场景,如多路 DMM 与开关矩阵。 - LXI:基于以太网的仪器标准,地址通常为
TCPIP0::192.168.1.60::INSTR,支持 Web 界面与 IEEE 1588 同步。适合分布式机架与远程测试。 - 串口:RS-232/485,地址如
ASRL3::INSTR,需配置波特率、数据位、停止位与流控。常用于电源、温箱等低速设备。 - TCP/IP:裸 Socket 通信,地址如
TCPIP0::192.168.1.70::5025::SOCKET,端口 5025 为 SCPI 常用端口。适合无 VISA 驱动或需自定义协议的设备。
建模时建议为每类接口建立独立的“接口层”配置项,记录板卡号、IP、端口、超时等参数,而不是散落在各步骤中。这样更换接口时只需改一处。
二、按功能角色建模:再分清“能做什么”
功能角色描述仪器在测试系统中的职责,它决定可复用的步骤模板与测量参数。典型角色包括:
- DMM(数字万用表):测量电压、电流、电阻、通断。关键参数为量程、分辨率、NPLC、触发方式。建模时应封装“配置—测量—读取”三步,并暴露量程与 NPLC 作为输入。
- 示波器:采集波形,关注时基、垂直档位、触发边沿、采样率。建模时需区分“单次采集”与“连续采集”,并定义波形数据落盘路径。
- 电源:输出直流电压/电流,关注设定值、限流值、上电顺序与关断顺序。建模时应把“上电”和“下电”做成独立可复用序列,避免顺序错误损坏被测件。
- 信号源:产生正弦、方波、任意波,关注频率、幅度、偏置、输出阻抗。建模时需记录波形类型与调制参数。
- 开关:矩阵或多路复用,关注通道映射、闭合/断开状态、扫描顺序。建模时应把“通道号—物理引脚”映射表独立维护。
功能角色建模的核心是“角色接口”与“具体型号”分离。例如定义 DMM_MeasureVoltage 角色步骤,内部再根据实际型号调用对应驱动。这样替换同角色仪器时,序列无需重写。
三、资源命名规范设计:让序列与设备解耦
命名规范的目标是:序列中只出现逻辑名,物理地址集中在配置文件中。推荐采用“站点—角色—序号”三段式命名,例如:
ST01_DMM_01 → 站点1 第1台数字万用表
ST01_SCOPE_01 → 站点1 第1台示波器
ST01_PSU_01 → 站点1 第1台电源
ST01_SWITCH_01 → 站点1 第1台开关矩阵
ST01_SIGGEN_01 → 站点1 第1台信号源
逻辑名与物理地址的映射建议放在 TestStand 的 Station Globals 或外部 CSV/INI 中,例如:
ST01_DMM_01,GPIB0::12::INSTR,34401A
ST01_SCOPE_01,TCPIP0::192.168.1.60::INSTR,DSOX3024T
ST01_PSU_01,ASRL3::INSTR,DP832
ST01_SWITCH_01,PXI0::15::INSTR,PXI-2530
ST01_SIGGEN_01,GPIB0::18::INSTR,33500B
命名时需遵守:只用大写字母、数字和下划线;角色缩写统一(DMM、SCOPE、PSU、SWITCH、SIGGEN);序号从 01 开始补零;站点号与工位物理编号一致。这样在序列中写 StationGlobals.ST01_DMM_01.Address 即可,换设备只改映射表。
四、建模落地:从分类到可执行配置
把上述三层落到 TestStand 工程中,可按以下顺序操作。第一步,在 Station Globals 中建立 ResourceMap 容器,按逻辑名存放地址、型号、接口类型、超时四个字段。第二步,为每个功能角色建立通用序列文件,例如 DMM_MeasureVoltage.seq,其输入参数为逻辑名与测量配置,内部通过 ResourceMap 解析出地址后调用 VISA。第三步,在测试序列中只写逻辑名与角色步骤,不出现任何物理地址。
判断建模是否成功,可以看三个信号:更换一台同角色仪器时,是否只需修改映射表一行;新增一个工位时,是否只需复制命名前缀并追加序号;序列在离线编辑时,是否能在不连接仪器的情况下完成语法检查。若这三点都满足,说明接口、角色、命名三层已经解耦。
^ST\d{2}_(DMM|SCOPE|PSU|SWITCH|SIGGEN)_\d{2}$,地址是否可被 VISA 解析,发现冲突立即报警。最后需要强调:接口类型、功能角色、逻辑名三者不是并列的标签,而是从物理到逻辑的逐层抽象。接口层回答“怎么连”,角色层回答“能做什么”,命名层回答“序列怎么引用”。只有三层同时建立并保持映射一致,TestStand 的仪器资源管理才具备可维护性与可移植性。