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  <20192020  2021  2022  2023  2024  2025  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  <20192020  2021  2022  2023  2024  2025 
<== Date ==> <== Thread ==>

Subject: Re: Camonitor with client dictated update rate
From: "Johnson, Andrew N. via Tech-talk" <[email protected]>
To: EPICS Tech Talk <[email protected]>
Date: Thu, 30 May 2019 16:47:22 +0000
One more simple suggestion to add to Ralph's list which doesn't require any IOC changes: Check whether the existing "deadband" server-side filter can provide enough data-rate reduction for your user's channels. That depends on how the data actually behaves, but it might be enough for some channels. Documentation on how to use the deadband filter is available here, and note that only the IOC needs to be 3.15 or later, filters work fine from older CA clients.

- Andrew

On 5/30/19 11:14 AM, Ralph Lange via Tech-talk wrote:
Channel Access subscription updates are triggered by the database, there is practically no way around that. Changing Channel Access to allow the client to define the update rate would need a compatibility breaking change in the wire protocol, major code changes in the CA server etc.

I see three feasible ways to achieve the required behavior:

1. Add records for the slower update rates. One more input record of the same type per signal, with a periodic SCAN of the desired rate and an NPP input to the fast signal. If you want to do averaging or other decimation math, use a compress record in front of your slow record.

2. Write a server-side filter that implements a reduced update rate by throwing away updates that are too fast. The filters that are part of base (in src/std/filters), especially the sync filter, give hints how this should be done. A filter that implements a client-defined maximum update rate would definitely be interesting enough for inclusion in base.

3. Have the client do periodic get() requests instead of a subscription. Yes, that would do a request/response message pair every time, but if you are trying to get from really fast update rates down to once per second, doing a full cycle once per second is not that far off.

Cheers,
~Ralph


-- 
Complexity comes for free, Simplicity you have to work for.

References:
Camonitor with client dictated update rate Hinko Kocevar via Tech-talk
Re: Camonitor with client dictated update rate Ralph Lange via Tech-talk

Navigate by Date:
Prev: FW: How to share asyn's queue thread among ports? Mark Rivers via Tech-talk
Next: Re: [EXTERNAL] RE: How to share asyn's queue thread among ports? Klemen Vodopivec 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  <20192020  2021  2022  2023  2024  2025 
Navigate by Thread:
Prev: Re: Camonitor with client dictated update rate Ralph Lange via Tech-talk
Next: Re: Camonitor with client dictated update rate William Layne 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  <20192020  2021  2022  2023  2024  2025 
ANJ, 30 May 2019 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions ·
· Download · Search · IRMIS · Talk · Documents · Links · Licensing ·