diff --git a/docs/changes/newsfragments/8756.improved_driver b/docs/changes/newsfragments/8756.improved_driver new file mode 100644 index 00000000000..16dba3836cd --- /dev/null +++ b/docs/changes/newsfragments/8756.improved_driver @@ -0,0 +1,2 @@ +The `Keithley_2600.yaml` pyvisa-sim file now also defines the resources `GPIB::3::INSTR` and `GPIB::4::INSTR`, +so that up to four simulated Keithley 2600 instruments with independent state can be used at the same time. diff --git a/src/qcodes/instrument/sims/Keithley_2600.yaml b/src/qcodes/instrument/sims/Keithley_2600.yaml index 7086d443220..2c2606d8269 100644 --- a/src/qcodes/instrument/sims/Keithley_2600.yaml +++ b/src/qcodes/instrument/sims/Keithley_2600.yaml @@ -203,3 +203,9 @@ resources: GPIB::2::INSTR: device: Keithley + + GPIB::3::INSTR: + device: Keithley + + GPIB::4::INSTR: + device: Keithley diff --git a/tests/drivers/test_keithley_26xx.py b/tests/drivers/test_keithley_26xx.py index 0ddfd44b6d1..9995f7d6603 100644 --- a/tests/drivers/test_keithley_26xx.py +++ b/tests/drivers/test_keithley_26xx.py @@ -8,6 +8,7 @@ from qcodes.dataset import LinSweep from qcodes.instrument_drivers.Keithley import ( + Keithley2600, Keithley2600MeasurementStatus, Keithley2614B, ) @@ -47,6 +48,29 @@ def test_idn(driver: Keithley2614B) -> None: } == driver.IDN() +def test_four_sim_addresses_have_independent_state() -> None: + voltages = {1: 1.5, 2: -0.5, 3: 0.25, 4: 2.0} + drivers: list[Keithley2600] = [] + try: + for gpib_address in voltages: + drivers.append( + Keithley2600( + f"Keithley_2600_{gpib_address}", + address=f"GPIB::{gpib_address}::INSTR", + pyvisa_sim_file="Keithley_2600.yaml", + ) + ) + + for driver, voltage in zip(drivers, voltages.values(), strict=True): + driver.smua.volt(voltage) + + for driver, voltage in zip(drivers, voltages.values(), strict=True): + assert driver.smua.volt() == voltage + finally: + for driver in drivers: + driver.close() + + def test_smu_channels_and_their_parameters(driver: Keithley2614B) -> None: assert {"smua", "smub"} == set(driver.submodules.keys())