2022-11-14 00:09:19 +01:00
|
|
|
from tests.TestBase import TestBase
|
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
class TestVNASweep(TestBase):
|
2022-11-19 15:47:08 +01:00
|
|
|
def waitSweepTimeout(self, timeout = 1):
|
|
|
|
|
self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "FALSE")
|
2024-04-18 09:48:44 +02:00
|
|
|
self.vna.cmd("*WAI", timeout=timeout)
|
|
|
|
|
self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "TRUE")
|
|
|
|
|
|
2022-11-14 00:09:19 +01:00
|
|
|
def test_sweep_frequency(self):
|
|
|
|
|
self.vna.cmd(":DEV:MODE VNA")
|
|
|
|
|
self.vna.cmd(":VNA:SWEEP FREQUENCY")
|
|
|
|
|
self.vna.cmd(":VNA:STIM:LVL -10")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:IFBW 10000")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:AVG 1")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:POINTS 501")
|
|
|
|
|
self.vna.cmd(":VNA:FREQuency:START 1000000")
|
|
|
|
|
self.vna.cmd(":VNA:FREQuency:STOP 6000000000")
|
2022-11-19 15:47:08 +01:00
|
|
|
self.waitSweepTimeout(2)
|
2022-11-14 00:09:19 +01:00
|
|
|
|
2022-11-20 20:48:36 +01:00
|
|
|
S11 = self.vna.parse_VNA_trace_data(self.vna.query(":VNA:TRACE:DATA? S11"))
|
2022-11-14 00:09:19 +01:00
|
|
|
self.assertEqual(S11[0][0], 1000000)
|
|
|
|
|
self.assertEqual(S11[-1][0], 6000000000)
|
|
|
|
|
|
|
|
|
|
def test_sweep_zerospan(self):
|
|
|
|
|
self.vna.cmd(":DEV:MODE VNA")
|
|
|
|
|
self.vna.cmd(":VNA:SWEEP FREQUENCY")
|
|
|
|
|
self.vna.cmd(":VNA:STIM:LVL -10")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:IFBW 10000")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:AVG 1")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:POINTS 501")
|
|
|
|
|
self.vna.cmd(":VNA:FREQuency:START 500000000")
|
|
|
|
|
self.vna.cmd(":VNA:FREQuency:STOP 1500000000")
|
|
|
|
|
self.vna.cmd(":VNA:FREQuency:ZERO 1500000000")
|
2022-11-19 15:47:08 +01:00
|
|
|
self.waitSweepTimeout(2)
|
2022-11-14 00:09:19 +01:00
|
|
|
|
2022-11-20 20:48:36 +01:00
|
|
|
S11 = self.vna.parse_VNA_trace_data(self.vna.query(":VNA:TRACE:DATA? S11"))
|
2022-11-14 00:09:19 +01:00
|
|
|
self.assertEqual(S11[0][0], 0.0)
|
|
|
|
|
# Sweep should take about 0.125 seconds
|
|
|
|
|
self.assertGreater(S11[-1][0], 0.1)
|
|
|
|
|
self.assertLess(S11[-1][0], 0.5)
|
|
|
|
|
|
|
|
|
|
def test_sweep_power(self):
|
|
|
|
|
self.vna.cmd(":DEV:MODE VNA")
|
|
|
|
|
self.vna.cmd(":VNA:SWEEP POWER")
|
|
|
|
|
self.vna.cmd(":VNA:STIM:LVL -10")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:IFBW 10000")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:AVG 1")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:POINTS 501")
|
|
|
|
|
self.vna.cmd(":VNA:POWER:START -30")
|
|
|
|
|
self.vna.cmd(":VNA:POWER:STOP -10")
|
2022-11-19 15:47:08 +01:00
|
|
|
self.waitSweepTimeout(2)
|
2022-11-14 00:09:19 +01:00
|
|
|
|
2022-11-20 20:48:36 +01:00
|
|
|
S11 = self.vna.parse_VNA_trace_data(self.vna.query(":VNA:TRACE:DATA? S11"))
|
2022-11-14 00:09:19 +01:00
|
|
|
self.assertEqual(S11[0][0], -30)
|
2022-11-19 15:47:08 +01:00
|
|
|
self.assertEqual(S11[-1][0], -10)
|
|
|
|
|
|
|
|
|
|
def test_fast_single_sweeps(self):
|
|
|
|
|
self.vna.cmd(":DEV:MODE VNA")
|
|
|
|
|
self.vna.cmd(":VNA:SWEEP FREQUENCY")
|
|
|
|
|
self.vna.cmd(":VNA:STIM:LVL -10")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:IFBW 50000")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:AVG 1")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:POINTS 501")
|
|
|
|
|
self.vna.cmd(":VNA:FREQuency:START 1000000")
|
|
|
|
|
self.vna.cmd(":VNA:FREQuency:STOP 6000000000")
|
|
|
|
|
|
|
|
|
|
for i in range(10):
|
|
|
|
|
# Change something irrelevant (to force reconfiguration of device)
|
|
|
|
|
self.vna.cmd(":VNA:FREQuency:START "+str(1000000+i))
|
2023-10-24 16:39:21 +02:00
|
|
|
self.waitSweepTimeout(2)
|
|
|
|
|
|
|
|
|
|
def test_segmented_sweep(self):
|
|
|
|
|
self.vna.cmd(":DEV:MODE VNA")
|
|
|
|
|
self.vna.cmd(":VNA:SWEEP FREQUENCY")
|
|
|
|
|
self.vna.cmd(":VNA:STIM:LVL -10")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:IFBW 50000")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:AVG 1")
|
|
|
|
|
self.vna.cmd(":VNA:ACQ:POINTS 10000")
|
|
|
|
|
self.vna.cmd(":VNA:FREQuency:START 1000000")
|
|
|
|
|
self.vna.cmd(":VNA:FREQuency:STOP 6000000000")
|
|
|
|
|
self.waitSweepTimeout(10)
|
|
|
|
|
|
|
|
|
|
S11 = self.vna.parse_VNA_trace_data(self.vna.query(":VNA:TRACE:DATA? S11"))
|
|
|
|
|
self.assertEqual(len(S11), 10000)
|