EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  <20232024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  <20232024 
<== Date ==> <== Thread ==>

Subject: Re: Support module for PV pre-defined values
From: "Pueyos, Armando \(DLSLtd, RAL, LSCI\) via Tech-talk" <tech-talk at aps.anl.gov>
To: "Pearson, Matthew" <pearsonmr at ornl.gov>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>, Mark Rivers <rivers at cars.uchicago.edu>
Date: Thu, 4 May 2023 16:04:07 +0000
Hi Matt,

Many thanks, I would be interested in seeing these templates, so please send these if you can. It looks quite close to what I'm looking for.

My aim is having the different positions being stored by autosave, so no need for multiple versions of templates for changing data. Better if data and logic can be nicely de-coupled. I'll have a look into the autosave's load/save functions you mention.

Anyway, as I am currently at an evaluation stage, I did not decide yet for a support module itself or a specific Python IOC, I'm open to suggestions.

Thanks a lot!
     Armando


From: Pearson, Matthew <pearsonmr at ornl.gov>
Sent: 04 May 2023 16:48
To: Pueyos, Armando (DLSLtd,RAL,LSCI) <armando.pueyos at diamond.ac.uk>; Mark Rivers <rivers at cars.uchicago.edu>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: RE: Support module for PV pre-defined values
 

Hi,

 

I have some database templates that can act as tables of positions (and descriptions), meant to be used in concert with a ‘positioner’ database. There can be multiple tables (set 1, set 2, etc.), and the users can input sets of positions into the tables. Then they can select which table they want to use, and the positions are copied into the positioner table (along with descriptions). The copy operation supports put_callback. We also use channel access security to only permit beamline staff (and not general users) to edit some of the saved positions. It’s scalable to N positions, but the database templates have to be setup in advance, so you could have a few templates ready to go depending on need (6 positions, 12 positions, 18 positions, 32 positions, etc.).

 

The positioner part of the logic controls the motor moves, and calculates which ‘position’ the motor is at, based on some tolerance value.

 

It’s not nicely packaged in a support module I’m afraid, but I can send you the template files if you’d like. I actually think it’s easier to develop and maintain simple logic like this in database logic and not Python code. Although, if you need ultimate flexibility then a Python IOC may be a better solution. It’s also a pain having to setup and maintain multiple versions of the same files for different numbers of positions, although I can imagine these being generated by a script, and that would simplify things a bit.

 

There are also other similar solutions, like CS-Studio PVTable or load/save functions built into autosave, but these may not be what you need in this case.

 

Cheers,

Matt

 

From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Pueyos, Armando (DLSLtd, RAL, LSCI) via Tech-talk
Sent: Thursday, May 4, 2023 9:56 AM
To: Mark Rivers <rivers at cars.uchicago.edu>; tech-talk at aps.anl.gov
Subject: [EXTERNAL] Re: Support module for PV pre-defined values

 

 

Hi Mark,

 

Thanks, that's a similar approach. However, it's quite basic as I'm looking for a support module that can be configured in different ways, and allow users to re-define their own positions through some interface. Going for more than 16 positions and more than 1 PV updated would be nice.

 

FYI, existing Diamond's positioner module does use an MBBO, but also has added functionality like asynchonous callback wait, and a position indication where the current position is the desired one.

 

If nobody already implemented such thing, I am willing to give it a try and implement it.

 

Cheers,

     Armando

 


From: Mark Rivers <rivers at cars.uchicago.edu>
Sent: 04 May 2023 13:21
To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>; Pueyos, Armando (DLSLtd,RAL,LSCI) <armando.pueyos at diamond.ac.uk>
Subject: Re: Support module for PV pre-defined values

 

Hi Armando,

 

This is a simple database we use for a filter rack.  It is just an mbbo record where the XXST fields are the description of each filter, and the XXVL fields are the motor position.  When the user selects a filter the mbbo forward links to an ao record that moves the motor.  Since the XXVL files are limited to integers this version can only move to integer mm in this case.  One could change them to micron units for sub-mm precision.  That would need a calc record on the output to scale back to mm.

 

# This is a database for the 13-BM-D filter rack

