From 9572c6de19c4fa082fb199d038ba3caacdbd6a8f Mon Sep 17 00:00:00 2001 From: Janek Fleper Date: Mon, 16 Dec 2024 18:06:48 +0100 Subject: [PATCH 1/9] Use correct sense function for sense parameters --- .../private/Keysight_344xxA_submodules.py | 40 ++++++++++++++----- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py index 2a2f53d35266..5363cb44a9fa 100644 --- a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py +++ b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py @@ -26,7 +26,7 @@ ) if TYPE_CHECKING: - from collections.abc import Sequence + from collections.abc import Sequence, Callable from typing_extensions import Unpack @@ -748,7 +748,7 @@ def __init__( self.NPLC: Parameter = self.add_parameter( "NPLC", - get_cmd="SENSe:VOLTage:DC:NPLC?", + get_cmd=partial(self._ask_with_sense_function, cmd="NPLC"), get_parser=float, set_cmd=self._set_NPLC, vals=vals.Enum(*self.NPLC_list), @@ -836,8 +836,8 @@ def __init__( self.autorange: Parameter = self.add_parameter( "autorange", label="Autorange", - set_cmd="SENSe:VOLTage:DC:RANGe:AUTO {}", - get_cmd="SENSe:VOLTage:DC:RANGe:AUTO?", + set_cmd=self._set_with_sense_function("RANGe:AUTO"), + get_cmd=self._get_with_sense_function("RANGe:AUTO"), val_mapping={"ON": 1, "OFF": 0}, vals=vals.Enum("ON", "OFF"), ) @@ -846,8 +846,8 @@ def __init__( self.autozero: Parameter = self.add_parameter( "autozero", label="Autozero", - set_cmd="SENSe:VOLTage:DC:ZERO:AUTO {}", - get_cmd="SENSe:VOLTage:DC:ZERO:AUTO?", + set_cmd=self._set_with_sense_function("ZERO:AUTO"), + get_cmd=self._get_with_sense_function("ZERO:AUTO"), val_mapping={"ON": 1, "OFF": 0, "ONCE": "ONCE"}, vals=vals.Enum("ON", "OFF", "ONCE"), docstring=textwrap.dedent( @@ -932,8 +932,8 @@ def __init__( self.aperture_mode: Parameter = self.add_parameter( "aperture_mode", label="Aperture mode", - set_cmd="SENSe:VOLTage:DC:APERture:ENABled {}", - get_cmd="SENSe:VOLTage:DC:APERture:ENABled?", + set_cmd=self._set_with_sense_function("APERture:ENABled"), + get_cmd=self._get_with_sense_function("APERture:ENABled"), val_mapping={"ON": 1, "OFF": 0}, vals=vals.Enum("ON", "OFF"), docstring=textwrap.dedent( @@ -953,7 +953,7 @@ def __init__( "aperture_time", label="Aperture time", set_cmd=self._set_apt_time, - get_cmd="SENSe:VOLTage:DC:APERture?", + get_cmd=self._get_with_sense_function("APERture"), get_parser=float, vals=vals.Numbers(*apt_times[self.model]), docstring=textwrap.dedent( @@ -1212,14 +1212,32 @@ def read(self) -> np.ndarray: raw_vals: str = self.ask("READ?") return _raw_vals_to_array(raw_vals) + def _ask_with_sense_function(self, cmd: str) -> str: + function = self.sense_function.get_latest.get_raw().strip("\"") + return self.ask(f"SENSe:{function}:{cmd}?") + + def _write_with_sense_function(self, cmd: str, value: str) -> None: + function = self.sense_function.get_latest.get_raw().strip("\"") + self.write(f"SENSe:{function}:{cmd} {value}") + + def _get_with_sense_function(self, cmd: str) -> "Callable[[], str]": + def func() -> str: + return self._ask_with_sense_function(cmd) + return func + + def _set_with_sense_function(self, cmd: str) -> "Callable[[str], None]": + def func(value: str) -> None: + self._write_with_sense_function(cmd, value) + return func + def _set_apt_time(self, value: float) -> None: - self.write(f"SENSe:VOLTage:DC:APERture {value:f}") + self._write_with_sense_function("APERture", f"{value:f}") # setting aperture time switches aperture mode ON self.aperture_mode.get() def _set_NPLC(self, value: float) -> None: - self.write(f"SENSe:VOLTage:DC:NPLC {value:f}") + self._write_with_sense_function("NPLC", f"{value:f}") # resolution settings change with NPLC self.resolution.get() From 7578b6fe11d71279693c9d2b43e22a1d9187da6b Mon Sep 17 00:00:00 2001 From: Janek Fleper Date: Mon, 16 Dec 2024 19:20:39 +0100 Subject: [PATCH 2/9] Don't use partial for NPLC --- .../Keysight/private/Keysight_344xxA_submodules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py index 5363cb44a9fa..12eb5f3ab01f 100644 --- a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py +++ b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py @@ -748,7 +748,7 @@ def __init__( self.NPLC: Parameter = self.add_parameter( "NPLC", - get_cmd=partial(self._ask_with_sense_function, cmd="NPLC"), + get_cmd=self._set_with_sense_function("NPLC"), get_parser=float, set_cmd=self._set_NPLC, vals=vals.Enum(*self.NPLC_list), From 202d45aaa60382a125f546cc5d3788730a0dfa6a Mon Sep 17 00:00:00 2001 From: Janek Fleper Date: Tue, 17 Dec 2024 11:32:43 +0100 Subject: [PATCH 3/9] Use the get function for the get_cmd of NPLC --- .../Keysight/private/Keysight_344xxA_submodules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py index 12eb5f3ab01f..5ca2a8f19de0 100644 --- a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py +++ b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py @@ -748,7 +748,7 @@ def __init__( self.NPLC: Parameter = self.add_parameter( "NPLC", - get_cmd=self._set_with_sense_function("NPLC"), + get_cmd=self._get_with_sense_function("NPLC"), get_parser=float, set_cmd=self._set_NPLC, vals=vals.Enum(*self.NPLC_list), From dd733d8f9235fa0091558e29cfc2fdca3d9a4c0d Mon Sep 17 00:00:00 2001 From: Janek Fleper Date: Fri, 21 Mar 2025 15:37:31 +0100 Subject: [PATCH 4/9] Apply suggested changes to get raw value from cache Co-authored-by: Mikhail Astafev --- .../Keysight/private/Keysight_344xxA_submodules.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py index 5ca2a8f19de0..4167f007dd52 100644 --- a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py +++ b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py @@ -1213,11 +1213,11 @@ def read(self) -> np.ndarray: return _raw_vals_to_array(raw_vals) def _ask_with_sense_function(self, cmd: str) -> str: - function = self.sense_function.get_latest.get_raw().strip("\"") + function = self.sense_function.cache.raw_value.strip("\"") return self.ask(f"SENSe:{function}:{cmd}?") def _write_with_sense_function(self, cmd: str, value: str) -> None: - function = self.sense_function.get_latest.get_raw().strip("\"") + function = self.sense_function.cache.raw_value.strip("\"") self.write(f"SENSe:{function}:{cmd} {value}") def _get_with_sense_function(self, cmd: str) -> "Callable[[], str]": From 4c352ae5b5364408d8363304a9e3eb0ee7977831 Mon Sep 17 00:00:00 2001 From: Janek Fleper Date: Fri, 21 Mar 2025 16:23:17 +0100 Subject: [PATCH 5/9] Ruff format --- .../Keysight/private/Keysight_344xxA_submodules.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py index 4167f007dd52..6c5f93b774ea 100644 --- a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py +++ b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py @@ -26,7 +26,7 @@ ) if TYPE_CHECKING: - from collections.abc import Sequence, Callable + from collections.abc import Callable, Sequence from typing_extensions import Unpack @@ -1213,21 +1213,23 @@ def read(self) -> np.ndarray: return _raw_vals_to_array(raw_vals) def _ask_with_sense_function(self, cmd: str) -> str: - function = self.sense_function.cache.raw_value.strip("\"") + function = self.sense_function.cache.raw_value.strip('"') return self.ask(f"SENSe:{function}:{cmd}?") def _write_with_sense_function(self, cmd: str, value: str) -> None: - function = self.sense_function.cache.raw_value.strip("\"") + function = self.sense_function.cache.raw_value.strip('"') self.write(f"SENSe:{function}:{cmd} {value}") def _get_with_sense_function(self, cmd: str) -> "Callable[[], str]": def func() -> str: return self._ask_with_sense_function(cmd) + return func def _set_with_sense_function(self, cmd: str) -> "Callable[[str], None]": def func(value: str) -> None: self._write_with_sense_function(cmd, value) + return func def _set_apt_time(self, value: float) -> None: From 6bbd10af00c5decff5a51e9e310601b564a85ca4 Mon Sep 17 00:00:00 2001 From: "Jens H. Nielsen" Date: Thu, 3 Apr 2025 14:36:13 +0200 Subject: [PATCH 6/9] Work around issue with stale cache --- .../Keysight/private/Keysight_344xxA_submodules.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py index 6c5f93b774ea..e2b672c39c57 100644 --- a/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py +++ b/src/qcodes/instrument_drivers/Keysight/private/Keysight_344xxA_submodules.py @@ -1213,10 +1213,18 @@ def read(self) -> np.ndarray: return _raw_vals_to_array(raw_vals) def _ask_with_sense_function(self, cmd: str) -> str: + # cache.raw_value currently lacks a way to trigger an update + # force this by calling get on the cache first which will trigger + # the update if required + self.sense_function.cache.get(get_if_invalid=True) function = self.sense_function.cache.raw_value.strip('"') return self.ask(f"SENSe:{function}:{cmd}?") def _write_with_sense_function(self, cmd: str, value: str) -> None: + # cache.raw_value currently lacks a way to trigger an update + # force this by calling get on the cache first which will trigger + # the update if required + self.sense_function.cache.get(get_if_invalid=True) function = self.sense_function.cache.raw_value.strip('"') self.write(f"SENSe:{function}:{cmd} {value}") From 728447f0b9aadc9ca75ddeed392a40d8f3a57a1a Mon Sep 17 00:00:00 2001 From: Janek Fleper Date: Fri, 11 Apr 2025 18:55:27 +0200 Subject: [PATCH 7/9] Add properties for all available sense functions This only includes the six sense functions implemented in the instrument driver. The other sense functions do not all support the parameters NPLC, autorange, autozero, aperture_mode and aperture_time. --- .../instrument/sims/Keysight_34465A.yaml | 264 ++++++++++++++++-- 1 file changed, 235 insertions(+), 29 deletions(-) diff --git a/src/qcodes/instrument/sims/Keysight_34465A.yaml b/src/qcodes/instrument/sims/Keysight_34465A.yaml index 1d5170dca554..76beb74551c3 100644 --- a/src/qcodes/instrument/sims/Keysight_34465A.yaml +++ b/src/qcodes/instrument/sims/Keysight_34465A.yaml @@ -108,17 +108,7 @@ devices: r: "{}" setter: q: "SAMPle:TIMer {}" - dc_autorange: - default: 0 - getter: - q: "SENSe:VOLTage:DC:RANGe:AUTO?" - r: "{}" - setter: - q: "SENSe:VOLTage:DC:RANGe:AUTO {}" - specs: - valid: [0, 1] - type: int - dc_range: + voltage_dc_range: default: 1 getter: q: "SENSe:VOLTage:DC:RANGe?" @@ -131,44 +121,260 @@ devices: 10000, 100000, 1000000, 10000000, 100000000, 1000000000] type: float - NPLC: - default: 10.0 + voltage_dc_resolution: + default: +3.00000000E-05 + getter: + q: "SENSe:VOLTage:DC:RESolution?" + r: "{}" + setter: + q: "SENSe:VOLTage:DC:RESolution {}" + current_ac_autorange: + default: 0 + getter: + q: "SENSe:CURR:AC:RANGe:AUTO?" + r: "{}" + setter: + q: "SENSe:CURR:AC:RANGe:AUTO {}" + specs: + valid: [0, 1] + type: int + current_dc_autorange: + default: 0 + getter: + q: "SENSe:CURR:RANGe:AUTO?" + r: "{}" + setter: + q: "SENSe:CURR:RANGe:AUTO {}" + specs: + valid: [0, 1] + type: int + fresistance_autorange: + default: 0 + getter: + q: "SENSe:FRES:RANGe:AUTO?" + r: "{}" + setter: + q: "SENSe:FRES:RANGe:AUTO {}" + specs: + valid: [0, 1] + type: int + resistance_autorange: + default: 0 + getter: + q: "SENSe:RES:RANGe:AUTO?" + r: "{}" + setter: + q: "SENSe:RES:RANGe:AUTO {}" + specs: + valid: [0, 1] + type: int + voltage_ac_autorange: + default: 0 getter: - q: "SENSe:VOLTage:DC:NPLC?" + q: "SENSe:VOLT:AC:RANGe:AUTO?" r: "{}" setter: - q: "SENSe:VOLTage:DC:NPLC {}" + q: "SENSe:VOLT:AC:RANGe:AUTO {}" specs: - valid: [0.001, 0.002, 0.006, 0.02, 0.06, .2, 1, 10, 100] + valid: [0, 1] + type: int + voltage_dc_autorange: + default: 0 + getter: + q: "SENSe:VOLT:RANGe:AUTO?" + r: "{}" + setter: + q: "SENSe:VOLT:RANGe:AUTO {}" + specs: + valid: [0, 1] + type: int + current_ac_autozero: + default: 0 + getter: + q: "SENSe:CURR:AC:ZERO:AUTO?" + r: "{}" + setter: + q: "SENSe:CURR:AC:ZERO:AUTO {}" + current_dc_autozero: + default: 0 + getter: + q: "SENSe:CURR:ZERO:AUTO?" + r: "{}" + setter: + q: "SENSe:CURR:ZERO:AUTO {}" + fresistance_autozero: + default: 0 + getter: + q: "SENSe:FRES:ZERO:AUTO?" + r: "{}" + setter: + q: "SENSe:FRES:ZERO:AUTO {}" + resistance_autozero: + default: 0 + getter: + q: "SENSe:RES:ZERO:AUTO?" + r: "{}" + setter: + q: "SENSe:RES:ZERO:AUTO {}" + voltage_ac_autozero: + default: 0 + getter: + q: "SENSe:VOLT:AC:ZERO:AUTO?" + r: "{}" + setter: + q: "SENSe:VOLT:AC:ZERO:AUTO {}" + voltage_dc_autozero: + default: 0 + getter: + q: "SENSe:VOLT:ZERO:AUTO?" + r: "{}" + setter: + q: "SENSe:VOLT:ZERO:AUTO {}" + current_ac_NPLC: + default: 0 + getter: + q: "SENSe:CURR:AC:NPLC?" + r: "{}" + setter: + q: "SENSe:CURR:AC:NPLC {}" + specs: + valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] type: float - resolution: - default: +3.00000000E-05 + current_dc_NPLC: + default: 0 getter: - q: "SENSe:VOLTage:DC:RESolution?" + q: "SENSe:CURR:NPLC?" r: "{}" setter: - q: "SENSe:VOLTage:DC:RESolution {}" - apterture_enabled: + q: "SENSe:CURR:NPLC {}" + specs: + valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] + type: float + fresistance_NPLC: + default: 0 + getter: + q: "SENSe:FRES:NPLC?" + r: "{}" + setter: + q: "SENSe:FRES:NPLC {}" + specs: + valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] + type: float + resistance_NPLC: + default: 0 + getter: + q: "SENSe:RES:NPLC?" + r: "{}" + setter: + q: "SENSe:RES:NPLC {}" + specs: + valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] + type: float + voltage_ac_NPLC: + default: 0 + getter: + q: "SENSe:VOLT:AC:NPLC?" + r: "{}" + setter: + q: "SENSe:VOLT:AC:NPLC {}" + specs: + valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] + type: float + voltage_dc_NPLC: + default: 0 + getter: + q: "SENSe:VOLT:NPLC?" + r: "{}" + setter: + q: "SENSe:VOLT:NPLC {}" + specs: + valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] + type: float + current_ac_aperture_enabled: + default: 0 + getter: + q: "SENSe:CURR:AC:APERture:ENABled?" + r: "{}" + setter: + q: "SENSe:CURR:AC:APERture:ENABled {}" + current_dc_aperture_enabled: + default: 0 + getter: + q: "SENSe:CURR:APERture:ENABled?" + r: "{}" + setter: + q: "SENSe:CURR:APERture:ENABled {}" + fresistance_aperture_enabled: + default: 0 + getter: + q: "SENSe:FRES:APERture:ENABled?" + r: "{}" + setter: + q: "SENSe:FRES:APERture:ENABled {}" + resistance_aperture_enabled: + default: 0 + getter: + q: "SENSe:RES:APERture:ENABled?" + r: "{}" + setter: + q: "SENSe:RES:APERture:ENABled {}" + voltage_ac_aperture_enabled: + default: 0 + getter: + q: "SENSe:VOLT:AC:APERture:ENABled?" + r: "{}" + setter: + q: "SENSe:VOLT:AC:APERture:ENABled {}" + voltage_dc_aperture_enabled: + default: 0 + getter: + q: "SENSe:VOLT:APERture:ENABled?" + r: "{}" + setter: + q: "SENSe:VOLT:APERture:ENABled {}" + + current_ac_aperture_time: + default: 0 + getter: + q: "SENSe:CURR:AC:APERture?" + r: "{}" + setter: + q: "SENSe:CURR:AC:APERture {}" + current_dc_aperture_time: + default: 0 + getter: + q: "SENSe:CURR:APERture?" + r: "{}" + setter: + q: "SENSe:CURR:APERture {}" + fresistance_aperture_time: + default: 0 + getter: + q: "SENSe:FRES:APERture?" + r: "{}" + setter: + q: "SENSe:FRES:APERture {}" + resistance_aperture_time: default: 0 getter: - q: "SENSe:VOLTage:DC:APERture:ENABled?" + q: "SENSe:RES:APERture?" r: "{}" setter: - q: "SENSe:VOLTage:DC:APERture:ENABled {}" - apterture_time: + q: "SENSe:RES:APERture {}" + voltage_ac_aperture_time: default: 0 getter: - q: "SENSe:VOLTage:DC:APERture?" + q: "SENSe:VOLT:AC:APERture?" r: "{}" setter: - q: "SENSe:VOLTage:DC:APERture {}" - autozero: + q: "SENSe:VOLT:AC:APERture {}" + voltage_dc_aperture_time: default: 0 getter: - q: "SENSe:VOLTage:DC:ZERO:AUTO?" + q: "SENSe:VOLT:APERture?" r: "{}" setter: - q: "SENSe:VOLTage:DC:ZERO:AUTO {}" + q: "SENSe:VOLT:APERture {}" licenses: default: "DIG" getter: From ef71cc81fa73a61713ae149fe3c287081e8c4e55 Mon Sep 17 00:00:00 2001 From: Janek Fleper Date: Mon, 14 Apr 2025 17:08:00 +0200 Subject: [PATCH 8/9] Use correct default value for NPLC properties --- src/qcodes/instrument/sims/Keysight_34465A.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/qcodes/instrument/sims/Keysight_34465A.yaml b/src/qcodes/instrument/sims/Keysight_34465A.yaml index 76beb74551c3..8caf02abe68d 100644 --- a/src/qcodes/instrument/sims/Keysight_34465A.yaml +++ b/src/qcodes/instrument/sims/Keysight_34465A.yaml @@ -231,7 +231,7 @@ devices: setter: q: "SENSe:VOLT:ZERO:AUTO {}" current_ac_NPLC: - default: 0 + default: 10.0 getter: q: "SENSe:CURR:AC:NPLC?" r: "{}" @@ -241,7 +241,7 @@ devices: valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] type: float current_dc_NPLC: - default: 0 + default: 10.0 getter: q: "SENSe:CURR:NPLC?" r: "{}" @@ -251,7 +251,7 @@ devices: valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] type: float fresistance_NPLC: - default: 0 + default: 10.0 getter: q: "SENSe:FRES:NPLC?" r: "{}" @@ -261,7 +261,7 @@ devices: valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] type: float resistance_NPLC: - default: 0 + default: 10.0 getter: q: "SENSe:RES:NPLC?" r: "{}" @@ -271,7 +271,7 @@ devices: valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] type: float voltage_ac_NPLC: - default: 0 + default: 10.0 getter: q: "SENSe:VOLT:AC:NPLC?" r: "{}" @@ -281,7 +281,7 @@ devices: valid: [0.001, 0.002, 0.006, 0.02, 0.06, 0.2, 1, 10, 100] type: float voltage_dc_NPLC: - default: 0 + default: 10.0 getter: q: "SENSe:VOLT:NPLC?" r: "{}" From d4504b312499ffe0554072086d6795d5f5ec0b33 Mon Sep 17 00:00:00 2001 From: "Jens H. Nielsen" Date: Tue, 15 Apr 2025 14:27:52 +0200 Subject: [PATCH 9/9] Add changelog for 6723 --- docs/changes/newsfragments/6723.improved_driver | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 docs/changes/newsfragments/6723.improved_driver diff --git a/docs/changes/newsfragments/6723.improved_driver b/docs/changes/newsfragments/6723.improved_driver new file mode 100644 index 000000000000..0f2b86f36ce5 --- /dev/null +++ b/docs/changes/newsfragments/6723.improved_driver @@ -0,0 +1,2 @@ +The Keysight 344xxA drivers have been updated to ensure that ``NPLC``, ``autorange``, ``autozero``, ``apature_time`` and ```apature_mode`` +parameters use the correct instrument commends for the sense mode selected by the ``sense_function`` parameter.