Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Eurotherm 2216e temperature controller #614

Merged
merged 12 commits into from
Jan 10, 2022
Merged

Eurotherm 2216e temperature controller #614

merged 12 commits into from
Jan 10, 2022

Conversation

prjemian
Copy link
Contributor

@prjemian prjemian commented Jan 5, 2022

@prjemian prjemian added this to the 1.6.0 milestone Jan 5, 2022
@prjemian prjemian self-assigned this Jan 5, 2022
@prjemian
Copy link
Contributor Author

prjemian commented Jan 6, 2022

Test at USAXS with PV prefix 9idcLAX:tc1:

@prjemian
Copy link
Contributor Author

prjemian commented Jan 6, 2022

usaxs@usaxscontrol /share1/USAXS_data $ caget 9idcLAX:tc1:SetPointTemp
Channel connect timed out: '9idcLAX:tc1:SetPointTemp' not found.
usaxs@usaxscontrol /share1/USAXS_data $ caget 9idcLAX:tc1:Temp1
Channel connect timed out: '9idcLAX:tc1:Temp1' not found.
usaxs@usaxscontrol /share1/USAXS_data $ caget 9idcLAX:tc1:ProgramNumber
Channel connect timed out: '9idcLAX:tc1:ProgramNumber' not found.

@jilavsky Is the Eurotherm 2216e temperature controller turned on? Is the IOC running?

usaxs@usaxscontrol /share1/USAXS_data $ caget 9idcLAX:alldone
Channel connect timed out: '9idcLAX:alldone' not found.

Appears the IOC is not running. Can it be started?

@jilavsky
Copy link

jilavsky commented Jan 6, 2022

Nothing will run at 9ID until Monday. We have 12 hours long planned power shut down for sectors 8-11 on Saturday and beamline is ready to loose power by now - all hardware is off, except remotely controlled PCs which can be shut down tomorrow.
Sorry. Bad timing. Will start next week, likely Monday if you need it.

@prjemian
Copy link
Contributor Author

prjemian commented Jan 6, 2022

Cannot test until at least 2022-01-10. Marking PR as draft until tested.

@prjemian prjemian marked this pull request as draft January 6, 2022 15:59
@prjemian
Copy link
Contributor Author

prjemian commented Jan 10, 2022

Annotated screen capture of USAXS's GUI view of the Eurotherm controller:

eurotherm

  • Temp1 and Temp2 provide no useful signal and are ignored.
  • SetPointSensor provides the temperature in dC (deciCelsius). (Yuck!)
  • Mode is always set to Auto (user is not likely to change it)
  • SetPointTemp and SetPointTempWrite are the setpoint (read and write PVs, respectively)
  • SetPointPower and SetPointPowerWrite are controlled by the Eurotherm. Just info here.
  • Program and Status are ignored by the user.

@prjemian
Copy link
Contributor Author

Workflow failure is due to caget command,libreadline library, and missing symbol tputs:

2022-01-10T19:13:14.2866060Z shell: /usr/bin/bash -e {0}
2022-01-10T19:13:14.2866385Z env:
2022-01-10T19:13:14.2866772Z   CONDA_PKGS_DIR: /home/runner/conda_pkgs_dir
2022-01-10T19:13:14.2867143Z   PY_VER: 3.9
2022-01-10T19:13:14.2867581Z   ENV_NAME: anaconda-test-env-py-3.9
2022-01-10T19:13:14.2868015Z   PV: gp:UPTIME
2022-01-10T19:13:14.2868336Z ##[endgroup]
2022-01-10T19:13:14.3857805Z caget: symbol lookup error: /usr/share/miniconda/envs/anaconda-test-env-py-3.9/epics/bin/linux-x86_64/../../lib/linux-x86_64/../../../lib/libreadline.so.8: undefined symbol: tputs
2022-01-10T19:13:14.3863712Z ##[error]Process completed with exit code 127.

@prjemian
Copy link
Contributor Author

It's a conda problem: defaults channel installs readline 8.1.2 (fails) while conda-forge channel installs 8.1 (OK).

@prjemian prjemian marked this pull request as ready for review January 10, 2022 21:35
@prjemian
Copy link
Contributor Author

test code:

from apstools.devices import Eurotherm2216e
from apstools.utils import listdevice

PV_PREFIX = "9idcLAX:tc1:"

euro = Eurotherm2216e(PV_PREFIX, name="euro")
euro.wait_for_connection()
print(f"device: {euro}")
print(f"components table:\n{listdevice(euro)}")
print(f"read table:\n{listdevice(euro, scope='read')}")
print(f"in position? {euro.inposition}")
print(f"position {euro.position}")

output

device: Eurotherm2216e(prefix='9idcLAX:tc1:', name='euro', settle_time=0.0, timeout=None, read_attrs=['readback', 'setpoint'], configuration_attrs=['done', 'tolerance', 'power', 'mode', 'program_number'], limits=None, egu='')
components table:
                  data name  value                  timestamp
0                      euro   22.7 2022-01-10 15:34:58.142613
1             euro_setpoint   20.0 2022-01-10 15:34:58.138898
2                 euro_done  False 2022-01-10 15:34:58.143886
3            euro_tolerance      1 2022-01-10 15:34:58.099342
4  euro_report_dmov_changes  False 2022-01-10 15:34:58.097656
5               euro_sensor  227.0 2022-01-10 15:34:57.567181
6                euro_power    0.0 2022-01-10 15:34:58.142232
7                 euro_mode    227 2022-01-10 15:34:58.142407
8       euro_program_number      4 2022-01-10 15:34:57.617181
read table:
       data name  value                  timestamp
0           euro   22.7 2022-01-10 15:34:58.142613
1  euro_setpoint   20.0 2022-01-10 15:34:58.138898
in position? False
position 22.700000000000003

@prjemian
Copy link
Contributor Author

@jilavsky Looks like the BS support is working now. Once the workflows complete, I'll merge this PR. The new support is still not available for USAXS yet. Expected in a week or so. Waiting on all work in the v1.6.0 release (milestone & project) to be complete.

@prjemian prjemian merged commit dc41894 into main Jan 10, 2022
@prjemian prjemian deleted the 559-Eurotherm-2216e branch January 10, 2022 21:43
prjemian added a commit that referenced this pull request Jan 10, 2022
prjemian added a commit that referenced this pull request Jan 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

device support for Eurotherm 2216e temperature controller (from USAXS)
2 participants