Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/changes/newsfragments/7534.improved_driver
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Added blocking function to DynaCool PPMS driver that waits for temperature
state to be stable before allowing other functions to be called when
setting the temperature.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class DynaCool(VisaInstrument):
# the ramp time resolution is in (s) and is used in the
# _do_blocking_ramp method
_ramp_time_resolution = 0.1
_blocking_t_sleep = 0.5

temp_params = ("temperature_setpoint", "temperature_rate", "temperature_settling")
field_params = ("field_target", "field_rate", "field_approach")
Expand Down Expand Up @@ -83,6 +84,15 @@ def __init__(
)
"""Parameter temperature_setpoint"""

self.blocking_t: Parameter = self.add_parameter(
"blocking_t",
label="Block instrument while ramping temp",
unit="K",
vals=vals.Numbers(1.6, 400),
set_cmd=partial(self._temp_setter, "temperature_setpoint", True),
)
"""Parameter blocking_t will block instrument interaction while temperature is ramping to setpoint."""

self.temperature_rate: Parameter = self.add_parameter(
"temperature_rate",
label="Temperature settle rate",
Expand Down Expand Up @@ -400,6 +410,7 @@ def _temp_setter(
"temperature_setpoint", "temperature_rate", "temperature_settling"
],
value: float,
block_while_ramping: bool = False,
) -> None:
"""
The setter function for the temperature parameters. All three are set
Expand All @@ -411,6 +422,10 @@ def _temp_setter(

self.write(f"TEMP {values[0]}, {values[1]}, {values[2]}")

if block_while_ramping:
while self.temperature_state() != "stable":
sleep(self._blocking_t_sleep)

def write(self, cmd: str) -> None:
"""
Since the error code is always returned, we must read it back
Expand Down
Loading