EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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

Subject: RE: How to handle EPICS monitors?
From: "Jeff Hill" <[email protected]>
To: <[email protected]>, <[email protected]>
Date: Fri, 19 Apr 2002 16:43:35 -0600
Fritz,

The CA clients can attach a channel to any field in the database.
Likewise, CA clients can simultaneously enter monitor subscriptions for
several different fields within a record. There is a list of monitor
subscription data structures embedded in the dbCommon portion of every
record in the database. When db_post_events() is called it steps through
every entry in this list and compares its field address argument to the
field address saved in the monitor subscription data structure. If the
addresses are equal then a monitor update event is added to a queue
maintained for the client that entered the subscription.

The bottom line is that you may need to change your 2nd argument to
db_post_events() so that it specifies the address of the field and not
the address of your array data.

I have updated the R3.14 dbEvent.h header file so that the second
argument to db_post_events() is called pField and not pval. I checked
the R3.14 application developers guide and it appears to have this
argument correctly labeled.

We could also consider changing db_post_events() so that if the
SPC_DBADDR flag is set it will dispatch the monitor update if the 2nd
argument matches either the address of the field or the address stored
in the field.

Jeff

> -----Original Message-----
> From: J. Frederick Bartlett ([email protected])
> [mailto:[email protected]]
> Sent: Friday, April 19, 2002 4:04 PM
> To: [email protected]
> Cc: [email protected]
> Subject: How to handle EPICS monitors?
> 
>   I have encountered a problem with the use of EPICS monitors. I have
> a generic record, which I wrote several years ago, that is a general
> purpose interface to a MIL/STD1553B bus controller -- much in the
> spirit of the generic VME record written by Mark Rivers.  It is used
> primarily for low-level diagnostic operations on the bus.  Recently, I
> have added monitor support to the record so that our diagnostic
> routines, which operate as EPICS CA clients, could execute more
> efficiently and with lower network traffic.
> 
>   I added the appropriate code to my record to call db_post_events for
> the VAL field and for the STATUS field.  The latter contains the
> detailed, bit-encoded driver status for the last operation performed
> by the record instance.
> 
>   To my considerable surprise, I found that the CA client received
> monitor events for the STATUS field but not for the VAL field.
> Suitable sprinkling of logMsg calls in the record module have
> convinced me that db_post_events is being called correctly, i.e. with
> the correct arguments, for both fields.  The VAL field has one unusual
> feature: the SPC_DBADDR property; and I suspect that this may be the
> source of my problem.
> 
>   I have looked at the waveform record, which is similar to my record
> in that the VAL field is used to access an array of values rather than
> a single value.  The waveform record places a monitor on the BPTR
> field rather than the VAL field. However, since the BPTR field has the
> DBF_NOACCESS type, I do not see how a CA client can connect a monitor.
> 
>   So, how should I handle the monitoring of a VAL (or any other) field
> that has the SPC_DBADDR property?
> 
> 						Fritz


Replies:
Re: How to handle EPICS monitors? Geoff Savage
References:
How to handle EPICS monitors? J. Frederick Bartlett ([email protected])

Navigate by Date:
Prev: How to handle EPICS monitors? J. Frederick Bartlett ([email protected])
Next: Re: ca_test bus error on solaris-sparc-gnu + fix Till Straumann
Index: 1994  1995  1996  1997  1998  1999  2000  2001  <20022003  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: How to handle EPICS monitors? J. Frederick Bartlett ([email protected])
Next: Re: How to handle EPICS monitors? Geoff Savage
Index: 1994  1995  1996  1997  1998  1999  2000  2001  <20022003  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 ·