1MHz~6.3GHz 手持矢量网络分析仪 操作、校准、TDR 功能全教程
2026/7/16 8:53:17 网站建设 项目流程

在射频研发、天线调试、滤波器量产检测、射频线缆故障排查场景中,台式矢量网络分析仪动辄几万、十几万,体积庞大不适合外场调试;市面廉价简易 VNA 普遍存在动态范围不足、缺少 TDR、校准流程复杂、续航差等痛点。

本文全面拆解VNA6 便携式矢量网络分析仪,一款 1MHz~6.3GHz 双端口手持 VNA,支持 S11 反射、S21 传输、驻波比、史密斯圆图、相频曲线、TDR/DTF 电缆时域测量,全金属机身、3.97 寸触屏、32 组校准预设存储,搭配完整 OSLT 校准套件,兼顾实验室研发、户外天线外场测试、产线批量检测,低成本替代台式 VNA。 全文包含硬件参数、机身接口、完整触屏操作、OSLT 标准校准步骤、TDR 使用、固件升级、典型应用场景,干货完整可直接上手操作。

一、VNA6 产品概述与核心硬件指标

1.1 产品简介

VNA6 是深圳国商技术推出的双端口便携式矢量网络分析仪,测量频段覆盖 1MHz~6.3GHz,支持单端口 S11 反射参数、双端口 S11/S21 传输参数测量。 适用被测件:短波 / ISM/WiFi/BLE/GPS 天线、LC 滤波器、声表滤波器、放大器、衰减器、射频同轴电缆、功分器、耦合器、双工器。 特色功能:内置 TDR/DTF 时域反射功能,可测量电缆长度、定位线缆断点、阻抗不连续点;支持多格式波形显示、4 组标记、32 组校准方案存储,Type-C 充电 + 数据传输 + 固件升级三合一。

1.2 核心产品亮点

  1. 宽频覆盖:1MHz~6.3GHz,覆盖绝大多数民用射频通信频段;
  2. 优秀动态范围:S21 最高 65dB,S11 最高 50dB,弱损耗 / 高隔离器件测量精度高;
  3. 双端口标准 OSLT 校准:配套全套 SMA 开路 / 短路 / 负载校准件,测量误差极低;
  4. 多视图显示:对数幅值、线性幅值、相位、驻波比 VSWR、史密斯圆图、TDR 时域六种视图;
  5. TDR 时域故障定位:检测射频电缆长度、断点、接头阻抗异常;
  6. 大容量存储:32 组校准参数预设,不同频段测试方案一键调取;
  7. 大屏便携机身:3.97 寸 800×480 高亮 IPS 触摸屏,全铝合金屏蔽外壳;
  8. 续航与拓展供电:5000mAh 锂电池续航≥4.5h,自带 USB 5V/1A 对外供电;
  9. 多语言系统:中文 / 英文 / 俄文三语言界面,户外强光可视;
  10. 便捷升级:Type-C 串口固件升级,无需专用编程器。

1.3 完整技术参数表

表格

参数项VNA6 技术规格
频率测量范围1MHz ~ 6.3GHz
最大射频输出功率+10dBm
频率稳定度频偏<±1ppm
S21 动态范围<3GHz:65dB;>3GHz:60dB
S11 动态范围<3GHz:50dB;>3GHz:40dB
扫描点数101~1001 点自定义
测量速度200 点 / 秒
同步显示迹线4 条独立迹线
标记点数量4 个可自定义频点标记
校准存储槽位32 组 OSLT 校准方案
显示屏3.97 寸 IPS,800×480,电阻触摸屏
电池规格3.7V 5000mAh 锂电池,续航≥4.5h
接口Type-C 充电 / 数据;额外 USB 5V 输出;双 SMA 射频端口 PORT1/PORT2
射频接口SMA 母座(PORT1 RX、PORT2 TX)
整机尺寸130×75×22mm
外壳铝合金全金属屏蔽
工作温度0℃ ~ 45℃
配套配件SMA 开路 / 短路 / 负载校准件、RG405 SMA 延长线缆

1.4 VNA 基础原理科普

矢量网络分析仪用于测量射频器件反射(S11)传输(S21)特性:

  1. S11(反射系数):PORT1 端口信号反射量,用于天线驻波、器件输入匹配、阻抗分析,史密斯圆图、VSWR 驻波比均基于 S11;
  2. S21(传输系数):PORT1→PORT2 信号传输损耗 / 增益,用于滤波器插损、放大器增益、线缆衰减测试;
  3. 双端口测量必须完成 OSLT 四步校准(开路 Open / 短路 Short / 负载 Load / 直通 Through),消除线缆、接头引入的测量误差;
  4. TDR 时域模式:将频域数据通过 IFFT 转换为时域曲线,直观定位电缆断点、接头阻抗突变、线缆长度。

二、产品外观与接口说明

整机正面布局:

  1. 物理按键:MENU 菜单键、Fn 功能键;
  2. 射频端口:PORT1(RX 接收)、PORT2(TX 发射,最大 + 10dBm 输出);
  3. 侧边接口:Type-C 充电 / 数据 / 升级口、电源开关 ON/OFF、电源指示灯;
  4. 拓展功能:机身自带 USB 5V 输出口,可给外设供电。

使用规范:

  • 单端口天线匹配测试:仅使用 PORT1,完成 OSL 三校准;
  • 双端口滤波器 / 线缆插损测试:PORT1 接 DUT 输出,PORT2 接 DUT 输入,完整 OSLT 四步校准;
  • 禁止向 PORT1 输入超过 + 10dBm 外部大功率射频信号,避免烧毁前端接收电路。

三、整机用户界面全解析

3.1 主界面区域划分

主界面是测量核心,分区功能一目了然:

  1. ①起始 / 终止频率:当前扫频带宽范围;
  2. ②校准状态标识:O = 开路、S = 短路、L = 负载、T = 直通;全部显示代表四步校准完成;C+数字为校准预设存储编号,*代表临时校准未保存;
  3. ③扫描点数:当前 101~1001 扫频点数;
  4. ④暂停按钮:一键冻结波形,方便读取标记数值;
  5. ⑤视图切换区:对数幅值、相频、驻波比、史密斯、TDR 时域快速切换;
  6. ⑥标记信息栏:4 组标记频点、幅值 / 相位数据,橙色为当前选中标记,支持拖动移动;
  7. ⑦电量显示:实时电池电压,红色低电量提醒;
  8. ⑧左右刻度标尺:上下滑动调整幅值 / 相位显示范围。

3.2 侧边总菜单(MENU 按键呼出)

按下机身 MENU 物理键,调出右侧隐藏主菜单,四大核心模块:

  • 扫描:频率、扫宽、点数、频域 / TDR 切换;
  • 校准:开路 / 短路 / 负载 / 直通 OSLT 校准入口;
  • 设备:亮度、语言、屏幕翻转、设备固件信息;
  • 预设:32 组校准方案保存 / 调取。

3.3 数字键盘

点击任意频率数值框弹出数字输入键盘,支持数字、小数点、MHz/GHz 单位快速切换,输入完成点击 OK 确认,退格键删除输入内容。 示例:输入 2400MHz 直接输入2400+M;输入 5.8GHz 输入5.8+G。

四、核心菜单功能详细操作教程

4.1 扫描菜单:设置扫频测量区间

菜单入口:MENU → 扫描 可配置参数:

  1. 中心:设置扫频中心频率(如 2440MHz 中心测蓝牙 WiFi);
  2. 扫宽:设置频率跨度;
  3. 起始 / 终止:自定义完整起止频段;
  4. 点数:101/201/501/1001 可选,点数越高曲线越平滑,扫描速度变慢;
  5. 模式切换:频域 S 参数 / TDR/DTF 时域测量一键切换。

实操建议:

  • 宽带粗测:101 点,扫描速度快;
  • 滤波器窄带精准测试:1001 点,细节更清晰。

4.2 校准菜单|OSLT 四步标准校准(重中之重)

4.2.1 校准前准备

必备配件:SMA 开路件、短路件、50Ω 负载、直通转接头、测试线缆。

每次更换测试线缆、更换测试频段、更换被测件类型,必须重新校准,否则测量误差极大。

4.2.2 完整校准步骤

  1. 设置扫频区间:先在扫描菜单设定需要测量的起止频率;
  2. 开路校准 Open将开路校准件接在 PORT1(或测试线缆末端),点击【开路】,等待 2~3 秒,按钮变绿、界面出现标识 O;
  3. 短路校准 Short更换短路校准件,点击【短路】,完成后界面出现 S;
  4. 负载校准 Load更换 50Ω 匹配负载,点击【负载】,界面出现 L; 以上三步完成单端口 S11 校准,可直接测天线驻波;
  5. 直通校准 Through(双端口 S21 必做)使用直通转接头连接 PORT1 与 PORT2,点击【直通】,界面出现 T; O/S/L/T 全部显示即完整双端口校准完成。

4.2.3 校准合格判定标准

校准完成后自检验证:

  1. PORT1 接负载:S11 汇聚史密斯圆中心,幅值接近 0dB;
  2. PORT1/2 直通:S21 曲线贴近 0dB,插损测量误差极小;
  3. 开路 / 短路状态 S11 位于史密斯圆左右两端。

4.3 设备系统菜单设置

MENU → 设备,包含 5 项功能:

  1. 屏幕亮度:拖动滑块调节 0~100% 亮度,户外强光调高;
  2. 语言切换:中文 / English/Русский俄文一键切换;
  3. 关于本机:查看设备型号、固件版本、频率范围、电池电压、设备序列号;
  4. 翻转屏幕:屏幕 180° 倒置,适配不同摆放场景;
  5. 预设校准存储:32 组存储槽,可保存当前校准 + 频率配置,下次测试一键调取,产线标准化测试必备。

4.4 标记功能操作(4 组 Mark 频点测量)

点击界面标记栏展开标记控制面板:

  1. 标记开关:单独开启 / 关闭 Mark1~Mark4;
  2. 频点定位:点击数字框输入指定频率,标记自动跳转;
  3. 左右微调:按键左右移动标记,读取曲线任意点数值;
  4. 视图格式切换:切换当前窗口显示 S11/S21、对数幅值 / 相位 / VSWR / 史密斯圆图;
  5. 刻度调节:上下拖动标尺,放大 / 缩小曲线观测范围。

五、TDR 时域电缆检测功能使用教程

VNA6 内置 DTF 时域反射,用于射频线缆故障排查:

  1. 在【扫描】菜单切换至 TDR 时域模式;
  2. 完成 OSLT 基础校准;
  3. PORT1 连接待测同轴电缆,电缆末端开路;
  4. 时域曲线出现峰值位置对应电缆长度,突变尖峰代表接头松动、线缆破损、阻抗不连续; 适用场景:机房射频馈线故障定位、车载天线线缆长度检测、长线缆断点排查。

六、固件升级完整流程

  1. 设备关机,按住 Fn 功能键不松手,打开电源开关,进入 Loader 升级模式;
  2. Type-C 数据线连接电脑与仪器,电脑识别 CH340 串口;
  3. 打开配套 VNA6 升级上位机,扫描串口、选择对应 COM 口;
  4. 加载固件文件,点击下载,进度完成设备自动重启升级。

七、典型应用场景实操方案

场景 1:WiFi / 蓝牙天线驻波匹配测试(S11)

  1. 频段设置 2400~2500MHz;
  2. PORT1 接天线,完成 OSL 三校准;
  3. 切换史密斯圆图 / VSWR 驻波视图;
  4. 添加标记 2440MHz、2480MHz 读取驻波比,VSWR<1.5 为匹配良好。

场景 2:滤波器插损、阻带抑制测试(S21)

  1. 设置滤波器工作频段;
  2. PORT2 输出→滤波器输入,滤波器输出→PORT1;
  3. 完整 OSLT 四步校准;
  4. 切换对数幅值视图,标记读取通带插损、阻带衰减。

场景 3:射频线缆衰减测试

  1. 先直通校准得到基准 0dB 曲线;
  2. 串入待测线缆,读取 S21 差值即为线缆损耗;
  3. TDR 模式快速测量线缆实际长度、排查接头故障。

场景 4:产线标准化批量检测

  1. 调试好对应产品频段与校准;
  2. 进入预设菜单保存至槽位;
  3. 每次测试直接调取预设,无需重复校准,提升批量检测效率。

八、使用避坑注意事项

  1. 输入功率限制:PORT1 最大耐受 + 10dBm,大功率射频信号必须外接衰减器,否则烧毁硬件;
  2. 校准不可省略:更换线缆、频段必须重新 OSLT 校准,否则插损、驻波数据偏差巨大;
  3. 6.3GHz 上限:不可超出频段测量,高频段动态范围会下降;
  4. 电池使用:低电量及时充电,长期不用每月补电;可 Type-C 边充边测;
  5. TDR 使用前提:必须完成基础 OSL 校准,时域曲线才具备参考价值;
  6. 金属外壳保护:请勿拆除铝合金外壳,屏蔽层防止外界电磁干扰影响测量精度。

适用场景
天线调试:Wi-Fi、蓝牙、GPS、5G 天线的驻波比与阻抗匹配检测
射频器件检测:滤波器、功分器、耦合器、放大器、衰减器、射频线缆
户外现场运维:基站天线、馈线巡检,物联网设备现场测试
科研教学:高校射频实验室、电子竞赛、便携式实验测量工具
核心优势

九、总结

VNA6 作为千元级便携式矢量网络分析仪,覆盖 1MHz~6.3GHz 全主流射频频段,同时具备 S11/S21 双参数测量、TDR 时域故障检测、标准 OSLT 全校准、32 组预设存储,完美解决实验室研发、户外天线调试、产线批量检测、线缆维修等场景需求。 对比进口台式 VNA 拥有极高性价比,整机小巧便携、操作全触屏可视化,配套完整校准套件,零基础射频工程师也可快速上手,是无线硬件开发、射频维修、高校教学的高性价比测试仪器。

拓展开发方向(延伸阅读)

设备通过 Type-C 虚拟串口通信,支持上位机数据读取、自动化测试脚本开发,后续可基于 Python/ C# 开发自动化产线测试程序,实现波形数据导出、批量参数判定、CSV 数据存储。

  1. 通信接口:VNA6 通过 Type-C 虚拟串口 CH340 通信,波特率固定 115200;
  2. 功能说明:自动扫描串口连接仪器、下发 SCPI 指令配置扫频、读取频域 S 参数、4 组标记数据;
  3. 依赖安装

bash

运行

pip install pyserial matplotlib
  1. 配套文章使用:直接复制到 CSDN 文末附录,带代码高亮,附带使用说明。

完整 Python 源码

python

运行

