1. 量子测控虚拟实验平台环境搭建与仪器连接验证

实验平台的三层连接关系

量子测控虚拟实验平台由三层构成:软件层(测控主控软件与仪器驱动)、虚拟仪器层(虚拟示波器、任意波形发生器、数据采集卡)和通信链路层(虚拟总线/回环通道)。环境搭建的核心不是“装完软件就结束”,而是让三层之间的通信链路可被自检确认。下图给出本例要验证的连接拓扑与自检信号流向。

软件层 测控主控软件 设备枚举 / 自检调度 仪器驱动层 VISA / 虚拟驱动绑定 连接状态记录 状态表 / 基础参数 通信链路层(虚拟总线 / 回环通道) AWG 通道 CH1 → 回环 回环 → 示波器 CH1 DAQ AI0 ← 回环分路 虚拟仪器层 任意波形发生器 AWG · CH1 自检信号:1 kHz 正弦 幅度 1.0 Vpp 虚拟示波器 OSC · CH1 时基 200 µs/div 触发:CH1 上升沿 0 V 数据采集卡 DAQ · AI0 采样率 100 kSa/s 量程 ±5 V 回环 分路 自检判据:示波器测得 ≈1 kHz / 1.0 Vpp 正弦;DAQ 采样序列频率一致;三设备状态均为“已连接”

环境搭建与驱动配置的关键动作

虚拟平台虽然不接真实硬件,但驱动绑定与设备枚举逻辑与真实测控系统一致。建议按“先软件、再驱动、后链路”的顺序推进,每一步都留下可核对的证据。

  1. 安装测控主控软件:确认安装路径无中文与空格,安装完成后启动主控软件,检查“设备管理器”面板是否为空列表(此时尚未绑定驱动,属正常状态)。
  2. 配置虚拟仪器驱动:在驱动配置界面为三台虚拟仪器分别指定驱动类型与逻辑地址。本例约定:AWG 逻辑地址 AWG0::CH1,示波器 OSC0::CH1,DAQ DAQ0::AI0。逻辑地址是后续自检脚本引用设备的唯一标识,必须与驱动配置一致。
  3. 建立回环通道:将 AWG CH1 输出映射到示波器 CH1 输入,同时分路到 DAQ AI0。虚拟平台中该映射通过“通道路由表”完成,需确认路由方向为“输出→输入”,避免反向配置导致无信号。
  4. 执行连接自检:调用主控软件的自检功能,依次检查设备枚举、驱动握手、通道连通三项。任一项失败时,自检报告会给出失败环节,便于定位。
逻辑地址一旦确定,后续所有自检脚本、波形配置都引用同一地址。若中途修改驱动绑定,需同步更新脚本中的设备标识,否则会出现“设备未找到”的误报。

用自检脚本验证通信链路

手工点击自检按钮只能得到“通过/失败”,无法留下基础参数。更可靠的做法是写一段自检脚本,主动下发已知信号并读回测量值,把连接状态与基础参数写入记录。下面给出一个可运行的自检脚本示例(Python 风格,虚拟平台提供同名 API)。

from qc_vlab import Session, AWG, OSC, DAQ

# 1. 建立会话并绑定逻辑地址
s = Session()
awg = AWG(s, "AWG0::CH1")
osc = OSC(s, "OSC0::CH1")
daq = DAQ(s, "DAQ0::AI0")

# 2. 下发自检信号:1 kHz 正弦,1.0 Vpp,直流偏置 0 V
awg.set_waveform(shape="sine", freq=1e3, vpp=1.0, offset=0.0)
awg.output_on()

# 3. 配置示波器采集参数
osc.set_channel(1, range_vpp=2.0, coupling="DC")
osc.set_timebase(200e-6)          # 200 µs/div
osc.set_trigger(source="CH1", level=0.0, edge="rising")

# 4. 配置 DAQ 采样参数
daq.set_channel("AI0", range_v=5.0, coupling="DC")
daq.set_sample_rate(100e3)
daq.set_samples(2000)             # 20 ms 采集窗口

# 5. 采集并读回测量值
osc_meas = osc.measure(channel=1, items=["freq", "vpp"])
daq_data = daq.read()

# 6. 判据与记录
freq_ok = abs(osc_meas["freq"] - 1e3) / 1e3 < 0.02      # 频率误差 < 2%
vpp_ok  = abs(osc_meas["vpp"] - 1.0) / 1.0 < 0.05       # 幅度误差 < 5%
link_ok = freq_ok and vpp_ok

record = {
    "AWG0::CH1": {"connected": awg.is_connected(), "freq_set": 1e3, "vpp_set": 1.0},
    "OSC0::CH1": {"connected": osc.is_connected(), "freq_meas": osc_meas["freq"], "vpp_meas": osc_meas["vpp"]},
    "DAQ0::AI0": {"connected": daq.is_connected(), "fs": 100e3, "n": len(daq_data)},
    "link_ok": link_ok,
}
print(record)

脚本中的判据阈值(频率 2%、幅度 5%)是教学示例值,实际项目中应根据仪器指标收紧或放宽。运行后若 link_ok 为 True,说明 AWG→OSC 回环链路与 DAQ 分路均正常;若为 False,先看 freq_meas 与 vpp_meas 偏离方向:频率偏差大通常是时基或触发设置问题,幅度偏差大通常是量程或耦合方式不匹配。

连接状态与基础参数记录表

自检完成后,把关键状态与参数整理成一张记录表,作为后续实验的基线。下表为示例数据,字段可直接用于实验报告。

设备 / 逻辑地址 驱动绑定 连接状态 关键设置 读回值(示例)
AWG0::CH1 虚拟 AWG 驱动 v2.1 已连接 正弦 1 kHz / 1.0 Vpp / 偏置 0 V 输出使能,无异常
OSC0::CH1 虚拟示波器驱动 v2.1 已连接 时基 200 µs/div,触发 CH1 上升沿 0 V 频率 ≈ 1.00 kHz,Vpp ≈ 1.01 V
DAQ0::AI0 虚拟 DAQ 驱动 v2.1 已连接 采样率 100 kSa/s,量程 ±5 V,2000 点 采样序列频率与 1 kHz 一致
回环链路 通道路由表 连通 AWG CH1 → OSC CH1,分路 → DAQ AI0 link_ok = True
若自检报告显示“设备已连接但无信号”,优先检查通道路由表的方向与分路节点,而不是反复重装驱动。虚拟平台中路由配置错误是最常见的“假故障”。

常见连接异常的定位思路

  • 设备列表为空:驱动未绑定或逻辑地址拼写不一致。核对驱动配置界面中的地址与脚本中的字符串是否逐字符相同。
  • 示波器无波形:触发源选错通道、触发电平超出信号范围,或 AWG 输出未使能。先确认 output_on() 已调用,再检查触发设置。
  • DAQ 数据全零:通道号与路由分路节点不匹配,或量程设置过大导致小信号被淹没。将量程从 ±5 V 收窄到 ±2 V 再试。
  • 频率读回偏差大:示波器时基与信号周期不匹配,导致测量窗口内周期数不足。1 kHz 信号建议时基不超过 500 µs/div。

完成以上步骤后,平台即具备“可下发、可采集、可判读”的基础能力,连接状态与基础参数也已形成可追溯的记录,为后续脉冲波形生成与示波器触发实验提供了稳定的起点。