3. 自动化测试平台总体设计
Coherent 光电器件(如激光器、光电探测器、光调制器、光放大器)的自动化测试,本质上是一条从“物理激励”到“数据结论”的完整链路:光源、电源、温控、光功率计、光谱仪、示波器、误码仪等仪器对被测件施加激励并采集响应,软件则负责把激励条件、采集结果和判定逻辑组织成可重复执行的测试流程。若把这条链路写成一个大而全的单体程序,任何一次仪器更换、接口变更或测试项扩展都会牵动全局。因此本平台采用五层架构:硬件层、驱动层、仪器控制层、测试执行层、数据管理层,每层只暴露有限接口,层间通过明确定义的契约通信。
下面这张图给出五层架构的纵向关系、每层的核心对象,以及层间接口的传递内容。图中箭头方向表示调用与数据流向:上层向下发出“请求/指令”,下层向上返回“响应/数据”。
各层职责与接口定义
硬件层是物理基础,包含所有激励与测量仪器以及被测器件。它不承载软件逻辑,但决定了平台的能力边界:例如激光源波长范围、光功率计最小可测功率、温控台控温精度、示波器带宽。硬件层的“接口”是物理接口与光路连接,例如 GPIB 地址、USB 资源名、LAN 的 IP 与端口、光路的 FC/APC 或自由空间耦合方式。设计阶段必须先把这些资源登记为一张资源清单,后续驱动层才能按名寻址。
驱动层负责“把命令送出去、把数据收回来”。它封装 VISA、TCP、串口或厂商 DLL,向上提供统一的 open/write/read/close 会话接口。驱动层不解释命令语义,只保证字节级通信可靠,并处理超时、重试、终止符和编码。例如对一台通过 LAN 连接的功率计,驱动层只需知道资源字符串 TCPIP0::192.168.1.50::5025::SOCKET,并负责建立 socket、发送 SCPI 字符串、读取以换行结尾的响应。
仪器控制层是“语义层”,把裸命令翻译成有物理意义的操作。它定义仪器抽象模型:通道、量程、单位、耦合方式、触发模式、状态机。例如 setVoltage(ch, v) 内部会做量程检查、单位换算、命令拼接与回读校验;readPower(ch) 会处理单位(dBm/W)转换并返回带单位的数值对象。这一层还负责仪器状态管理,避免在错误状态下发命令,例如温控未稳定时不允许开始光功率扫描。
测试执行层是“业务层”,负责把测试项组织成可执行序列。它接收测试计划,按顺序调用仪器控制层接口,执行参数扫描、采集、判定和异常处理。例如一个激光器 L-I 曲线测试:设置温控 25 ℃ → 等待稳定 → 从 0 mA 到 120 mA 以 5 mA 步进设置电流 → 每步读取光功率 → 记录 (I, P) 对 → 计算阈值电流与斜率效率 → 与规格比对判定。测试执行层不直接操作仪器,只调用仪器控制层接口,因此测试逻辑与仪器型号解耦。
数据管理层负责测试记录、原始数据、判定结果、器件履历和报表导出。它向上提供 save/query/export 接口,向下持久化到数据库或文件。数据管理层需要保存“原始数据 + 元数据”:原始数据包括波形、光谱、功率序列;元数据包括时间戳、操作员、仪器配置、DUT 序列号、测试程序版本。这样任何一条测试记录都可追溯、可复现。
接口契约与数据流示例
层间接口的核心是“契约稳定、实现可换”。下面给出一个 L-I 测试中跨层调用的数据流示例,帮助理解各层实际传递什么。
测试执行层: run(LI_sequence)
→ 仪器控制层: setTemperature(25.0)
→ 驱动层: write(":TEMP 25.0")
→ 驱动层: read() → "25.0"
→ 仪器控制层: waitStable(timeout=30s)
→ 仪器控制层: setCurrent(0 mA)
→ 驱动层: write(":CURR 0.000")
→ 仪器控制层: readPower()
→ 驱动层: write(":POW?")
→ 驱动层: read() → "1.23e-6"
→ 仪器控制层: 单位换算 → 1.23 µW
→ 测试执行层: 记录 (0 mA, 1.23 µW)
... 重复至 120 mA ...
→ 测试执行层: 计算阈值电流 Ith = 18.4 mA, 斜率效率 = 0.52 W/A
→ 数据管理层: save({deviceId, timestamp, points, Ith, slope, pass/fail})
从示例可见,测试执行层只关心“设温度、设电流、读功率、记录、判定”,不关心 SCPI 命令长什么样;仪器控制层只关心“如何把物理量变成正确命令并校验”,不关心测试序列如何编排;驱动层只关心“字节是否可靠收发”。这种分工使平台在更换功率计品牌时,只需新增一个仪器控制层适配器,测试执行层与数据管理层完全不动。
分层带来的工程收益
五层架构的直接收益是可替换性与可测试性。硬件层更换仪器,只影响驱动层与仪器控制层的适配实现;测试执行层新增测试项,只调用已有仪器控制接口;数据管理层调整存储格式,不影响测试逻辑。同时,每一层都可以独立验证:驱动层可用回环或模拟器测试,仪器控制层可用虚拟仪器测试,测试执行层可用桩对象测试,数据管理层可用样例数据测试。对于 Coherent 光电器件这种测试项多、仪器组合复杂、数据追溯要求高的场景,分层架构是控制复杂度、保证长期可维护性的基础设计。