EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

<19941995  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  2023  2024  Index <19941995  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  2023  2024 
<== Date ==> <== Thread ==>

Subject: various no doubt trivial technical questions
From: [email protected] (William Lupton)
Date: Thu, 1 Sep 94 10:03:25 HST
Dear all,

  I am preparing for a workshop here next week where I will be doing my best to
explain what EPICS is and why we want to use it. I have installed R3.11.4 and
have it working but in the course of setting it up and doing some simple things,
several questions have arisen. Please bear with me if the answers are very
obvious or well-documented in some place that I haven't looked!

  Thanks,

  William Lupton

--------------------------------------------------------------------------------

1. User-defined record field datatypes
--------------------------------------

The CA manual states that the "chtype" parameter to ca_put() and ca_get() must
be one of the DBR_xxxx values from db_access.h. What does one do when one has
defined a record one of whose fields is itself record-structured. Does one have
to make a local version of db_access.h? Or does one simply not do this sort of
thing? A DBR_OPAQUE value (or some such; meaning that no conversion is to be
attempted) would seem like a useful concept?


2. Documentation
----------------

I have pulled several documents from the ANL WWW server. At the course that Deb
and Bill gave here in Hawaii we had some chapters from another manual that was
(I think) being put together at LANL. For example, chapter 2 was called "Anatomy
of a record support file". Is this manual available ... or is everything going
to come together with R3.12?


3. CA synchronous groups
------------------------

Often the state of some system will be described by several PVs, all of which
must have self-consistent values. A simple example from our world would be:

a) for writing PVs, the desired telescope position might be described by a
   tel:targra (Target Right Ascension) and tel:targdec (Target Declination)
   PV pair. Setting these PVs should not initiate a telescope move since the
   move should not start until all relevant parameters have been set; this
   should be initiated by setting another PV, tel:movetel say.

b) for reading PVs, the current telescope position might be defined by tel:az
   (Azimuth) and tel:el (Elevation). tel:utc (Universal Coordinated Time) might
   contain the exact time corresponding to this position.

In case (a), one approach would be in fact to define a new record type called
something like "targdef", which contains all the 10 or so parameters which
completely define a target position. Now a write to a "targdef" record could
both set the parameters and initiate the move. However, I feel that this is not
within the spirit of EPICS: everything should be visible.

Another approach to (a) is perhaps to use a synchronous group. Is this one of
things they are for? Is a synchronous group primarily a client-side concept to
ease programming of the "do this, this and this and wait for them all to comp-
lete" paradigm or does it spill into the server and guarantee that they are
performed strictly in order, INITIATED strictly in order, or ...?

In case (b), one approach is to use the same "targdef" record as above, in which
case the data are guaranteed self-consistent. I don't like this, for the reasons
stated above (counter to perceived philosophy), and because I can forsee a lot
of record types with a lot of information common to several.

Another approach to (b) is to use the time-stamp information (indeed for our
application I imagine that we will use UTC as the reference for our time-
stamps). That way you can tell which data correspond to a given time, but at
the expense of some client-side effort (matching time-stamps). Presumably the
archiver contains such code ... or does CA itself help here at all?

Does the synchronous group help here. If I do a synchronous group of gets, am
I guaranteed that all the returned data correspond to the same time-stamp value?
Across IOCs too? I feel that the answer must be "yes"!

Navigate by Date:
Prev: getResources Marty Kraimer
Next: Re: various no doubt trivial technical questions mcgehee
Index: <19941995  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  2023  2024 
Navigate by Thread:
Prev: getResources Marty Kraimer
Next: Re: various no doubt trivial technical questions mcgehee
Index: <19941995  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  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·