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  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Changing SCAN field in many records
From: <[email protected]>
To: <[email protected]>, <[email protected]>
Date: Fri, 7 Jun 2013 08:01:48 +0000
From: [email protected] [mailto:tech-talk-
> We would like to set a SCAN field on several lower level BO records, at
> the same time, and the value of these SCAN fields should reflect the
> value of the single higher level record SCAN field.
> 
> For the control of these lower level SCAN fields another, higher level
> record, would be used. If a user wishes to set individual lower level
> record SCAN fields, she is allowed. OTOH, when changing the SCAN of the
> higher level record, ALL lower lever BO records would get their SCAN
> field set too.
> 
> Is it possible to get this done without using a sequencer?

I suggest an alternative architecture:

1. Have a single controlling record with controllable SCAN.

2. Set all your low level records to SCAN='Passive'

3. Use a chain of fanout records to force processing of the low level records

4. Use the FLNK of the controlling record to trigger the fanout.

Using the Python based EPICS database builder I would write this construction as:

	low_level_pvs = [records.bo('BO%d' %n) for n in range(16)]
	control = records.bo('SCAN', SCAN = '.1 seconds',
	    FLNK = create_fanout('FAN', *low_level_pvs))

The corresponding database would look something like this:

	record(bo, "$(device):BO0") { }
	...
	record(bo, "$(device):SCAN")
	{
	    field(SCAN, ".1 seconds")
	    field(FLNK, "$(device):FAN")
	}
	record(fanout, "$(device):FAN")
	{
	    field(SELM, "All")
	    field(LNK1, "$(device):BO0 PP")
	    ...
	    field(LNK6, "$(device):FAN1")
	}
	record(fanout, "$(device):FAN1")
	{
	    field(SELM, "All")
	    field(LNK1, "$(device):BO6 PP")
	    ...
	}

(I think you see why I'd write this in Python!)


Replies:
Re: Changing SCAN field in many records Ralph Lange
References:
Changing SCAN field in many records Hinko Kočevar

Navigate by Date:
Prev: Changing SCAN field in many records Hinko Kočevar
Next: Re: Changing SCAN field in many records Ralph Lange
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Changing SCAN field in many records Hinko Kočevar
Next: Re: Changing SCAN field in many records Ralph Lange
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 20 Apr 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·