# An MBBO record which provides the menu and motor positions

record(mbbo,"$(P)$(R)Select") {

        field(ZRVL,"90")

        field(ZRST,"None")

        field(ONVL,"62")

        field(ONST,"1 mm Cu")

        field(TWVL,"55")

        field(TWST,"0.5 mm Cu")

        field(THVL,"33")

        field(THST,"4 mm Al")

        field(FRVL,"25")

        field(FRST,"2 mm Al")

        field(FVVL,"3")

        field(FVST,"1mm Al + 0.25 Cu")

        field(SXVL,"-5")

        field(SXST,"1 mm Al")

        field(FLNK,"$(P)$(R)Move PP MS")

}

 

record(ao,"$(P)$(R)Move") {

        field(DOL,"$(P)$(R)Select.RVAL NPP NMS")

        field(OMSL,"closed_loop")

        field(OUT,"$(P)$(MOTOR).VAL PP MS")

 

Is this what you are looking for?

 

Mark

 


From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Pueyos, Armando (DLSLtd, RAL, LSCI) via Tech-talk <tech-talk at aps.anl.gov>
Sent: Thursday, May 4, 2023 5:46 AM
To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: Support module for PV pre-defined values

 

Hello all,

 

I am trying to find some support module that would allow to store some values and apply these to at least 1 PV from an enum. The idea is to allow end users to defining pre-selected values and apply these to a configured PV or group of PVs on demand. Ideally, something independent of the motor record that can be applied to any existing PV.

As an example, let's imagine a motor-controlled multi-filter with specific positions for each one (e.g. Cu=0, Si=50, Pt=80): the user can drive it to any value within range using a motor record, but also can comfortably select one the positions and command the motion to any of the specific values -- in the example, when selecting "Pt" the motor is commanded to value=80.

FYI, at Diamond we do have a similar one called simply "positioner", but it's quite complex and old for proper maintainability, and thus I am looking for a substitute.

Does anyone know about or have already implemented EPICS support for something like that? Please let me know, any help would be much appreciated.

 

Many thanks,

    Armando Pueyos

 

 

-- 

This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail.
Any opinions expressed within this e-mail are those of the individual and not necessarily of Diamond Light Source Ltd.
Diamond Light Source Ltd. cannot guarantee that this e-mail or any attachments are free from viruses and we cannot accept liability for any damage which you may sustain as a result of software viruses which may be transmitted in or with the message.
Diamond Light Source Limited (company no. 4375679). Registered in England and Wales with its registered office at Diamond House, Harwell Science and Innovation Campus, Didcot, Oxfordshire, OX11 0DE, United Kingdom
 

 

-- 

This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail.
Any opinions expressed within this e-mail are those of the individual and not necessarily of Diamond Light Source Ltd.
Diamond Light Source Ltd. cannot guarantee that this e-mail or any attachments are free from viruses and we cannot accept liability for any damage which you may sustain as a result of software viruses which may be transmitted in or with the message.
Diamond Light Source Limited (company no. 4375679). Registered in England and Wales with its registered office at Diamond House, Harwell Science and Innovation Campus, Didcot, Oxfordshire, OX11 0DE, United Kingdom
 


References:
Support module for PV pre-defined values Pueyos, Armando (DLSLtd, RAL, LSCI) via Tech-talk
Re: Support module for PV pre-defined values Mark Rivers via Tech-talk
Re: Support module for PV pre-defined values Pueyos, Armando (DLSLtd, RAL, LSCI) via Tech-talk
RE: Support module for PV pre-defined values Pearson, Matthew via Tech-talk

Navigate by Date:
Prev: RE: Support module for PV pre-defined values Pearson, Matthew via Tech-talk
Next: RE: Epics Archiver Online Status Question Manoussakis, Adamandios via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  <20232024 
Navigate by Thread:
Prev: RE: Support module for PV pre-defined values Pearson, Matthew via Tech-talk
Next: Power strip with ehthernet interfacet to allow remote control -- (1-2 ports) Luchini, Kristi L. via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  <20232024 
ANJ, 04 May 2023 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·