{ "cells": [ { "cell_type": "markdown", "id": "0053b22b", "metadata": {}, "source": [ "![li_banner_1_blue.png](./OI_images/li_banner_1_blue.png)\n", "\n", "# Proteox system integration with QCoDeS\n", "\n", "The Proteox is controlled with the `oi.DECS` system control software. This is designed to operate in an asynchronous fashion using WebSockets.\n", "\n", "`QCoDeS` works well for `VISA` instruments that generally have synchronous behaviour.\n", "\n", "It is possible to the `WAMP` messaging protocol directly from QCoDeS, but for simple (single threaded) instrument drivers that can result in time-out issues if the communication channel is unactive for some time.\n", "\n", "An alternative approach is to make `oi.DECS` 'look like' a standard `VISA` instrument, and that approach is described below.\n", "\n", "## DECS<->VISA\n", "\n", "To accomplish this, a simple socket server (launched *via* `decs_visa.py`) is inserted between `QCoDeS` and `oi.DECS`. A pair of queues objects are provided for inter-process communication between the socket server and the `WAMP` interface to the Proteox.\n", "\n", "![DECS_VISA.jpg](./OI_images/DECS_VISA.jpg)" ] }, { "cell_type": "markdown", "id": "b9d4df11", "metadata": {}, "source": [ "## Example of Proteox Control using QCoDeS driver\n", "\n", "First, import the required python packages and Proteox oi.DECS QCoDeS driver, starting logging and create a Station." ] }, { "cell_type": "code", "execution_count": 1, "id": "bc273d87", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Logging hadn't been started.\n", "Activating auto-logging. Current session state plus future input saved.\n", "Filename : C:\\Users\\abi.graham\\.qcodes\\logs\\command_history.log\n", "Mode : append\n", "Output logging : True\n", "Raw input log : False\n", "Timestamping : True\n", "State : active\n", "Qcodes Logfile : C:\\Users\\abi.graham\\.qcodes\\logs\\240523-21260-qcodes.log\n" ] } ], "source": [ "import logging\n", "\n", "import qcodes as qc\n", "from qcodes.logger.logger import start_all_logging\n", "\n", "from qcodes_contrib_drivers.drivers.OxfordInstruments.Proteox import oiDECS\n", "\n", "start_all_logging()\n", "log = logging.getLogger()\n", "\n", "station = qc.Station()" ] }, { "cell_type": "markdown", "id": "21d60a3e", "metadata": {}, "source": [ "**Initialise connection to oi.DECS software/Proteox.**\n", "\n", "If running on a Windows platform, debug/information produced by the `DECS<->VISA` simple TCP socket server will be outputted to a `decs_visa.log file` created in your working directory. If struggling to establish a connection please check this log file for information on why." ] }, { "cell_type": "code", "execution_count": 2, "id": "8222587b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running on Windows-10-10.0.19045-SP0 - start subprocess without PIPEd output\n", "Connected to: Oxford Instruments oi.DECS (serial:decs-544e0a, firmware:0.6.0.2621) in 0.15s\n" ] } ], "source": [ "try:\n", " Proteox = oiDECS('Proteox')\n", " Proteox.timeout(15)\n", "except Exception as err:\n", " log.critical(err)\n", " print(f'Connection failed: {err}')" ] }, { "cell_type": "markdown", "id": "9fee190d", "metadata": {}, "source": [ "**Add Proteox to QCoDeS station and print readable snapshot of cryostat.**" ] }, { "cell_type": "code", "execution_count": 3, "id": "262f4834", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Proteox:\n", "\tparameter value\n", "--------------------------------------------------------------------------------\n", "Cold_Plate_Temperature :\t0 (K)\n", "IDN :\t{'vendor': 'Oxford Instruments', 'model': 'oi:D...\n", "Magnet_Current_Vector :\t(0.0, 0.0, -0.0116) (('A', 'A', 'A'))\n", "Magnet_State :\tHolding Persistent \n", "Magnet_Temperature :\t813.1 (K)\n", "Magnetic_Field_Vector :\t(0.0, 0.0, 0.0) (('T', 'T', 'T'))\n", "Mixing_Chamber_Heater_Power :\t0 (W)\n", "Mixing_Chamber_Temperature :\t0 (K)\n", "OVC_Pressure :\t2440 (Pa)\n", "P1_Pressure :\t87013 (Pa)\n", "P2_Pressure :\t171 (Pa)\n", "P3_Pressure :\t430 (Pa)\n", "P4_Pressure :\t33656 (Pa)\n", "P5_Pressure :\t34647 (Pa)\n", "P6_Pressure :\t451.9 (Pa)\n", "PT1_Head_Temperature :\t294.3 (K)\n", "PT1_Plate_Temperature :\t294.24 (K)\n", "PT2_Head_Temperature :\t294.01 (K)\n", "PT2_Plate_Temperature :\t294.03 (K)\n", "Sorb_Temperature :\t177.14 (K)\n", "Still_Heater_Power :\t0 (W)\n", "Still_Plate_Temperature :\t179.44 (K)\n", "timeout :\t15 (s)\n" ] } ], "source": [ "station.add_component(Proteox)\n", "Proteox.print_readable_snapshot()" ] }, { "cell_type": "markdown", "id": "9db72d10", "metadata": {}, "source": [ "**Read Parameters**" ] }, { "cell_type": "code", "execution_count": 3, "id": "6afc30ed", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.9693" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Proteox.Mixing_Chamber_Temperature()" ] }, { "cell_type": "code", "execution_count": 3, "id": "028e2f2f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, 0.0, -0.000215296835037395)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Proteox.Magnetic_Field_Vector()" ] }, { "cell_type": "code", "execution_count": 4, "id": "2759ade4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.000215296835037395" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Proteox.Magnetic_Field_Vector()[2]" ] }, { "cell_type": "markdown", "id": "6bd11ddf", "metadata": {}, "source": [ "### Magnet Control" ] }, { "cell_type": "code", "execution_count": 7, "id": "0510d6a8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Holding Persistent'" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Proteox.Magnet_State()" ] }, { "cell_type": "markdown", "id": "e34cc951", "metadata": {}, "source": [ "**Set target field value and ramp rate.** \n", "\n", "````python\n", "set_magnet_target(\n", " Coordinate_system : int, \n", " X_feild_value : float, \n", " Y_field_value : float, \n", " Z_field_value : float, \n", " Sweep_mode : str, \n", " Sweep_rate : float,\n", " Persist_on_completion : bool\n", ")\n", "````\n", "\n", "Options for coordinate system are: \n", "\n", " 0 - Cartesian (X,Y,Z) \n", " 10 - Cylinderical (Rho, Phi, Z) \n", " 20 - Sphereical (R,Theta,Phi) \n", "\n", "For a solenoid magnet X_field_value and Y_field_value should be set to zero.\n", "\n", "Options for Sweep_mode (and Sweep_rate) are: \n", " \n", " 'ASAP' (Sweep_rate is ignored. Can be any float) \n", " 'TIME' (Sweep_rate = time in minutes) \n", " 'RATE' (Sweep_rate = rate in T/min) " ] }, { "cell_type": "code", "execution_count": 8, "id": "6a6fd845", "metadata": {}, "outputs": [], "source": [ "#for z-solenoid magnet set target field to 0.1 T and sweep rate to 0.25 T/min.\n", "Proteox.set_magnet_target(0,0,0,0,'RATE',0.25,False)\n", "\n", "#If running with oi.DECS firmware =< 0.5.1, ingore the error \"Error parsing response: Length of data record inconsistent with record type\". The magnet field target should have still been set. Check the GUI.\n", "#You will recieve this error because the data sent back from oi.DECS won't be handled correctly for firmware versions =< 0.5.1." ] }, { "cell_type": "markdown", "id": "0ae49d75", "metadata": {}, "source": [ "Sweep the field. Then wait until Magnet status has gone back to 'Holding Not Persistent'." ] }, { "cell_type": "code", "execution_count": null, "id": "4713295d", "metadata": {}, "outputs": [], "source": [ "Proteox.sweep_field()\n", "Proteox.wait_until_field_stable()" ] }, { "cell_type": "markdown", "id": "a0a10249", "metadata": {}, "source": [ "For high resolution field sweeps, set the target field as normal, then use the `sweep_small_field_step` function, instead of `sweep_field`.\n", "\n", "The `sweep_small_field_step` function is required when you want to step the output current of the magnet power supply by less than 100 mA. The iPS has an output current resolution of 0.1 mA. The function `sweep_field` shown above only provides a output current resolution of 100 mA, due to the oi.DECS API used in this function.\n", "\n", "*(What 100 mA is in magnetic field will depend on the current to field conversion factor of your magnet. This value can be found on your iPS under **Config** and under the column heading **I to H (A/T)**.)*" ] }, { "cell_type": "code", "execution_count": null, "id": "0d7b0945", "metadata": {}, "outputs": [], "source": [ "Proteox.set_magnet_target(0,0,0,0.005,'ASAP',0.25,False)\n", "Proteox.sweep_small_field_step('Z')\n", "\n", "# You can only ramp one sub-group (X,Y or Z) at a time.\n", "# When ramping the VRM subgroup the GUI will continue to show the VRM status as ‘Holding Not Persistent’ but the iPS will ramp the current to your field set point.\n", "# The field value displayed on the GUI always rounds to 2 decimal places, but if you use the API to ask for the field value, it gives you the correct more precise value." ] }, { "cell_type": "markdown", "id": "6a0df386", "metadata": {}, "source": [ "### 2D measurement example using do2d" ] }, { "cell_type": "code", "execution_count": 3, "id": "3e3c6349", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting experimental run with id: 2. Using 'qcodes.dataset.do2d'\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2a977970416949beb9083a9992f35e14", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/3 [00:00,),\n", " (,))" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from qcodes.dataset import do2d\n", "from qcodes.instrument.specialized_parameters import ElapsedTimeParameter\n", "from qcodes.dataset import load_or_create_experiment, Measurement\n", "\n", "tutorial_exp = load_or_create_experiment(\"doNd_Measurement\", sample_name=\"no sample\")\n", "meas = Measurement(name=\"2d_measurement\", exp=tutorial_exp)\n", "\n", "# create a function that sets the temperature and waits until stable\n", "def Mixing_Chamber_Temperature_set(temp):\n", " Proteox.Mixing_Chamber_Temperature(temp)\n", " Proteox.wait_until_temperature_stable_std_control(0.02, 0.01, 1)\n", "\n", "# use above function as temperature setting parameter\n", "set_Mixing_Chamber_Temperature = qc.Parameter('MC_Temperature',\n", " label='MC_Temperature',\n", " unit='K',\n", " set_cmd=Mixing_Chamber_Temperature_set)\n", "\n", "# create a function that sets the magnetic field and waits until stable\n", "def Magnetic_Field_Z_set(tesla):\n", " Proteox.set_magnet_target(0,0,0,tesla,'RATE',0.3,False)\n", " Proteox.sweep_field()\n", " Proteox.wait_until_field_stable()\n", "\n", "# use above function as the magnetic field setting parameter\n", "set_Magnetic_Field_Z = qc.Parameter('Magnetic_Field_Z',\n", " label='Magnetic_Field_Z',\n", " unit='T',\n", " set_cmd=Magnetic_Field_Z_set)\n", "\n", "# parameter to be measured at each temperature and field value.\n", "Etime = ElapsedTimeParameter('Etime')\n", "\n", "do2d(\n", " set_Mixing_Chamber_Temperature,\n", " 2,\n", " 4,\n", " 3,\n", " 0.01,\n", " set_Magnetic_Field_Z,\n", " 0,\n", " 0.2,\n", " 3,\n", " 0.01,\n", " Etime,\n", " do_plot=True,\n", " show_progress=True\n", ")" ] }, { "cell_type": "markdown", "id": "c371c770", "metadata": {}, "source": [ "**Close connection to oiDECS/Proteox**" ] }, { "cell_type": "code", "execution_count": 4, "id": "ed57a36a", "metadata": {}, "outputs": [], "source": [ "Proteox.close()" ] }, { "cell_type": "markdown", "id": "c49745fd", "metadata": {}, "source": [ "![nanoscience.png](./OI_images/nanoscience.png)" ] }, { "cell_type": "markdown", "id": "acfd92ca", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.4" }, "nbsphinx": { "execute": "never" } }, "nbformat": 4, "nbformat_minor": 5 }