import serial import serial.tools.list_ports import struct import time import matplotlib.pyplot as plt class VNA6_Instrument: def __init__(self): self.ser = None self.baud = 115200 # 自动扫描串口并连接设备 def auto_connect(self) -> bool: port_list = serial.tools.list_ports.comports() if not port_list: print("未识别到串口,请检查Type-C线、设备开机、驱动CH340已安装") return False for port in port_list: try: self.ser = serial.Serial(port.device, self.baud, timeout=0.8) print(f"连接成功:{port.device}") return True except Exception as e: continue print("所有串口连接失败") return False # 下发SCPI指令,读取返回字符串 def send_cmd(self, cmd: str) -> str: if self.ser is None or not self.ser.is_open: return "" tx = (cmd + "\r\n").encode("ascii") self.ser.write(tx) time.sleep(0.06) resp = self.ser.read_all().decode("utf-8", errors="ignore").strip() return resp # 设置扫频范围:start_MHz 起始,stop_MHz终止,points点数(101~1001) def set_sweep(self, start_MHz: float, stop_MHz: float, points: int = 1001): self.send_cmd(f"SWEep:START {start_MHz}") self.send_cmd(f"SWEep:STOP {stop_MHz}") self.send_cmd(f"SWEep:POINts {points}") print(f"已配置扫频:{start_MHz} ~ {stop_MHz} MHz,点数 {points}") # 读取S21幅值曲线(dB) def get_s21_data(self): self.send_cmd("DATA:S21?") raw = self.ser.read(8192) return self.parse_s_param(raw) # 读取S11幅值曲线(dB) def get_s11_data(self): self.send_cmd("DATA:S11?") raw = self.ser.read(8192) return self.parse_s_param(raw) # 二进制帧解析函数,输出频率数组、幅值dB数组 def parse_s_param(self, raw_bytes: bytes): # 帧格式:#D[长度] + 浮点频点数组 + 浮点幅值数组 + \r\n if not raw_bytes.startswith(b"#"): print("帧头校验失败,数据无效") return [], [] ptr = 1 D = int(raw_bytes[ptr:ptr+1]) ptr += 1 data_len = int(raw_bytes[ptr:ptr+D]) ptr += D data_buf = raw_bytes[ptr:ptr+data_len-2] # 剔除末尾\r\n float_cnt = len(data_buf) // 4 float_data = struct.unpack("<" + "f" * float_cnt, data_buf) half = float_cnt // 2 freq_list = [float_data[i] for i in range(half)] # MHz db_list = [float_data[i] for i in range(half, float_cnt)] return freq_list, db_list # 读取4组标记数据 Mark1~Mark4 def get_markers(self): mark_data = [] for i in range(1, 5): resp = self.send_cmd(f"MARK{i}?") if resp: parts = resp.split(",") freq = float(parts[0]) db_val = float(parts[1]) mark_data.append({"mark":i, "freq_MHz":freq, "dB":db_val}) return mark_data # 关闭串口、释放资源 def close(self): if self.ser and self.ser.is_open: self.ser.close() print("串口已关闭") if __name__ == "__main__": vna = VNA6_Instrument() # 1. 连接仪器 if not vna.auto_connect(): exit(1) # 2. 配置扫频范围 2400~2500MHz WiFi频段,1001点 vna.set_sweep(start_MHz=2400, stop_MHz=2500, points=1001) time.sleep(0.5) # 3. 读取S11、S21曲线 freq_arr, s11_db = vna.get_s11_data() _, s21_db = vna.get_s21_data() markers = vna.get_markers() print(f"采集点数:{len(freq_arr)}") print("=== 标记点数据 ===") for m in markers: print(f"Mark{m['mark']}:{m['freq_MHz']:.2f} MHz , {m['dB']:.2f} dB") # 4. Matplotlib 实时绘图 plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False fig, ax = plt.subplots(figsize=(12, 6)) ax.plot(freq_arr, s11_db, label="S11 反射(dB)", color="#ff3333", linewidth=1.2) ax.plot(freq_arr, s21_db, label="S21 传输(dB)", color="#0066ff", linewidth=1.2) # 绘制标记点 for m in markers: ax.scatter(m["freq_MHz"], m["dB"], s=40, color="orange", zorder=5) ax.text(m["freq_MHz"], m["dB"]+0.8, f"M{m['mark']}", fontsize=9) ax.set_xlabel("频率 MHz") ax.set_ylabel("幅值 dB") ax.set_title("VNA6 S11/S21 扫频曲线") ax.legend() ax.grid(True, alpha=0.3) plt.show() # 循环持续采集波形(按Ctrl+C终止) try: print("\n持续采集波形,Ctrl+C退出循环") while True: freq_arr, s21_db = vna.get_s21_data() max_loss = min(s21_db) print(f"当前最大插损:{max_loss:.2f} dB") time.sleep(1) except KeyboardInterrupt: print("\n手动停止采集") finally: vna.close()

二、代码配套使用说明(粘贴到 CSDN 文章)

2.1 前置准备

  1. 电脑安装 CH340 串口驱动,否则识别不到设备 COM 口;
  2. VNA6 正常开机,Type-C 直连电脑,不要使用拓展坞;
  3. 设备完成 OSLT 校准后再运行代码,数据才具备测量精度;
  4. 波特率固定 115200,无需修改。

2.2 核心功能介绍

  1. auto_connect():自动枚举全部 COM 串口,无需手动填写串口号,新手友好;
  2. set_sweep():远程下发扫频起止频率、扫描点数,替代触屏手动设置;
  3. get_s11_data() / get_s21_data():读取频域幅值曲线,内置二进制帧解析;
  4. parse_s_param():解析仪器下发的二进制数据流,拆分频率、dB 幅值;
  5. get_markers():读取 4 个标记点的频点与对应损耗 / 反射值;
  6. Matplotlib 绘图:自动绘制 S11/S21 双曲线,标记点橙色高亮显示。

2.3 典型测试场景修改示例

  1. 天线 S11 驻波测试(433MHz ISM 频段)

