-
Notifications
You must be signed in to change notification settings - Fork 0
add PTC10 heater #519
Comments
Support for PTC10 is an issue (BCDA-APS/apstools#491) in the milestone for release in |
from Jan:
|
This device might benefit from the BUT, where does the user provide a set point in terms of temperature? |
from Jan:
|
Good, we can reconfigure the
|
The PTC10 support here is not ready for synApps yet. @kmpeters describes:
Getting the impression that a single, complete |
I will refactor this from |
Also will refactor RTD and AIO parts to be compatible with plans in apstools. |
Here's what the In [54]: ptc10.summary()
data keys (* hints)
-------------------
*ptc10
ptc10_coldj2
*ptc10_setpoint
*ptc10_temperatureB
ptc10_temperatureC
read attrs
----------
readback EpicsSignalRO ('ptc10')
setpoint EpicsSignalWithRBV ('ptc10_setpoint')
temperatureB EpicsSignalRO ('ptc10_temperatureB')
temperatureC EpicsSignalRO ('ptc10_temperatureC')
coldj2 EpicsSignalRO ('ptc10_coldj2')
rtd PTC10RtdChannel ('ptc10_rtd')
aio PTC10AioChannel ('ptc10_aio')
config keys
-----------
ptc10_aio_D
ptc10_aio_I
ptc10_aio_P
ptc10_aio_inputchoice
ptc10_aio_iotype
ptc10_aio_lowlimit
ptc10_aio_pidmode
ptc10_aio_ramprate
ptc10_aio_setpoint
ptc10_aio_tunelag
ptc10_aio_tunemode
ptc10_aio_tunestep
ptc10_aio_tunetype
ptc10_aio_voltage
ptc10_enable
ptc10_rtd_channelrange
ptc10_rtd_current
ptc10_rtd_power
ptc10_rtd_sensor
ptc10_rtd_units
ptc10_tolerance
configuration attrs
-------------------
tolerance Signal ('ptc10_tolerance')
enable EpicsSignalWithRBV ('ptc10_enable')
rtd PTC10RtdChannel ('ptc10_rtd')
rtd.units EpicsSignalRO ('ptc10_rtd_units')
rtd.sensor EpicsSignalWithRBV ('ptc10_rtd_sensor')
rtd.channelrange EpicsSignalWithRBV ('ptc10_rtd_channelrange')
rtd.current EpicsSignalWithRBV ('ptc10_rtd_current')
rtd.power EpicsSignalWithRBV ('ptc10_rtd_power')
aio PTC10AioChannel ('ptc10_aio')
aio.voltage EpicsSignalRO ('ptc10_aio_voltage')
aio.lowlimit EpicsSignalWithRBV ('ptc10_aio_lowlimit')
aio.iotype EpicsSignalWithRBV ('ptc10_aio_iotype')
aio.setpoint EpicsSignalWithRBV ('ptc10_aio_setpoint')
aio.ramprate EpicsSignalWithRBV ('ptc10_aio_ramprate')
aio.pidmode EpicsSignalWithRBV ('ptc10_aio_pidmode')
aio.P EpicsSignalWithRBV ('ptc10_aio_P')
aio.I EpicsSignalWithRBV ('ptc10_aio_I')
aio.D EpicsSignalWithRBV ('ptc10_aio_D')
aio.inputchoice EpicsSignalWithRBV ('ptc10_aio_inputchoice')
aio.tunelag EpicsSignalWithRBV ('ptc10_aio_tunelag')
aio.tunestep EpicsSignalWithRBV ('ptc10_aio_tunestep')
aio.tunemode EpicsSignalWithRBV ('ptc10_aio_tunemode')
aio.tunetype EpicsSignalWithRBV ('ptc10_aio_tunetype')
unused attrs
------------
done Signal ('ptc10_done')
report_dmov_changes Signal ('ptc10_report_dmov_changes')
In [52]: %run -i ptc10_controller.py
In [53]: object_explorer(ptc10)
================ =============================== ========
name PV reference value
================ =============================== ========
aio.D 9idcTEMP:tc1:5A:pid:D_RBV 10.0
aio.I 9idcTEMP:tc1:5A:pid:I_RBV 0.01
aio.P 9idcTEMP:tc1:5A:pid:P_RBV 0.5
aio.inputchoice 9idcTEMP:tc1:5A:pid:input_RBV 2A
aio.iotype 9idcTEMP:tc1:5A:ioType_RBV Meas out
aio.lowlimit 9idcTEMP:tc1:5A:lowLimit_RBV 0.0
aio.pidmode 9idcTEMP:tc1:5A:pid:mode_RBV Off
aio.ramprate 9idcTEMP:tc1:5A:rampRate_RBV 1.0
aio.setpoint 9idcTEMP:tc1:5A:setPoint_RBV 20.0
aio.tunelag 9idcTEMP:tc1:5A:tune:lag_RBV 30.0
aio.tunemode 9idcTEMP:tc1:5A:tune:mode_RBV Off
aio.tunestep 9idcTEMP:tc1:5A:tune:step_RBV 0.5
aio.tunetype 9idcTEMP:tc1:5A:tune:type_RBV Cons
aio.voltage 9idcTEMP:tc1:5A:voltage_RBV 0.007
coldj2 9idcTEMP:tc1:ColdJ2:temperature 0.0
enable 9idcTEMP:tc1:outputEnable_RBV 0
readback 9idcTEMP:tc1:2A:temperature 17.69
rtd.channelrange 9idcTEMP:tc1:3A:range_RBV Auto
rtd.current 9idcTEMP:tc1:3A:current_RBV Forward
rtd.power 9idcTEMP:tc1:3A:power_RBV Auto
rtd.sensor 9idcTEMP:tc1:3A:sensor_RBV Diode
rtd.units 9idcTEMP:tc1:3A:units_RBV Ohm
setpoint 9idcTEMP:tc1:5A:highLimit_RBV 1200.0
temperatureB 9idcTEMP:tc1:2B:temperature 17.393
temperatureC 9idcTEMP:tc1:2C:temperature 0.0
================ =============================== ======== |
In [55]: ptc10.read()
Out[55]:
OrderedDict([('ptc10', {'value': 17.664, 'timestamp': 1632769269.70712}),
('ptc10_setpoint',
{'value': 1200.0, 'timestamp': 1632768657.286077}),
('ptc10_temperatureB',
{'value': 17.349, 'timestamp': 1632769269.754152}),
('ptc10_temperatureC', {'value': 0.0, 'timestamp': 631152000.0}),
('ptc10_coldj2', {'value': 0.0, 'timestamp': 631152000.0})]) |
reformatting that: In [59]: listdevice(ptc10)
================== ====== ==========================
name value timestamp
================== ====== ==========================
ptc10 17.648 2021-09-27 14:02:14.701061
ptc10_setpoint 1200.0 2021-09-27 13:50:57.286077
ptc10_temperatureB 17.358 2021-09-27 14:02:14.849055
ptc10_temperatureC 0.0 1989-12-31 18:00:00
ptc10_coldj2 0.0 1989-12-31 18:00:00
================== ====== ========================== |
@jilavsky Except for possible name changes, this is ready for testing later this week. |
|
now In [62]: object_explorer(ptc10)
================ =============================== ========
name PV reference value
================ =============================== ========
coldj2 9idcTEMP:tc1:ColdJ2:temperature 0.0
enable 9idcTEMP:tc1:outputEnable_RBV 0
pid.D 9idcTEMP:tc1:5A:pid:D_RBV 10.0
pid.I 9idcTEMP:tc1:5A:pid:I_RBV 0.01
pid.P 9idcTEMP:tc1:5A:pid:P_RBV 0.5
pid.inputchoice 9idcTEMP:tc1:5A:pid:input_RBV 2A
pid.iotype 9idcTEMP:tc1:5A:ioType_RBV Meas out
pid.lowlimit 9idcTEMP:tc1:5A:lowLimit_RBV 0.0
pid.pidmode 9idcTEMP:tc1:5A:pid:mode_RBV Off
pid.ramprate 9idcTEMP:tc1:5A:rampRate_RBV 1.0
pid.setpoint 9idcTEMP:tc1:5A:setPoint_RBV 20.0
pid.tunelag 9idcTEMP:tc1:5A:tune:lag_RBV 30.0
pid.tunemode 9idcTEMP:tc1:5A:tune:mode_RBV Off
pid.tunestep 9idcTEMP:tc1:5A:tune:step_RBV 0.5
pid.tunetype 9idcTEMP:tc1:5A:tune:type_RBV Cons
pid.voltage 9idcTEMP:tc1:5A:voltage_RBV 0.007
readback 9idcTEMP:tc1:2A:temperature 17.621
rtd.channelrange 9idcTEMP:tc1:3A:range_RBV Auto
rtd.current 9idcTEMP:tc1:3A:current_RBV Forward
rtd.power 9idcTEMP:tc1:3A:power_RBV Auto
rtd.sensor 9idcTEMP:tc1:3A:sensor_RBV Diode
rtd.units 9idcTEMP:tc1:3A:units_RBV Ohm
setpoint 9idcTEMP:tc1:5A:highLimit_RBV 1200.0
temperatureB 9idcTEMP:tc1:2B:temperature 17.346
temperatureC 9idcTEMP:tc1:2C:temperature 0.0
================ =============================== ======== |
Suggest adding a STOP feature per BCDA-APS/bluesky_training#35 Add a STOP feature so the controller will hold the current readback temperature when the |
This will happen with installation of new release (1.6.0rc5+) of apstools. |
Follow the example: from apstools.devices import PTC10PositionerMixin
from ophyd import PVPositioner
class MyPTC10(PTC10PositionerMixin, PVPositioner):
readback = Component(EpicsSignalRO, "2A:temperature", kind="hinted")
setpoint = Component(EpicsSignalWithRBV, "5A:setPoint", kind="hinted")
rtd = Component(PTC10RtdChannel, "3A:")
pid = Component(PTC10AioChannel, "5A:")
ptc10 = MyPTC10("9idcTEMP:tc1:", name="ptc10")
ptc10.report_dmov_changes.put(True) # a diagnostic
ptc10.tolerance.put(1.0) # done when |readback-setpoint|<=tolerance |
[Yesterday 5:22 PM] Ilavsky, Jan
see: https://www.thinksrs.com/products/ptc10.html
The text was updated successfully, but these errors were encountered: