Qcodes icon indicating copy to clipboard operation
Qcodes copied to clipboard

Add Blocking to DynaCool PPMS During Temperature Ramp

Open trlemon opened this issue 3 months ago • 1 comments

Summary of Changes

  • Add 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.

trlemon avatar Sep 29 '25 23:09 trlemon

Codecov Report

:x: Patch coverage is 16.66667% with 5 lines in your changes missing coverage. Please review. :white_check_mark: Project coverage is 59.88%. Comparing base (eb77989) to head (5f11aae).

Files with missing lines Patch % Lines
...ent_drivers/QuantumDesign/DynaCoolPPMS/DynaCool.py 16.66% 5 Missing :warning:
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #7534      +/-   ##
==========================================
- Coverage   59.89%   59.88%   -0.01%     
==========================================
  Files         352      352              
  Lines       31807    31813       +6     
==========================================
+ Hits        19051    19052       +1     
- Misses      12756    12761       +5     

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

codecov[bot] avatar Sep 30 '25 00:09 codecov[bot]

Testing Results - Bug Found

Environment:

  • PPMS: Quantum Design DynaCool
  • QCodes version: 0.55.0.dev194 (this PR branch)
  • Testing date: December 19, 2025

Issue: blocking_t() causes PPMS server crash

Steps to Reproduce:

  1. Fresh PPMS connection - reads work normally (ppms.temperature() ✓)
  2. Execute: ppms.blocking_t(300)
  3. Result: VI_ERROR_IO on the TEMP write command
  4. Subsequent reads fail with VI_ERROR_CONN_LOST
  5. PPMS server connection is lost

Error Details: VisaIOError: VI_ERROR_IO (-1073807298): Could not perform operation because of I/O error at DynaCool.py:434 in write(): self._error_code = int(self.visa_handle.read())

Then: VisaIOError: VI_ERROR_CONN_LOST (-1073807194): The connection for the given session has been lost

Observations:

  • ppms.temperature_setpoint() (non-blocking) works fine
  • ppms.blocking_t() crashes the connection
  • blocking_t parameter exists and is configured correctly
  • Issue occurs immediately when TEMP command is sent with blocking enabled

Root Cause Analysis: The failure occurs at line 434 when trying to read the error code response after sending the TEMP command. The PPMS receives the command but fails to respond, then the connection is lost.

SherwanMicrosoft avatar Dec 19 '25 09:12 SherwanMicrosoft