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

MUON FRONT END: TDK Lambda Genesys EPICS #983

Closed
kjwoodsISIS opened this issue Feb 25, 2016 · 6 comments
Closed

MUON FRONT END: TDK Lambda Genesys EPICS #983

kjwoodsISIS opened this issue Feb 25, 2016 · 6 comments
Assignees

Comments

@kjwoodsISIS
Copy link
Contributor

kjwoodsISIS commented Feb 25, 2016

As a Muon Front End User I will want to control power supplies from TDK Lambda Genesys within EPICS

== Acceptance Criteria ==

  1. Up to 15 TDK Lambda Genesys power supply units can be controlled from EPICS

== Notes ==

  1. The list of commands required for this control needs to be confirmed, but should be limited to read/write of the standard PSU values - current and voltage - This is available in the comments
  2. There is a stream based IOC that already exists, and it should be possible to acquire this and alter if necessary
  3. If there is no existing driver, or it cannot be sourced easily, this is just a stream device driver, so straightforward
  4. The IOC will need to be incorporated into our setup - main IOC in support listing, IOC to run in IOCs, appropriate repositories created
  5. Four IOCs should be added to the list so that it is possible to perform the setup with an IOC available for each Muon instrument (HiFi, MuSR and EMU) and one for the front end control. Each IOC could be talking to multiple power supplies.
  6. Some work has already been done with this manufacturer on LARMOR using SDTEST
@kjwoodsISIS kjwoodsISIS added this to the 2016_02_25 milestone Feb 25, 2016
@kjwoodsISIS
Copy link
Contributor Author

Imported from trac issue 985. Created by kvlb23 on 2015-11-12T12:03:19, last modified: 2016-01-28T11:50:38

@kjwoodsISIS
Copy link
Contributor Author

Trac comment by kvlb23 on 2016-01-22 15:43:55:

Assuming a match to the LabVIEW as the requirements then the following commands will be needed:

Command Desc Notes
RMT 1 Set the PSU into remote mode
PV n.nnn Set the voltage of the PSU
OUT? Read whether the output is OFF or ON This is then converted into a Boolean
MC? Read Output Current This value is used directly, and is converted into a field value
MV? Read Output Voltage
PC? Read Output Current Set Point
OUT 0 Set the Output Off Can be easily combined with OUT 1
OUT 1 Set the Output On Can be easily combined with OUT 0
RST Reset the system
PC n.nnn Set the output current of the PSU This will also need to be converted from a field value

During startup the following commands are sent:

  1. RMT 1
  2. PV set to the max voltage value in the setup
  3. OUT?

The following logic is used to control whether or not to turn the output off based on the status of the system:
If more than a second has passed since the Output Current Set Point was read as being not set to zero
AND
If the supply is ON
AND
If the Output Current Set Point is 0
AND
If the Field Value < 1
AND
If the Output Voltage < 0.1
AND
If the Max of the last 20 voltage readings - the Min of the last 20 voltage readings < 0.1
A result of TRUE will turn the Output Off

@KathrynBaker
Copy link
Member

KathrynBaker commented Apr 15, 2016

During testing a number of changes were noticed as being required so the following changes are needed:

  1. The IOC name is too long to be used with SECI (CaLab is still limiting to 40 characters), and so that needs reducing
  2. There is a need to send an address command to the PSU on startup, and on comms loss - there are various possible solutions to this, it is worth investigating the @init in the protocol for asyn to see if that will serve the purpose, otherwise the command can be sent from the st.cmd which on comms loss would necessitate a restart of the IOC
  3. The st files should be altered to use a common item for the repeated items (see sdtest for examples), allowing a number of PSUs in each IOC - which needs to be configurable, so a number of macros are needed for the COM port and the address of each PSU
  4. The records are using CURRENT not CURR

Note that the automatic off logic is not needed for this system, as these PSUs must remain ON

@KathrynBaker
Copy link
Member

Having just looked at @init on http://epics.web.psi.ch/software/streamdevice/doc/protocol.html and http://epics.web.psi.ch/software/streamdevice/doc/processing.html#init, this is no use for the current situation, but is still a useful command - and would be useful in other situations as it will initialise an output record to a value from the device (e.g. Set the SP to the existing SP:RBV), so the solution for the address is to add it to the st.cmd as asynOctet commands

@KathrynBaker
Copy link
Member

Two new pull requests to capture the changes that were needed:

ISISComputingGroup/EPICS-TDKLambdaGenesys#1

and

ISISComputingGroup/EPICS-ioc#24

@IsabellaRey
Copy link

This ticket was tested and merged. Outstanding issues after testing have been captured as part of #1170

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants