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  <20092010  2011  2012  2013  2014  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  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Dynamic Listing of PVs
From: Andrew Johnson <[email protected]>
To: [email protected]
Cc: "Ernest L. Williams Jr." <[email protected]>
Date: Tue, 24 Feb 2009 10:01:11 -0600
On Monday 23 February 2009 17:36:38 Dalesio, Leo wrote:
> Supporting this over the channel access server is another topic altogether.
> The protocol does not support it.

Actually given a suitable naming convention and record names that fit into a 
40 character DBF_STRING it's not hard to support something like this with no 
changes to Base.  You just need to have enough RAM in your IOC (or CAS tool) 
to be able to create a waveform record which contains all of the PV names.  
Then to get the complete set of names you just connect to and fetch that 
waveform.

PV names are not the same as record names though, since each record.field is a 
separate PV as far as CA clients are concerned.  In order to reduce large 
amounts of name duplication you'd probably have one record that holds all of 
the record names and a series of additional records, one for each record type 
that provide the accessible field names for that type.  The client would have 
to find the base record name it's interested in, connect to the .RTYP field 
of that record to find its record type (or that could be provided as a 
separate array), then fetch the appropriate list of fields for that record 
type.

Implementing this would not be hard, it just takes defining the naming 
convention and writing some code to fill up the various waveforms at 
initialization time.

At the APS we take a more pragmatic approach though; each of our IOCs dumps a 
list of all of its record names to an IOC-specific file on a file-server just 
before the IOC starts processing.  Any client tools that need to search for 
records can then access this file however they like.  This solution saves the 
IOC from having to serve all the client requests for its PV name list, thus 
we can use IOCs in our control system that have less RAM and need less 
powerful CPUs.  It makes more sense to us to put that load on the 
file-servers than on the more specialized IOCs.

I guess it wouldn't be too hard to run a soft-IOC that takes those files and 
makes them available to CA clients as arrays though; we already do something 
like that in the CA nameservers that we run, but without serving the PV lists 
up as array PVs; this might be an interesting addition to the nameserver...

- Andrew
-- 
The best FOSS code is written to be read by other humans -- Harold Welte

References:
Dynamic Listing of PVs Bruno Coudoin
Re: Dynamic Listing of PVs Bruno Coudoin
RE: Dynamic Listing of PVs Dalesio, Leo

Navigate by Date:
Prev: Re: can't output strings array with gensub haquin
Next: Re: Dynamic Listing of PVs Ralph Lange
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: Dynamic Listing of PVs Dalesio, Leo
Next: Re: Dynamic Listing of PVs Ralph Lange
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 31 Jan 2014 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·