python

运行

vna.set_sweep(start_MHz=400, stop_MHz=460, points=501)
  1. GPS 滤波器测试(1550~1600MHz)

python

运行

vna.set_sweep(start_MHz=1550, stop_MHz=1600, points=1001)

2.4 拓展二次开发思路(写进文章增加深度)

bash

运行

pip install pyserial matplotlib

完整 Python 源码

python

运行

import serial import serial.tools.list_ports import struct import time import matplotlib.pyplot as plt class VNA6_Instrument: def __init__(self): self.ser = None self.baud = 115200 # 自动扫描串口并连接设备 def auto_connect(self) -> bool: port_list = serial.tools.list_ports.comports() if not port_list: print("未识别到串口,请检查Type-C线、设备开机、驱动CH340已安装") return False for port in port_list: try: self.ser = serial.Serial(port.device, self.baud, timeout=0.8) print(f"连接成功:{port.device}") return True except Exception as e: continue print("所有串口连接失败") return False # 下发SCPI指令,读取返回字符串 def send_cmd(self, cmd: str) -> str: if self.ser is None or not self.ser.is_open: return "" tx = (cmd + "\r\n").encode("ascii") self.ser.write(tx) time.sleep(0.06) resp = self.ser.read_all().decode("utf-8", errors="ignore").strip() return resp # 设置扫频范围:start_MHz 起始,stop_MHz终止,points点数(101~1001) def set_sweep(self, start_MHz: float, stop_MHz: float, points: int = 1001): self.send_cmd(f"SWEep:START {start_MHz}") self.send_cmd(f"SWEep:STOP {stop_MHz}") self.send_cmd(f"SWEep:POINts {points}") print(f"已配置扫频:{start_MHz} ~ {stop_MHz} MHz,点数 {points}") # 读取S21幅值曲线(dB) def get_s21_data(self): self.send_cmd("DATA:S21?") raw = self.ser.read(8192) return self.parse_s_param(raw) # 读取S11幅值曲线(dB) def get_s11_data(self): self.send_cmd("DATA:S11?") raw = self.ser.read(8192) return self.parse_s_param(raw) # 二进制帧解析函数,输出频率数组、幅值dB数组 def parse_s_param(self, raw_bytes: bytes): # 帧格式:#D[长度] + 浮点频点数组 + 浮点幅值数组 + \r\n if not raw_bytes.startswith(b"#"): print("帧头校验失败,数据无效") return [], [] ptr = 1 D = int(raw_bytes[ptr:ptr+1]) ptr += 1 data_len = int(raw_bytes[ptr:ptr+D]) ptr += D data_buf = raw_bytes[ptr:ptr+data_len-2] # 剔除末尾\r\n float_cnt = len(data_buf) // 4 float_data = struct.unpack("<" + "f" * float_cnt, data_buf) half = float_cnt // 2 freq_list = [float_data[i] for i in range(half)] # MHz db_list = [float_data[i] for i in range(half, float_cnt)] return freq_list, db_list # 读取4组标记数据 Mark1~Mark4 def get_markers(self): mark_data = [] for i in range(1, 5): resp = self.send_cmd(f"MARK{i}?") if resp: parts = resp.split(",") freq = float(parts[0]) db_val = float(parts[1]) mark_data.append({"mark":i, "freq_MHz":freq, "dB":db_val}) return mark_data # 关闭串口、释放资源 def close(self): if self.ser and self.ser.is_open: self.ser.close() print("串口已关闭") if __name__ == "__main__": vna = VNA6_Instrument() # 1. 连接仪器 if not vna.auto_connect(): exit(1) # 2. 配置扫频范围 2400~2500MHz WiFi频段,1001点 vna.set_sweep(start_MHz=2400, stop_MHz=2500, points=1001) time.sleep(0.5) # 3. 读取S11、S21曲线 freq_arr, s11_db = vna.get_s11_data() _, s21_db = vna.get_s21_data() markers = vna.get_markers() print(f"采集点数:{len(freq_arr)}") print("=== 标记点数据 ===") for m in markers: print(f"Mark{m['mark']}:{m['freq_MHz']:.2f} MHz , {m['dB']:.2f} dB") # 4. Matplotlib 实时绘图 plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False fig, ax = plt.subplots(figsize=(12, 6)) ax.plot(freq_arr, s11_db, label="S11 反射(dB)", color="#ff3333", linewidth=1.2) ax.plot(freq_arr, s21_db, label="S21 传输(dB)", color="#0066ff", linewidth=1.2) # 绘制标记点 for m in markers: ax.scatter(m["freq_MHz"], m["dB"], s=40, color="orange", zorder=5) ax.text(m["freq_MHz"], m["dB"]+0.8, f"M{m['mark']}", fontsize=9) ax.set_xlabel("频率 MHz") ax.set_ylabel("幅值 dB") ax.set_title("VNA6 S11/S21 扫频曲线") ax.legend() ax.grid(True, alpha=0.3) plt.show() # 循环持续采集波形(按Ctrl+C终止) try: print("\n持续采集波形,Ctrl+C退出循环") while True: freq_arr, s21_db = vna.get_s21_data() max_loss = min(s21_db) print(f"当前最大插损:{max_loss:.2f} dB") time.sleep(1) except KeyboardInterrupt: print("\n手动停止采集") finally: vna.close()

二、代码配套使用说明(粘贴到 CSDN 文章)

2.1 前置准备

2.2 核心功能介绍

2.3 典型测试场景修改示例

python

运行

vna.set_sweep(start_MHz=400, stop_MHz=460, points=501)

python

运行

vna.set_sweep(start_MHz=1550, stop_MHz=1600, points=1001)

2.4 拓展二次开发思路(写进文章增加深度)

  1. 数据导出 CSV:将freq_arr、s11_db、s21_db写入 csv 文件,Excel 离线分析滤波器插损、驻波;
  2. 产线自动化判定:设置上下限阈值,自动判断器件 OK/NG 并打印日志;
  3. TDR 时域数据读取:新增DATA:TDR?指令解析电缆时域曲线,定位线缆断点;
  4. 搭配 GUI:使用 PyQt5 制作上位机可视化界面,替代官方配套软件;
  5. LabVIEW 对接:复用本文 SCPI 指令逻辑,仅替换串口通信 API。
  6. Python 串口读取 VNA6 矢量网络分析仪波形完整 Demo

    前置说明

  7. 通信接口:VNA6 通过 Type-C 虚拟串口 CH340 通信,波特率固定 115200;
  8. 功能说明:自动扫描串口连接仪器、下发 SCPI 指令配置扫频、读取频域 S 参数、4 组标记数据;
  9. 依赖安装
  10. 配套文章使用:直接复制到 CSDN 文末附录,带代码高亮,附带使用说明。
  11. 电脑安装 CH340 串口驱动,否则识别不到设备 COM 口;
  12. VNA6 正常开机,Type-C 直连电脑,不要使用拓展坞;
  13. 设备完成 OSLT 校准后再运行代码,数据才具备测量精度;
  14. 波特率固定 115200,无需修改。
  15. auto_connect():自动枚举全部 COM 串口,无需手动填写串口号,新手友好;
  16. set_sweep():远程下发扫频起止频率、扫描点数,替代触屏手动设置;
  17. get_s11_data() / get_s21_data():读取频域幅值曲线,内置二进制帧解析;
  18. parse_s_param():解析仪器下发的二进制数据流,拆分频率、dB 幅值;
  19. get_markers():读取 4 个标记点的频点与对应损耗 / 反射值;
  20. Matplotlib 绘图:自动绘制 S11/S21 双曲线,标记点橙色高亮显示。
  21. 天线 S11 驻波测试(433MHz ISM 频段)
  22. GPS 滤波器测试(1550~1600MHz)
  23. 数据导出 CSV:将freq_arr、s11_db、s21_db写入 csv 文件,Excel 离线分析滤波器插损、驻波;
  24. 产线自动化判定:设置上下限阈值,自动判断器件 OK/NG 并打印日志;
  25. TDR 时域数据读取:新增DATA:TDR?指令解析电缆时域曲线,定位线缆断点;
  26. 搭配 GUI:使用 PyQt5 制作上位机可视化界面,替代官方配套软件;
  27. LabVIEW 对接:复用本文 SCPI 指令逻辑,仅替换串口通信 API。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询